在 AutoHotKey 中重新映射时进行递归

在 AutoHotKey 中重新映射时进行递归

这是我的代码:

[::
Send [
Input, Char, T2 L1
if Char = a
{
    Send â
    return
}
Send %Char%
return

当我输入[a,它的行为正常并产生â。但是,当我输入[p,字符[没有被打印出来。问题在于第二行 ( Send [),其中[的字符被重新映射。

我尝试了以下操作但没有成功:

  • Send `[

  • Send {[}

[即使正在重新映射,我也想打印。

答案1

用作$热键前的修饰符,即$[::

作为AHK 文档状态:

这通常仅在脚本使用 Send 命令发送组成热键本身的键时才是必要的,否则可能会导致其自行触发。$ 前缀的确切行为因操作系统而异:

在 Windows NT4/2k/XP 或更高版本上:$ 前缀强制使用键盘钩子来实现此热键,其副作用是阻止 Send 命令触发它。$ 前缀相当于在此热键定义上方的某处指定了 #UseHook。

在 Windows 95/98/Me 上:热键在其线程执行期间被禁用,之后重新启用。作为副作用,如果 #MaxThreadsPerHotkey 设置为高于 1,则对于此类热键,其行为将如同设置为 1 一样。

相关内容