Autohotkey Key等待两个键之一被释放

Autohotkey Key等待两个键之一被释放

在 Autohotkey 中,我知道可以使用“KeyWait”来等待按下或释放某个键,但是如果我想要等待两个键中的任一个被释放,我该怎么做呢?

我在网上找到了这个,但它是当你想等待两个键中的任意一个被按下时

LButton & XButton1::
Keywait, r
Keywait, LAlt
SendInput {ShiftDown}
SendInput {v Down}
SendInput {v Up}
SendInput {Shift Up}

Input, UserInput,v,{LButton}{XButton1}
;v is if you want input to be visible
if ErrorLevel=EndKey:LButton
{
    theFunctionIrunAlltheTime()
    Return
}
else if ErrorLevel=EndKey:XButton1
{
    theFunctionIrunAlltheTime()
    Return
}

无论释放哪一个按钮我都想做同样的事情,我认为上面的例子只适用于字母,不适用于按钮,但这里重要的是,在运行脚本时,LButton n XButton1 已经被按下,我想在子程序的中间检测它们中的任何一个何时被释放,有什么想法吗???谢谢。

答案1

也尝试一下这个:

~LButton & XButton1::
SetTimer detect_key_released, 50
; do sth
return

    detect_key_released:
If !GetKeyState("LButton", "P")
{
    SetTimer detect_key_released, off
    MsgBox LButton released
    return
}
If !GetKeyState("XButton1", "P")
{
    SetTimer detect_key_released, off
    MsgBox XButton1 released
    return
}
return

答案2

While GetKeyState("LButton") && GetKeyState("XButton1")
    Sleep 10

; msg to user assumes only one or the other was released...
MsgBox % (GetKeyState("LButton") ? "XButton1" : "LButton") " Released"

相关内容