4

最近搬到 Emacs(并成为一个狂热的粉丝)后,我想使用 Autohotkey 使Ctrl++成为一个通用的“关闭”命令。X CtrlC

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

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

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


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

  1. 按住CTRL
  2. 按下并释放X
  3. 按下并释放C
  4. 释放Ctrl钥匙

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


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

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

2 回答 2

4

这是一个在+之后等待 0.6 秒C才能按下的示例:ControlX

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

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

手动参考:
$
keywait

于 2012-08-15T18:09:54.003 回答
1

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

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

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

于 2012-08-31T13:42:10.463 回答