如果热键的修饰符也被用作触发器的一部分,则热键将不起作用

Hotkey wont work if its modifier is also being used as part of the trigger

这个问题似乎只发生在这一个程序中。

我在这个程序的热键编辑器对话框中设置了热键 Shift+a,我想在 AHK 中使用 Rshiftw 触发它;

RShift & w::
SendInput, +{a}
Return

对于我的生活,它不会起作用。我按 Rshiftw 并没有任何反应。通过按 shifta 手动触发热键效果很好。 奇怪的是以下作品:

LCtrl & w::
SendInput, +{a}
Return

这也是:

w::
SendInput, +{a}
Return

我还尝试在触发热键之前将 Rshift 发送回去,但没有成功:

RShift & w::
SendInput, {RShift up}
SendInput, +{a}
Return

是否有一条规则说你不能在我错过的触发器中使用与目标热键相同的修饰符? 请不要建议我使用其他修改键,shift +[key] 是我剩下的。

如有任何帮助,我们将不胜感激!

首先,你不应该使用 custom hotkey combination when a modifier 存在(除非你有充分的理由):

For standard modifier keys, normal hotkeys typically work as well or better than "custom" combinations. For example, <+s:: is recommended over LShift & s::.

其次,您不应该在不需要转义的 Send(docs) 命令中转义键:

Enclosing a plain ASCII letter (a-z or A-Z) in braces forces it to be sent as the corresponding virtual keycode, even if the character does not exist on the current keyboard layout. In other words, <a href="https://www.autohotkey.com/docs/static/../commands/Send.htm" rel="nofollow noreferrer">Send</a> a produces the letter "a" while <a href="https://www.autohotkey.com/docs/static/../commands/Send.htm" rel="nofollow noreferrer">Send</a> {a} may or may not produce "a", depending on the keyboard layout. For details, see the remarks below.


然后关于问题本身:
我当然不知道这是否可行,但我只是尝试以下操作:

>+w::a

这会起作用,因为重映射语法 actually uses 盲发送模式。
或者,您当然可以手动使用 blind sendmode:

>+w::SendInput, {Blind}a