热字符串是AutoHotkey的一项强大功能,可以在输入特定字符串时自动触发预先定义的操作。然而,在AutoHotkey v2中,由于异步键盘钩子的更改,可能会出现热字符串触发的按键顺序错误的情况。例如,对于以下代码:
::btw::by the way
如果用户在输入'btw”时使用了Shift键,那么在AutoHotkey v2中,可能会得到'yb the way”的输出,因为Shift键的状态在按键顺序中被忽略了。
为了解决这个问题,可以使用下面的代码示例中的新函数来代替原来的Send函数:
SendInputEx(text) { oldSendMode := A_SendMode SetKeyDelay -1 SetMouseDelay -1 SetDefaultMouseSpeed 0 SendMode Input Send %text% SendMode %oldSendMode% }
该函数使用Input模式发送按键事件,而不是原来的Event模式。在Input模式下,按键时会考虑键盘状态,从而避免了按键顺序错误的问题。
使用新函数来代替原来的Send函数,例如:
::btw::SendInputEx("by the way")
这将避免按键顺序错误的问题,并且使热字符串功能在AutoHotkey v2中正常工作。