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

时间:2013-04-10 08:53:27

标签: 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 进行刷新。
  6. 以下是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 LAlt的中间位置是什么 - AHK解释说'i =忽略因为它是由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发送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           
    

    最后是我释放所有那些 LAlt + LWin + SPACE 的序列,我们看到AHK发送u个信号适用于SpaceLAlt以及LCtrl

    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的{​​{1}}出现了两次。

    有什么想法吗?

3 个答案:

答案 0 :(得分:4)

您可以尝试使用Key History窗口

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

Key History screen

答案 1 :(得分:1)

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

以下是current thread的链接,因为old forum is defunct。 和current download link

  

如果你做了很多快速和肮脏的脚本开发或测试,那么你   可能使用一个允许您动态运行脚本的工具。   这些工具包括许多文本编辑器,其中一个   AutoHotkey论坛上发布的工具,或者您自己编写的工具。 QuickAHK是这些工具中的另一个......但有一些不同之处:

  • 沙盒
  • 还原并还原
  • 停止脚本

但是,还有QuickCodeTester,它是最新的并且是最新的。

答案 2 :(得分:1)

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