Ctrl キーと Alt キーを再マップするために (Cygwin で) emacs に使用している Autohotkey スクリプトについて質問しました。ここに質問があります: https://stackoverflow.com/q/15899963/1243435。
私がスクリプトをテストしている 1 つの方法は、emacs を開いてC-h k
、キー シーケンスのドキュメントを表示する機能を使用することです。オートホットキーが期待どおりに機能しているかどうかを確認できます。
ただし、いくつかの複雑な問題があるようです。たとえば、Cygwin ターミナルでは、シーケンスが emacs に「通過」することが許可されていない可能性があるC-M-SPC
ため、emacs は実際にはC-SPC
代わりに受信するだけです。
したがって、私の質問は次のとおりです。オートホットキーには、キーボードでいくつかのキーの組み合わせを押したときにオートホットキーが送受信するものを示す独自のテスト機能がありますか? はいの場合、スクリプトが正常に動作しているかどうかを確認し、キー シーケンスを emacs に渡す際に問題を引き起こしているのが他の問題であるかどうかを判断できます。
Arminが提案した回答に基づいて更新
Armin からの提案で、以下は、次のことを行った後に AHK ビュー画面に表示されるものです。
- Cygwin ウィンドウをマウスでクリックしてアクティブにします (すでに emacs が実行されています)。
- LeftAlt+hを押すと、 kAHK が に変換されることがわかってい
C-h k
ます。これは、emacs の「次のキーボード シーケンスの意味を教えてください」です。 - emacs ヘルプ プロンプトでLeft Win+ Left Alt+SPACEを押します。
- emacs が私にドキュメンテーションを表示するのを見てください
C-M-@
(ちなみに、これもキー シーケンスにバインドされていますC-M-SPC
)。 - AHK ビュー ウィンドウにマウス クリックで戻り、 で更新しF5ます。
AHKウィンドウの出力の関連セクションは次のとおりです(ここでワードラップを停止するために、長い行を少し短くするモジュロ):
VK SC Type Up/Dn Elapsed Key Window
----------------------------------------------------------
A4 038 h d 4.18 LAlt /cygdrive/c/...
A4 038 i u 0.00 LAlt
A2 01D i d 0.00 LControl
48 023 d 0.09 H
48 023 u 0.09 H
A4 038 h u 0.05 LAlt
A2 01D i u 0.00 LControl
4B 025 d 1.22 K
4B 025 u 0.06 K
A4 038 h d 1.12 LAlt
A4 038 i u 0.00 LAlt
A2 01D i d 0.00 LControl
5B 15B h d 0.02 LWin
A4 038 i d 0.00 LAlt
20 039 d 0.19 Space
20 039 u 0.06 Space
5B 15B h u 0.16 LWin
A4 038 i u 0.00 LAlt
A4 038 h u 0.00 LAlt
A2 01D i u 0.01 LControl
74 03F d 1.90 F5 C:\...\AutoHotkey.ahk ...
多くのことが起こっていることを示しています。
私の理解では、これは AHK が私のLeft Alt+ Left Win+SPACEを に正しく変換していることを証明していC-M-SPC
ます。
以下は、証明が完了したと私が考える理由の説明です。
これが私が押し下げLAltているところですLCtrl
。
A4 038 h d 4.18 LAlt /cygdrive/c/...
A4 038 i u 0.00 LAlt
A2 01D i d 0.00 LControl
u
(しかし、それが真ん中にあるかどうかはわかりませんLAlt
-AHKは、「i=AHKスクリプトによって生成されたため無視されました」と説明しています)。
次は私が押して離すことhです:
48 023 d 0.09 H
48 023 u 0.09 H
したがって、この時点でemacsはC-h
.
次に を放しLAlt、次に を押して放しkます。
A4 038 h u 0.05 LAlt
A2 01D i u 0.00 LControl
4B 025 d 1.22 K
4B 025 u 0.06 K
Emacs は、'describe key sequence' のヘルプ プロンプトに入ります。
次に を押すとLAlt
、AHKがd
信号を送信していることがわかります (また、2 行目には予期していなかったLCtrl
「無視された」信号があります)。を押します:u
LAlt
LWind
LAlt
SPACE
A4 038 h d 1.12 LAlt
A4 038 i u 0.00 LAlt
A2 01D i d 0.00 LControl
5B 15B h d 0.02 LWin
A4 038 i d 0.00 LAlt
20 039 d 0.19 Space
最後に、すべてのLAlt+ LWin+を解放するシーケンスが続きSPACEます。AHKがandとu
のシグナルを送信していることがわかります。Space
LAlt
LCtrl
20 039 u 0.06 Space
5B 15B h u 0.16 LWin
A4 038 i u 0.00 LAlt
A4 038 h u 0.00 LAlt
A2 01D i u 0.01 LControl
最後は、マウス クリックしてアクティブにした後、AHK ビュー ウィンドウのデータを更新したときです。
74 03F d 1.90 F5 C:\...\AutoHotkey.ahk ...
これは、私の AHK スクリプトが私が望んでいたことを実行したことを証明しているようです。
唯一残っている問題は、2 度登場した謎u
の anです。LAlt
何か案は?