Autohotkey是否有"测试我的脚本"功能?

Rob*_*ert 5 autohotkey

我问了一个关于我用于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视图屏幕中看到的内容:

  1. 在Cygwin窗口中单击鼠标以激活它(我已经在其中运行了emacs),
  2. LeftAlt+ h然后k我知道AHK将转换成C-h k,这是'告诉我emacs中的下一个键盘序列意味着什么',
  3. 在emacs帮助提示下按Left Win+ Left Alt+ SPACE,
  4. 看到emacs向我展示了文档C-M-@(C-M-SPC顺便提一下,它也与键序列绑定),
  5. 在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 ...
Run Code Online (Sandbox Code Playgroud)

它显示了很多事情正在发生.

我的理解是,这证明AHK正确地将我的Left Alt+ Left Win+ 转换SPACEC-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)

(但我不知道是什么uLAlt在中间- 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(并且再次出现的是"忽视" uLAlt上,我也没有想到第二行),然后我往下按LWin,并AHK发送dLAlt,然后我按下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出现了两次.

有任何想法吗?

小智 4

您可以尝试使用“密钥历史记录”窗口

  • 运行您的热键脚本
  • 右键单击托盘图标并选择打开
  • 单击“查看”菜单并选择“关键历史记录和脚本信息”

按键历史记录屏幕