4

最近 Emacs に移行した (そしてマニアになった) ので、Autohotkey を使用して ++ をCtrlユニバーサルな「閉じる」コマンドにしたいX Ctrlと考えています。C

これが私の.ahkファイルにあるものです:

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

これは機能していないようです。私は何を間違っていますか?


私のキーストロークを明確にするために、シーケンスは次のとおりです。

  1. CTRLキーを押し続ける
  2. Xキーを押して離す
  3. Cキーを押して離す
  4. Ctrlキーを放します

キーを押すか離すとC(どちらでもかまいません)、アクティブなウィンドウが閉じられます。


サクセス ストーリー:正直な阿部による回答を実装し、実際に Emacs 自体を使用する際の煩わしさを避けるために小さな調整を加えました。これが最終結果です (ありがとう、HA!):

; 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

+のC後に が押されるまで0.6 秒待機する例を次に示します。ControlX

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

C0.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 に答える