【问题标题】:Does Autohotkey have a 'test my script' feature?Autohotkey 是否有“测试我的脚本”功能?
【发布时间】:2013-04-02 00:31:31
【问题描述】:

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

(但我不确定LAlt 中的u 在中间是什么——AHK 解释说'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 为LCtrl 发送d 信号(第二行还有LAlt 的'忽略'u,这是我没想到的),然后我按下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 为 @ 发送 u 信号987654346@和LAltLCtrl

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 脚本达到了我的预期。

唯一剩下的问题是出现了两次的LAlt 中的那个神秘的u

有什么想法吗?

【问题讨论】:

  • 您可以在 [Key history and script info] 视图中看到正在接收哪些密钥,但它不显示它发送的内容。 [最近执行的行]也不完美。
  • 在使用 GNU Emacs 时遇到了与您相同的问题。在AHK Community forum 上介绍了该问题和可能的解决方案之一。

标签: autohotkey


【解决方案1】:

您可以尝试使用Key History 窗口

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

【讨论】:

    【解决方案2】:

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

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

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

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

    不过,还有QuickCodeTester,它是最新的并得到维护。

    【讨论】:

    • project download link 不再起作用了。它重定向到论坛帖子。
    • 试试 QuickCodeTester - 我在上面发布了链接。
    • 我建议将其作为单独的答案发布
    • 由于您推荐两个不相关的程序,因此应将两者作为单独的答案发布
    • 是的,我看到您建议这样做;但我不同意你的观点。
    【解决方案3】:

    我使用列表线,然后在关键点暂停 最新的 ahk 还支持使用调试语句 输出调试,文本

    【讨论】:

      猜你喜欢
      • 2013-01-01
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      相关资源
      最近更新 更多