连续按下几次键后激活命令?

连续按下几次键后激活命令?

主要思想:

  1. 第一次按下键激活整个脚本,例如按 Enter
  2. 如果在激活后 5 秒内按顺序按下并释放特定键,则执行脚本的主要部分。如果在此期间按下任何其他键,则脚本退出

我知道如何设置计时器,以及如何检查当前时间是否按下了某个键(使用 GetKeyState),但我不知道如何检查在特定时间范围内是否按下了某个键(可能释放了),直到计时器用完为止。

答案1

您可以使用热键和热字符串来捕获键序列。

如果按下其他键,这不会提前退出 5 秒的时间段,但也不会发生任何事情。如果您想在检测到某些击键时立即退出,您可以进入一个循环,将 A_LastKey 与已知的“ok”键进行比较,如果检测到其他内容,则提前退出。

#Persistent    

hotstringsDisabled:=True

Return

; hotkey definition to enable hotstrings
Enter::
    hotstringsDisabled:=False
    SetTimer, DisableHotstrings, -5000  ; run once after 5 seconds
Return

DisableHotstrings:
    hotstringsDisabled:=True
Return

; hotstring definitions... 
; make as many as you like using this form...
; b0=don't backspace, c=case sensitive
:*b0c:custom::
    If hotstringsDisabled
        Return

    ;your code to do something useful goes here...
    Msgbox % "A_ThisHotkey=" A_ThisHotkey "`n" "A_LastKey=" A_LastKey
Return

初始热键也可以组合(取决于您想如何操作)...

Enter::
    hotstringsDisabled:=False
    Sleep 5000
    hotstringsDisabled:=True
Return

Sleep 5000如果您想通过其他一些键或类似键提前退出,则可以用循环替换该语句。

相关内容