我问了一个关于我用于 emacs(在 Cygwin 中)重新映射 Ctrl 和 Alt 键的 Autohotkey 脚本的问题。这是问题:https ://stackoverflow.com/q/15899963/1243435 。
我一直在测试我的脚本的一种方法是打开 emacs 并使用C-h k
显示键序列文档的功能。它可以让我确认 Autohotkey 是否符合我的预期。
然而,似乎有一些复杂性,例如可能是 Cygwin 终端不允许序列C-M-SPC
“通过”到 emacs,因此 emacs 实际上只接收C-SPC
。
因此,我的问题是:Autohotkey 是否有自己的测试工具,当您按下键盘上的几个组合键时,它会向您显示 Autohotkey 接收和发送的内容?如果是,我将能够确认我的脚本是否工作正常,然后确定是否是其他问题导致我在将关键序列通过 emacs 时遇到问题。
根据 Armin 建议的答案进行更新
根据 Armin 的建议,以下是我在执行以下操作后在 AHK 视图屏幕中看到的内容:
- 在 Cygwin 窗口中单击鼠标以激活它(我已经在其中运行了 emacs),
- 按LeftAlt+h然后k我知道 AHK 将转换为
C-h k
,这是 emacs 中的“告诉我下一个键盘序列是什么意思”, - 在 emacs 帮助提示下按Left Win+ Left Alt+ SPACE,
- 看到emacs向我展示了文档
C-M-@
(顺便说一下,它也绑定到了键序列C-M-SPC
), - 在 AHK 视图窗口中单击鼠标返回并使用 刷新F5。
这是 AHK 窗口中输出的相关部分(以缩短较长的行为模以在此处停止自动换行):
VK SC Type Up/Dn Elapsed Key Window
----------------------------------------------------------
A4 038 h d 4.18 LAlt /cygdrive/c/...
A4 038 i u 0.00 LAlt
A2 01D i d 0.00 LControl
48 023 d 0.09 H
48 023 u 0.09 H
A4 038 h u 0.05 LAlt
A2 01D i u 0.00 LControl
4B 025 d 1.22 K
4B 025 u 0.06 K
A4 038 h d 1.12 LAlt
A4 038 i u 0.00 LAlt
A2 01D i d 0.00 LControl
5B 15B h d 0.02 LWin
A4 038 i d 0.00 LAlt
20 039 d 0.19 Space
20 039 u 0.06 Space
5B 15B h u 0.16 LWin
A4 038 i u 0.00 LAlt
A4 038 h u 0.00 LAlt
A2 01D i u 0.01 LControl
74 03F d 1.90 F5 C:\...\AutoHotkey.ahk ...
它显示了很多正在发生的事情。
我的理解是,这证明 AHK 正确地将我的Left Alt++Left Win转换SPACE为C-M-SPC
.
下面解释一下为什么我认为证明已经完成。
这是我按下LAlt,它被转换为LCtrl
:
A4 038 h d 4.18 LAlt /cygdrive/c/...
A4 038 i u 0.00 LAlt
A2 01D i d 0.00 LControl
(但我不确定中间的那个是什么u
——AHKLAlt
解释说'i=Ignored,因为它是由 AHK 脚本生成的')。
接下来是我按下和释放h:
48 023 d 0.09 H
48 023 u 0.09 H
所以此时emacs已经收到了C-h
。
接下来我松开LAlt,然后按下并松开k。
A4 038 h u 0.05 LAlt
A2 01D i u 0.00 LControl
4B 025 d 1.22 K
4B 025 u 0.06 K
Emacs 现在进入“描述键序列”的帮助提示。
然后我接下来按下LAlt
,我们看到 AHK 发送d
信号(第二行再次出现我没想到的LCtrl
“忽略” ),然后我按下,AHK 发送一个of然后我按下:u
LAlt
LWind
LAlt
SPACE
A4 038 h d 1.12 LAlt
A4 038 i u 0.00 LAlt
A2 01D i d 0.00 LControl
5B 15B h d 0.02 LWin
A4 038 i d 0.00 LAlt
20 039 d 0.19 Space
最后是我释放所有这些LAlt++的序列,我们看到 AHK为andLWin和and发送信号:SPACEu
Space
LAlt
LCtrl
20 039 u 0.06 Space
5B 15B h u 0.16 LWin
A4 038 i u 0.00 LAlt
A4 038 h u 0.00 LAlt
A2 01D i u 0.01 LControl
最后是当我在 AHK 视图窗口中单击鼠标激活它后刷新数据时:
74 03F d 1.90 F5 C:\...\AutoHotkey.ahk ...
这似乎证明了我的 AHK 脚本已经达到了我的预期。
唯一剩下的问题是出现两次u
的神秘。LAlt
有任何想法吗?