【问题标题】:How can I remap CTRL-x CTRL-c in Autohotkey?如何在 Autohotkey 中重新映射 CTRL-x CTRL-c?
【发布时间】:2012-08-15 17:19:46
【问题描述】:

最近搬到 Emacs(并成为一个狂热者),我想使用 Autohotkey 来制作 Ctrl+X Ctrl+ C 一个通用的“关闭”命令。

这是我的 .ahk 文件中的内容:

; Universal Close
:*:^x^c::
    WinClose, A
    Return

这似乎不起作用。我做错了什么?


为了澄清我的击键顺序,以下是顺序:

  1. 按住 CTRL
  2. 按下并松开 X
  3. 按下并松开 C
  4. 松开 Ctrl

按下或释放 C 键(我不介意哪个),活动窗口将关闭。


成功案例:我已经实现了Honest Abe 的答案,添加了一个小调整以避免实际使用 Emacs 本身时的烦恼。这是最终结果(谢谢,H.A.!):

; Universal Close
$^x::
    IfWinActive, ahk_class Emacs
        Sendinput, ^x
    Else {
        keywait, c, d, t0.6
        If ErrorLevel
            Sendinput, ^x
        Else 
            WinClose, A
        }
    Return

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    这是一个示例,在 Control + X 之后等待 0.6 秒让 C 被按下:

    $^x::
    keywait, c, d, t0.6
    If ErrorLevel
        Sendinput, ^x
    Else 
        WinClose, A
    Return
    

    如果 C 在 0.6 秒内没有被按下 Control + X 被发送。
    $ 在最开始使用当热键发送自身时(以避免无限循环)。

    手册参考:
    $
    keywait

    【讨论】:

    • @HonestAbe 列出的代码不适用于非英语键盘布局。第一行 $^x 运行良好,但 keywait 函数接受错误字符并失败。你知道怎么解决吗?
    • @VasiliyKevroletin 我的第一个想法是确保您拥有来自 ahkscript.org 的最新版本 ...并确保您保存为 UTF-8。
    • 使用 BOM 保存到 UTF-8 有帮助。谢谢。
    【解决方案2】:

    虽然这不是您问题的直接答案,但如果您还没有的话,您可能想看看 XKeymacs,http://www.cam.hi-ho.ne.jp/oishi/indexen.html

    它在所有/大多数 Windows 应用程序中为您提供了很多 Emacs 功能。与 Emacs 一样,它是高度可配置的,因此您可以在全局或应用程序级别启用/禁用 Emacs 绑定。

    它可能不是每个人的正确解决方案,但我不能没有它。

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 2011-12-05
      相关资源
      最近更新 更多