问题描述
AutoHotkey 中有如何定义自定义组合的说明:
您可以定义两个键的自定义组合(除了操纵杆 按钮)通过在它们之间使用“&”。在下面的例子中,你会 按住 Numpad0 然后按第二个键触发热键:
Numpad0 & Numpad1::MsgBox "You pressed Numpad1 while holding down Numpad0."
Numpad0 & Numpad2::Run "Notepad"
但是我找不到如何设置阈值。例如,我希望 Numpad0 & Numpad1
仅在用户按下 Numpad1
后不到 300 毫秒内按下 Numpad0
时发生。
解决方法
您可以执行以下操作,例如:
Numpad0::
if (!PressedAt)
PressedAt := A_TickCount
return
Numpad0 Up::PressedAt := 0
#If,A_TickCount - PressedAt < 300
Numpad1::MsgBox
#If
所以使用 A_TickCount
(docs) 来比较时间。
由于 Windows 的关键重复功能,if 语句在那里。没有它,PressedAt
时间会在按住 Numpad0 时不断设置。
此外,0
是 false
,因此我们也可以方便地在 if 语句中使用 PressedAt
变量。
也可以在没有 Numpad1 的上下文敏感热键的情况下完成,它只是使键保留其原始功能。
如果 #If
导致您 trouble,您可以切换到热键标签内的正常 if 语句检查。
如果需要,请确保将 ~
前缀(docs) 添加到 Numpad0 热键。