问题描述
我想将 'H' 重新映射到 'V',而且当我输入阿拉伯语时,我想将 'ا' 重新映射到 'ر','ا' 和 'ر' 的键与'H' 和 'V' 分别。所以我试着做h:: send v;
。当我用英语输入时,一切都很完美,但在阿拉伯语中,它实际上输入的是“v”而不是“ر”。
注意:我目前正在检查语言并以适当的语言发送击键,但我正在重新映射很多键,所以这有点乏味,我认为必须有更简单的方法,有更简单的方法吗?
提前致谢。
解决方法
当您执行 Send v
时,AutoHotkey 会发送一个 v
字符。但是,您不想要该字符,而是希望它按下英文键盘上的 v
键。您可以使用虚拟密钥代码执行此操作。虚拟键码背后的思想是每个码对应键盘上的一个物理键,而不是屏幕上产生什么字符。有两种方法可以实现这一点。
- AutoHotkey 有 special syntax 来查找和使用给定字符的虚拟键代码。您只需将字符括在花括号中,如下所示:
h::Send {v}
- AutoHotkey 带有 tools,可用于手动查找某个键的虚拟键代码。如果您需要按下的键没有映射到任何字符,或者 AutoHotkey 无法识别它产生的字符,这将非常有用。以下过程引用自AutoHotkey documentation:
- 确保至少有一个使用键盘挂钩的脚本正在运行。您可以通过打开其主窗口并从菜单栏中选择“查看-> 按键历史记录”来判断脚本是否具有键盘钩子。
- 双击该脚本的托盘图标以打开其主窗口。
- 按下键盘上的“神秘键”之一。
- 选择菜单项“查看->密钥历史”
- 向下滚动到页面底部。靠近底部的地方是您的按键的按下和按下按键事件。
记下列表第一列中的 2 位数值。 V 在我的 Windows 10 计算机上为 56
,但数字取决于平台。然后,您可以在发送命令中使用该 2 位虚拟键码,如下所示:
h::Send {vk56}
此语法记录在 here 中。