我该如何重新映射这些键?

我该如何重新映射这些键?

我正在使用 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 文档链接),但如果失败,您也可以选择(并且在我看来,最好)执行以下操作:

  1. 确保至少有一个正在运行的脚本使用指令 #InstallKeybdHook 安装了键盘钩子。如果当前脚本均未使用键盘钩子,则可以为此目的专门制作一个“神秘键检测器”,如下所示:
#InstallKeybdHook ;installs the keyboard hook
KeyHistory ;for your convenience, brings up the script's Key History tab. This is optional
  1. 打开脚本的管理窗口,进入 Key History 选项卡。如果您使用了上述脚本,它将在运行时自动为您打开。
  2. 按下您要识别的键。
  3. 从“查看”下拉菜单中,刷新密钥历史记录。您识别的密钥应该位于底部附近。
  4. 根据需要重复步骤 3-4

相关内容