5

我问了一个关于我用于 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 ...

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

我的理解是,这证明 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        

(但我不确定中间的那个是什么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

有任何想法吗?

4

3 回答 3

4

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

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

按键历史屏幕

于 2013-04-10T10:08:11.047 回答
2

您的问题的标题是,“Autohotkey 是否具有测试我的脚本功能” - 好吧,为了回答这个问题,我建议使用 QuickAHK,它旨在做到这一点!它有一个沙盒和许多其他功能。我一直用它来测试代码片段(我只是一个普通用户 - 根本与该程序没有任何关系)。

这是当前线程的链接,因为旧论坛已不存在。和当前的下载链接

如果您进行大量快速而肮脏的脚本开发或测试,您可能会使用允许您即时运行脚本的工具。这些工具包括许多文本编辑器、AutoHotkey 论坛上发布的工具之一,或者您已经编写了自己的工具。QuickAHK 是这些工具中的另一种……有一些不同之处:

  • 沙盒
  • 恢复和还原
  • 停止脚本

但是,也有QuickCodeTester,它是最新的并得到维护。

于 2013-07-05T19:05:27.340 回答
1

我使用列表行,然后在关键点暂停最新的 ahk 还支持使用调试语句 OutputDebug,Text

于 2013-12-15T15:37:33.443 回答