在 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"