如何在Autohotkey中重新映射CTRL-x CTRL-c?

时间:2012-08-15 17:19:47

标签: autohotkey

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

以下是我在.ahk文件中的内容:

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

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


为了澄清我的击键,这里是序列:

  1. 按住 CTRL 键;
  2. 按下并释放 X 键;
  3. 按下并释放 C 键;
  4. 释放 Ctrl 键。
  5. 在按下或释放 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
    

2 个答案:

答案 0 :(得分:4)

这是一个在 Control + X 之后按 C 等待0.6秒的示例:

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

如果在0.6秒内没有按下 C 发送控制 + X
当热键自身发送时({避免无限循环),{J}开始使用$

手动参考:
$
keywait

答案 1 :(得分:1)

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

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

对于每个人来说,这可能不是正确的解决方案,但如果没有它,我就无法生存。