为什么在 AutoHotkey 的 KeyHistory 中 Alt 键被释放和按下?

为什么在 AutoHotkey 的 KeyHistory 中 Alt 键被释放和按下?

Alt + A我有一个 AutoHotkey 脚本,当按下时会发送左箭头键。我还启用了 KeyHistory。

KeyHistory 
!a::Send "{Left 1}"

当我打开 KeyHistory 并按下 时Alt + A,KeyHistory 给出以下输出:

在此处输入图片描述

我知道该Control键是用作屏蔽键的,但为什么LAlt先松开然后又按下呢?是不是因为我原本按住的是 LAlt 键(按下),而脚本执行时,脚本需要先松开 LAlt 键,然后再按下左键?我认为可能是这样,因为如果 LAlt 一直处于按下状态(在这种情况下,发送而不是) Alt + A,可能会出现问题。Alt + leftleft

我猜测,在left发送按键之后,脚本会LAlt再次按下,因为我仍然按住该LAlt按键。

我的假设正确吗?谢谢!

答案1

您的脚本具有触发器!a::而不是!a up::,这意味着这将在按下按键时触发,而不是在释放按键后触发。这意味着,如果保持原样,则在发送按键时Left按键Alt仍将被按下。

AutoHotkey 在此试图避免的问题是 AltLeft与 相同Backspace,这当然应该避免。

Alt这会强制 AHK在模拟按下和释放按键之前释放该按键Left

发送按键后Left,AHK 将再次模拟按下该Alt按键,因此当您稍后物理释放按键时情况将是正确的。

请注意,AHK 不知道或不关心 AltLeft是否与 相同Backspace。这是一种通用机制,用于避免因将键保持 Alt在“按下”状态而导致的各种不必要的组合键。

相关内容