我问了一个关于我用于 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然后我按下:uLAltLWindLAltSPACE
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发送信号:SPACEuSpaceLAltLCtrl
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
有任何想法吗?
