使用 KeyWait 的按键输入发送顺序混乱

使用 KeyWait 的按键输入发送顺序混乱

我正在尝试使用 AHK 实现自动换档

脚本等待按键释放,当经过一定时间后,热键会发送一个移位字符。

问题是,当我快速键入键时,输入会被交换:

我输入 ab - 输出为 ba 我输入 ba - 输出为 ab

有没有办法在等待状态下“刷新”前一个热键,或者在使用 KeyWait 时实现有序键?

脚本:

PushDuration := 250

$a::
    time := A_TickCount
    KeyWait, a
    var := A_TickCount - time
    if(var < PushDuration)
      SendEvent, a
    else 
      SendEvent, A
  return

$b::
    time := A_TickCount
    KeyWait, b
    var := A_TickCount - time
    if(var < PushDuration)
      SendEvent, b
    else 
      SendEvent, B
  return

答案1

您可能会(或可能不会)更好地使用单独的“向上”热键来处理键盘向上事件并摆脱 KeyWait 调用。

您还可以结合使用 A_ThisHotkey 来为一系列按键定义单个(通用)函数,并为触发该函数调用的按键发送移位版本。并且/或者,我相信最新版本的 AutoHotkey 有一种通用的方法来捕获输入,而不必为每个字母定义热键。

相关内容