【问题标题】:Using GetKeyState for triple key combinations does not work对三重组合键使用 GetKeyState 不起作用
【发布时间】:2020-03-09 19:31:37
【问题描述】:

在下面的脚本中,当我按下 CapsLock 和 Alt 键,然后按下 J 键时,“is work”消息不会弹出。只有同时按下 CapsLock、Alt 和 J 键并立即松开这些键,才会弹出“it work”消息。

CapsLock & J::
if GetKeyState("Alt","p"){
    MsgBox  is work
}
return

将密钥J改为K,如下:

CapsLock & K::
if GetKeyState("Alt","p"){
    MsgBox  is work
}
return

这使您可以先按 CapsLock 和 Alt 键,然后按 K 键弹出“it work”消息。我试过其他键,比如A、S、D、F、H等等。但是不能改成G。只能同时按下三个键并立即释放正常输出“是工作"

我不明白为什么?

自定义按键组合使用GetKeyState时,按键的执行顺序是什么?

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    只要按下 CapsLock + JK 触发热键,它就会查看 Alt 被按下。因此,如果在触发热键和按下 Alt 之间有任何延迟,那么您的 MsgBox 将不会显示。

    要让它每次都能正常工作,首先按住 GetKeyState 正在寻找的键 (Alt),然后按所列从左到右的顺序按住其他键。因此,按住 Alt,然后按住 CapsLock,然后按 JK

    【讨论】:

    • 但是如果我按Alt和CapsLock(两个键都没有松开)然后按j,就不行了。如果我按 k,它就会起作用。
    • 我使用“密钥历史和脚本信息”来测试密钥。当我按下 Alt 和 CapsLock 然后按下 j 时,我没有检测到按下了 j。当我更改 k 键时,我可以检测到它。会不会是键盘问题?
    • 嗯,在我的机器上它似乎工作正常(也就是说,alt + capslock + j 工作)。您确定没有其他冲突的热键或脚本在运行吗?
    猜你喜欢
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2021-01-29
    • 1970-01-01
    • 2021-04-12
    • 2011-04-30
    相关资源
    最近更新 更多