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

问题描述 投票:5回答:3

我问了一个关于我用于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帮助提示下按左Win +左Alt +空格键,
  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 + 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        

(但我不确定uLAlt在中间是什么 - AHK解释'我=被忽略,因为它是由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信号(并且在第二行上再次出现'忽略'u LAlt,这是我不会想到的),然后我按下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           

最后是我释放所有LAlt + LWin + SPACE的序列,我们看到AHK发送uSpaceLAltLCtrl信号:

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出现了两次。

有任何想法吗?

autohotkey
3个回答
4
投票

您可以尝试使用Key History窗口

  • 运行热键脚本
  • 右键单击托盘图标,然后选择“打开”
  • 单击查看菜单,然后选择密钥历史记录和脚本信息。

Key History screen


2
投票

你的问题的标题是,“Autohotkey是否有测试我的脚本功能” - 好吧,为了回答这个问题,我建议使用QuickAHK,它就是为了做到这一点!它有一个沙箱,还有很多其他功能。我一直用它来测试片段(我只是一个普通的用户 - 根本没有与该程序的联系)。

这里是current thread的链接,因为old forum is defunct。和一个current download link

如果您进行了大量快速和脏的脚本开发或测试,您可能会使用一个允许您动态运行脚本的工具。这些工具包括许多文本编辑器,AutoHotkey论坛上发布的工具之一,或者您自己编写的工具。 QuickAHK是这些工具中的另一个......有一些区别:

  • 砂箱
  • 还原和还原
  • 停止脚本

然而,还有QuickCodeTester,它是最新的和维护的。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.