AltGr+キーをシンボルにバインドする方法は?

AltGr+キーをシンボルにバインドする方法は?

AltGr+と他の組み合わせを組み合わせたいWのですが、æどうすればいいですか?まだAltGr++Shiftが必要ですWÆ

私は主にsetxkbmapキーマップを変更するために使用します。

答え1

それは簡単ですxmodmapkeysymコマンドを使用して、キーに関連付けられたキーシンボルを変更できます。これは、現在の修飾子の組み合わせを使用してこのキーシンボルを送信するすべてのキーに影響します。一般的な印刷可能文字の場合、4つのキー記号はbare key、keyed Shift、keyed AltGr、およびAltGr+ keyですShift

keysym A = a A aring Aring
keysym O = o O oslash Ooblique
keysym W = w W ae AE

これらの指示をファイル(たとえば)に入れて~/.Xmodmapを使用してロードしますxmodmap ~/.Xmodmap~/.Xmodmap一部の環境では、ログインすると呼び出されたファイルが自動的にロードされます(Unixバージョンとデスクトップ環境によって異なります)。

/usr/share/X11/locale/en_US.UTF-8/Composeキーシンボル名は、または/usr/include/X11/keysymdef.h(Debianの場所、他のシステムでは異なる場合があります)にあります。シンボルのキーシンボル名がわからない場合は、Unicode番号を使用できます。Uその後に16進数が続きます。

keysym W = w W U00e6 U00c6

答え2

これを達成するために、カスタムXKBマップを使用できます。を使用して現在の地図をダンプして編集し、を使用して読み込むxkbcomp $DISPLAY dump.xkbことをお勧めしますxkbcomp newmap.xkb $DISPLAY。ダンプファイルは非常に大きく、重複した情報がたくさんあります。

編集する最も簡単な方法は、現在の地図でaltgrの目的を見つけることです。通常はISO_LEVEL3修飾子です。現在のキーマップがaltgrを使用していない場合は、altgrを使用するキーマップをロードして動作を確認できます。たとえば、-layout us -variant altgr-intlこれは非常に広範囲であり、すべてではなくてもほとんどのヨーロッパのキーをバインドします。何が起こっているのか簡単な紹介は次のとおりです。

xkbはカーネルからキーコードを取得し、各キーコードのラベルを設定し、そのラベルと修飾キーを使用して出力する必要があるキーシンボルを決定します。各キーには、予想される修飾キーと各組み合わせの出力内容を定義するタイプが割り当てられます。あなたが得るダンプを見てくださいxkbcomp:タグはに定義されておりxkb_keycodes、タイプはにありxkb_types、タグキーのシンボルはにありますxkb_symbols。これらのうち、他のxkb_symbols2つを編集して参照して、変更したいものを確認することをお勧めします。また、xkb_symbols現在行われている方法を表示、理解、適切に編集できます。

xkb_typesセクションにはさまざまなキー定義修飾子レベルが含まれているため、altgrモードとShiftモードを持つ修飾子レベルが必要です。例:

type "FOUR_LEVEL_ALPHABETIC" {
    modifiers= Shift+Lock+LevelThree;
    map[Shift]= Level2;
    map[Lock]= Level2;
    map[LevelThree]= Level3;
    map[Shift+LevelThree]= Level4;
    map[Lock+LevelThree]= Level4;
    map[Shift+Lock+LevelThree]= Level3;
    level_name[Level1]= "Base";
    level_name[Level2]= "Shift";
    level_name[Level3]= "Alt Base";
    level_name[Level4]= "Shift Alt";
};

これは、表示されたキーにFOUR_LEVEL_ALPHABETIC4つのモードがあることを意味します。 Normal、Shift / Caps、altgr、altgr-shiftがあなたが探しているものに似ています。

wのキーコードがわからない場合は、それが何であるかを知りたいでしょう。 xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'押したキーのキーコードを提供します。grep出力を読みやすくすることです。

xkb_keycodes以前に取得したダンプマップ部分と一緒に取得したキーコードを相互参照してください。私にwはキーコード25を与えます。たとえば、正しいキーコードをlessダンプして検索します。または、Labelはxkbが後のセクションでキーを参照するために使用する名前です。<LABEL> = ##;<AD02> = 25;cat dump.xkb| grep ' = 25;'

これでラベルがあるので、xkb_symbols実際にラベルをキーシンボルにマップする場所に移動します。形式は

key <AD02> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [  w, W, aring, Aring ]
    };

type=セクションで目的のタイプを選択するxkb_typesと、symbols[Group1]=そのタイプに必要な各モードのキー記号があります。同様に、このタイプの一般、Shift/Caps、Altgr、Shift-altgr。[Group1]、私が知っている限り、これは設定したロックキーを使用してすぐに変更できる複数のキーマップを使用する方法です。私はグループを直接使用しないので、すべてがグループ1です。

ここで利用可能なさまざまなキーボードシンボルをすべて見つけるには、を確認してください/usr/include/X11/keysymdef.h。探している2つのシンボルはaeæとAEÆです。

key <AD02> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [  w, W, ae, AE ]
    };

ちょっと迷っているかもしれません。確認するアーチウィキペディアXKBのページは、どのオペレーティングシステムやディストリビューションを使用しても、良い内容です。

答え3

記号(/usr/share/X11/xkb/symbols/XY)ファイルでKeyboard Variantsの下の行を見つけます{ [ w, W,。明らかに、これら2つは小文字と大文字のwに対応しています。その後、3番目と4番目の項目は、それぞれAltGr +wAltGr++を押すShiftと表示される項目に対応しますw

3番目と4番目の文字を目的の文字に置き換えるか、それ以外の場合は追加する必要があります。

ウィキペディアによると、対応する(ae、AE)UnicodeポイントはそれぞれU + 00E6とU + 00C6なので、シンボルファイルの新しい編集行は(+シンボル省略)でなければなりません。

{ [         w,          W,   U00E6,   U00C6 ]   };

このファイルを更新するシステム更新はそれを上書きするので、編集したファイルのコピーを家のどこかに保存し、更新で上書きするたびに次のコマンドで置き換えることをお勧めします。

sudo cp /YOUR/BACKUP/SYMBOL_FILE /usr/share/X11/xkb/symbols/SYMBOL_FILE

関連情報