AutoHotkey (EU キーボード): AltGr を維持しながら LCtrl を再マップする方法

AutoHotkey (EU キーボード): AltGr を維持しながら LCtrl を再マップする方法

過去の質問を検索しましたが、 を完全に保存しながら を(またはを)LAltと切り替える、つまり+ (または+ ?)に対応する解決策が見つかりませんでした。LCtrlCapsLockLCtrlAltGrCtrlAltLCtrlRAlt

これは最も近い質問ですが、権限が制限されているため、レジストリを使用できません。 Alt-Tab スイッチャーを台無しにせずに、AutoHotKey を使用して Ctrl と Alt を切り替えますか?

関連: https://code.google.com/p/uawks/issues/detail?id=2

私は以下の簡単なスクリプトのいずれかを使用しています:

LAlt::LCtrl
LCtrl::LAlt

二つ目:

LCtrl::CapsLock
CapsLock::LCtrl

他のキーと一緒に押すと、何かが動かなくなり、再び入力できるようになるまでAltGrランダムに押す必要があります。2 番目のスクリプトを使用すると、CapsLock がアクティブになります。AltCtrl

私のキーボードはスイス式で、3 番目の記号が付いたキーが多数あります。そのため、頻繁に が必要になるためAltGr、それぞれを再マッピングするのはクリーンな解決策にはなりません。

アップデート

AltGr以前投稿した 2 つのスクリプトの最後に次の行を追加することで問題が完全に解決されることが分かりましたが、なぜこのようなことが起こるのかわかりません。

<^>!::RAlt

AltGrを として単独で再マッピングするとRAlt、通常の の効果が生成されるのはなぜですかAltGr?

答え1

1) 本質的には単純ですが、この投稿のロジックは、テストするための AltGr キーボードを持っていない人にとっては理解しにくいものです。少なくとも私自身の意見ですが... 理解しやすくするために、どの 2 行のスクリプトについて話しているのかを明確にし、次にどのキー (およびどの順序) を押すかのリスト、次にどのような結果を得るかのリストを示すと役立つかもしれません。次に、次のスクリプト、キー、および結果をリストします。他の人には必要ないかもしれませんが、重要な情報はすべてリストされていると思いますが、私には少し理解しづらかったです。

2) ヘルプ ファイルでホットキーの再割り当てを確認しましたか? 試してみるとよいことが 2 つあることに気付きました。1 つ目は、修飾子として * を使用することです。2 つ目は、アップストロークをトリガーして別のアップストロークを送信する (つまり、別の修飾子のアップストロークを送信する) ために 'Up' を使用することです。ヘルプ ファイルのホットキーの下にリストされている LWin の再定義を確認してください。

*LWin::Send {LControl Down}
*LWin Up::Send {LControl Up}

3) 時々、キーが動かなくなることがありますが、その場合は、キーがすでに上がっている場合でも「Up」コマンドを送信することで回避できる場合があります。技術的には必要ない場合もありますが、機能する場合もあります (機能しない場合もあります)。

4) [表示] メニューからキー履歴リストを確認すると役立つ場合があります (役に立たない場合もあります)。多くの場合、キーが処理される順序 (つまり、リストされている順序) と、リストされているさまざまな理由によりキーが無視されているかどうかを確認することで、操作が停止したり、誤作動したりする理由がわかります。

5) LWinの再定義例が示すように、トラブルシューティング中に柔軟性を高めるために、「Send」または「SendInput」コマンドを使用することをお勧めします(もちろん、必要ない場合は使用せずにコードをよりクリーンにすることもできますが、何も害はありません)。たとえば、Sendコマンドを使用すると、1つのホットキーの再割り当てに別の文字またはキーストロークを簡単に追加できます。次に、キー履歴リストの起動順序を確認して、それが何であるかを確認します。考える押された順番と押された回数。

もし私がこれらのキーボードの 1 つをテストに使用していたら、おそらくあなたが挙げた 2 行の例の 1 つを、LWin の再割り当ての例のように 4 行のキーの再割り当てに変換し、キー履歴で何が起こっているかを確認するでしょう。一時停止ステートメントも追加して、その動作を捕捉し、一時停止が実行された時点までのキーストローク履歴を確認できるようにし、ログから修飾キーが解放されたことを除外します。

これが機能するかどうかはわかりませんが、デバッグの目的で最初に行う可能性のあるものの概要を次に示します。

*LAlt::Send {LCtrl Down}
*LAlt Up::Send {LCtrl Up}
*LCtrl Up::Send {LAlt Up}
*LCtrl::
     Send {LAlt Down}
     Pause   ; once the script is paused you can go look at Key History
 Return

関連情報