【问题标题】:Can circular references cause errors in AutoHotKey?循环引用会导致 AutoHotKey 出错吗?
【发布时间】:2020-05-25 17:59:56
【问题描述】:

我编写了我的第一个 AutoHotKey 脚本,但是这部分似乎有错误:

^;::Send ^z ; Undo
^q::Send ^x ; Cut
^j::Send ^c ; Copy
^k::Send ^v ; Paste
^x::Send ^+v ; Paste without formatting

我无法让 Cut 工作(第二行)。

有什么问题?

如果我注释掉第 5 行,那么 Cut 将起作用。但是,我从来没有让他们两个同时工作。带分号 (;) 的第一行是否有问题?

【问题讨论】:

  • 在热键之前有一个$ 总是好的,以防止重复循环。通常,它会警告您“在过去 x 秒内发生了 X 次按键”,但在您的实例中似乎没有。

标签: debugging keyboard-shortcuts autohotkey


【解决方案1】:

您的问题确实是由触发其他热键的热键引起的,可以使用$ 修饰符修复,如另一个答案中所述,但我建议您只使用简单易用的remapping syntax,如下所示:

^;::z ; Undo
^q::x ; Cut
^j::c ; Copy
^k::v ; Paste
^x::+v ; Paste without formatting

【讨论】:

    【解决方案2】:

    发生这种情况是因为按下 Ctrl+Q 会触发“剪切”热键,即按下 Ctrl+X ,触发“粘贴而不格式化”热键,按下 Ctrl+Shift+V

    所以文本处理器接收

    1. Ctrl+X(剪切)和
    2. Ctrl+Shift+V(粘贴不格式化),

    只清除文本格式。


    幸运的是,有一个简单的修复方法:$ 热键前缀。来自docs

    $ 前缀强制使用键盘钩子来实现此热键,作为副作用,它会阻止 Send 命令触发它。

    您只需在Send 可以触发的热键前面加上$

    ^;::Send ^z ; Undo
    ^q::Send ^x ; Cut
    ^j::Send ^c ; Copy
    ^k::Send ^v ; Paste
    $^x::Send ^+v ; Paste without formatting
    

    【讨论】:

      猜你喜欢
      • 2012-01-12
      • 2021-05-06
      • 2011-09-03
      • 2016-05-01
      • 2018-04-02
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多