我正在使用 AHK 将 Qwerty 布局重新映射到 Dvorak,因为我无法在这台计算机上安装自定义键盘布局。我的大部分重新映射都遵循一个简单的模式,而且效果很好:
:*:n::b ; remap "n" to "b". This automagically also works for "N"-->"B".
:*:,::w ; remap comma to lowercase "w".
:*:;::W ; uppercase comma must be specifically coded.
问题:丹麦语布局有三个特殊字符,这些字符不会触发重新映射。这三个键的问题(可能?)都一样,所以我们只看其中一个,即顶行的“a 形环”。
我尝试了几种触发器变体,但问题似乎是 AHK 在某些情况下会忽略触发器并仅输出物理键。值得注意的是,整个重新映射脚本似乎在此之后被暂停,但在我暂停并恢复脚本后又开始工作。没有警告或错误,其他脚本仍然有效。
(当然,我一次只尝试其中一种,但这里都显示了,没有注释掉。)
:*:å::< ;-- erroneously still produces "å".
:*:Å::> ;-- erroneously still produces "Å".
:*C:å::< ;-- erroneously still produces "å".
:*C:Å::> ;-- erroneously still produces "Å".
或者它会对脚本中的触发器定义感到不满:
å::send < ;-- Ã¥ invalid hotkey.
Å::send > ;-- Ã… invalid hotkey.
{ASC 0229}::send < ;-- ASC 0229} invalid hotkey.
{ASC 0197}::send > ;-- ASC 0197} invalid hotkey.
为了捕获这些键,应如何制定触发器?
答案1
AHK 拥有关键历史功能可以显示每个物理按键的扫描代码。通过它,我确定了“a-ring”键SC01A
可以在 AHK 中引用:
SC01A::< ; the "a-ring" key should produce a "<" character.
大写字母是自动处理的,所以这就是全部了!
请注意,AHK 扫描码可能与您在 Google 图片中搜索键盘扫描码图表时看到的扫描码有很大不同,所以不要依赖它!
答案2
如果您不知道密钥的密钥名称,通常还有另外两个选择:虚拟键码 (VK)和扫描码 (SC)。VK 是 Windows 在软件层表示按键的方式,SC 是键盘上该 POSITION 的固件标识。在这种情况下,使用 SC 可能更容易,因为微软的文档不会为您展示的按键枚举 VK。无论如何,对于这种符合人体工程学的重新映射,最好使用 SC,这样如果您使用不同的键盘,它更有可能表现一致(就您的手而言)。
要找到给定密钥的 VK 和/或 SC,您可能能够在线查找信息(例如上面引用的 Microsoft 文档链接),但如果失败,您也可以选择(并且在我看来,最好)执行以下操作:
- 确保至少有一个正在运行的脚本使用指令 #InstallKeybdHook 安装了键盘钩子。如果当前脚本均未使用键盘钩子,则可以为此目的专门制作一个“神秘键检测器”,如下所示:
#InstallKeybdHook ;installs the keyboard hook
KeyHistory ;for your convenience, brings up the script's Key History tab. This is optional
- 打开脚本的管理窗口,进入 Key History 选项卡。如果您使用了上述脚本,它将在运行时自动为您打开。
- 按下您要识别的键。
- 从“查看”下拉菜单中,刷新密钥历史记录。您识别的密钥应该位于底部附近。
- 根据需要重复步骤 3-4