在“自动热键”中:是否可以区分物理按键和重复按键?
我正在寻找点网中对KeyEventArgs.IsRepeat的平衡。
我希望找到这样的更好的东西:
*key1::
If (hotkey1_active)
return
hotkey1_active := 1
Myfunction1()
return
*key1 up::
hotkey1_active := 0
return
找到了上面的示例代码here
答案 0 :(得分:2)
没有办法知道,唯一已知的是重复是由按键按下而没有按键向上组成的。
也许有某种方法不必为每个热键创建一个变量。
尝试一下,我认为这对于正常情况可能已经足够了:
*a::
if (A_PriorHotkey = A_ThisHotKey)
return
Myfunction1()
return
*a Up:: return ; Does nothing but change A_PriorHotkey.
答案 1 :(得分:0)
AFAIK没有内置的用于按下按键检查的语法。但是您可以使用getkeystate循环检查状态:
key := "a"
state0 := getkeystate(key, "P") ; init key state
c := 0
loop
{
sleep 30 ; sleep to reduce CPU usage
state1 := getkeystate(key, "P") ; getkeystate
state_on := (state1 > state0) ; check if key state is changed to 'on'
; state_off := (state1 < state0) ; check if key state is changed to 'off'
state0 := state1 ; save previous state
if (state_on) {
c += 1
tooltip %key% pressed %c% times
; Myfunction1()
}
}
这很有可能是物理状态的变化。