我问了一个关于我用于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视图屏幕中看到的内容:
C-h k,这是'告诉我emacs中的下一个键盘序列意味着什么',C-M-@(C-M-SPC顺便提一下,它也与键序列绑定),以下是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 ...
Run Code Online (Sandbox Code Playgroud)
它显示了很多事情正在发生.
我的理解是,这证明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
Run Code Online (Sandbox Code Playgroud)
(但我不知道是什么u的LAlt在中间- AHK解释说,"我=忽略,因为它是由一个AHK脚本生成").
接下来是我按下并释放h:
48 023 d 0.09 H
48 023 u 0.09 H
Run Code Online (Sandbox Code Playgroud)
所以此时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
Run Code Online (Sandbox Code Playgroud)
Emacs现在进入"描述键序列"的帮助提示.
然后我下下来在印刷机上LAlt
,我们看到,AHK发出d信号,LCtrl(并且再次出现的是"忽视" u的LAlt上,我也没有想到第二行),然后我往下按LWin,并AHK发送d的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
Run Code Online (Sandbox Code Playgroud)
最后是我释放所有LAlt+ LWin+ 的序列,SPACE我们看到AHK发送和的u信号和:SpaceLAltLCtrl
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
Run Code Online (Sandbox Code Playgroud)
最后是在鼠标单击以激活它之后刷新AHK视图窗口中的数据:
74 03F d 1.90 F5 C:\...\AutoHotkey.ahk ...
Run Code Online (Sandbox Code Playgroud)
这似乎证明我的AHK脚本已经完成了我所希望的.
唯一剩下的问题就是那种神秘u的东西LAlt出现了两次.
有任何想法吗?