5

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 ビュー画面に表示されるものです。

  1. Cygwin ウィンドウをマウスでクリックしてアクティブにします (すでに emacs が実行されています)。
  2. LeftAlt+hを押すと、 kAHK が に変換されることがわかっていC-h kます。これは、emacs の「次のキーボード シーケンスの意味を教えてください」です。
  3. emacs ヘルプ プロンプトでLeft Win+ Left Alt+SPACEを押します。
  4. emacs が私にドキュメンテーションを表示するのを見てくださいC-M-@(ちなみに、これもキー シーケンスにバインドされていますC-M-SPC)。
  5. 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「無視された」信号があります)。を押します:uLAltLWindLAltSPACE

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のシグナルを送信していることがわかります。SpaceLAltLCtrl

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

何か案は?

4

3 に答える 3

4

キー履歴ウィンドウを使用して試すことができます

  • ホットキー スクリプトを実行する
  • トレイ アイコンを右クリックし、[開く] を選択します。
  • Viewメニューをクリックし、Key history and script infoを選択します。

キー履歴画面

于 2013-04-10T10:08:11.047 に答える