キーボードレイアウトを変更するときにemacsキーバインディングを保持する方法


7

キーボードのレイアウトを変更するとします。入力したいキーを見つけるには、筋肉のトレーニングに時間を費やす必要があります。

しかし、ショートカットの一部として入力するキーを見つけるために筋肉をトレーニングする時間も費やす必要がありますが、これはとんでもないことです(通常、これらのキーは、文字ではなく簡単にアクセスできるため選択されています*)。

キーボードレイアウトを変更したときに、これらのキー定義が移動しないようにする方法はありますか?

たとえば、私がazertyで、qwertyを学びたい場合は、beginning-of-lineからC-aに再マッピングしてC-q、キーボード上の最初のキー(の最初のキーTAB)に留まるようにします。

私が理解しているように、それはインプットメソッドを介して部分的に実装されていますが、逆の方法を取ります:emacsがテキストの入力文字を解釈する方法を変更します。ただし、たとえばキーボードレイアウトをシステム全体で変更する場合は機能しません。

キーバインディングを定義する方法はたくさんあることは理解していますが、たとえば、kbd関数を使用して人間の文字列から変換されたすべてのキーバインディングを処理するソリューションを受け入れられると考えます。


*。あまり使用されない特定のキーには当てはまりません。たとえばC-c、ほとんどの主要なモードのマップは、到達するのが容易ではなく、覚えやすいキー名を使用しています。おまけの質問として、一部のキーバインドを保持(物理的なキーが移動しないように再マッピング)して、他の一部を移動(再マッピングせず、キーに関連付けられた文字は変更されない)できると便利です。ユーザーはkbd、キーバインドを定義するときではなく、2つの異なる関数を使用して、オプションを選択できます。


1
Emacs内から特定のキーボードレイアウトを検出するソリューションを見つけた場合は、その検出に基づいてプログラムで再マッピングできます。題しなし正解と関連する質問があり、キーボードレイアウトを決定Emacsはstackoverflow.com/questions/7813648/...
lawlistは、

@lawlist私は「頻繁に切り替わる」シナリオを念頭に置いていませんでした。少なくとも、頻繁に発生するので、発生するたびにinitファイルのオプションを変更するのは不合理です。確かに自動検出はさらに優れていますが、ユーザーがキーマップについてemacsに通知する必要がある解決策がある場合は、それを受け入れて喜んでいます。
T.ヴェロン2015年

@ T.Verronは、単純なGNU emacsを使用すれば、答えを得ることができないと確信しています。現在のキーボードレイアウトに関係なく、同じショートカット位置を使用するemacsキーバインドパッケージを使用できます。(ergoemacs-modeはそれを行いますが、それはGNU Emacsのデフォルトのキー設定ではありません)evil-modeも可能性があると考えています。基本的に、キーバインディングパッケージはレイヤーを提供する必要があります。
Xah Lee、2015

回答:


1

私があなたの質問を理解する限り、それkey-translation-mapはあなたの問題にとって良い魂のように思えます。たとえば、例のようにC-q動作C-aさせたい場合は、次のように定義します。

  (define-key key-translation-map (kbd "C-q") (kbd "C-a"))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.