バインドしたい AltGr+W to æ
、および他のいくつかの組み合わせ、どうすればこれを行うことができますか?私も必要があります AltGr+Shift+W to Æ
。
私は通常、setxkbmap
を使用してキーマップを変更します。
カスタム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
_で、label-to-keysymは_xkb_symbols
_で定義されています。これらのうち、_xkb_symbols
_は編集したいものであり、他の2つを参照して何を変更するかを知っています。 _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_ALPHABETIC
_とマークされたキーには4つのモードがあります。 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> = ##;
_の形式で正しいキーコードを見つけます(例_<AD02> = 25;
_)。または、_cat dump.xkb| grep ' = 25;'
_ラベルは、xkbが後のセクションでキーを参照するために使用する名前です。
ラベルができたので、_xkb_symbols
_に移動します。これにより、実際にラベルがキーシムにマップされます。フォーマットは
_key <AD02> {
type= "FOUR_LEVEL_ALPHABETIC",
symbols[Group1]= [ w, W, aring, Aring ]
};
_
_type=
_は、_xkb_types
_セクションから必要なタイプです。_symbols[Group1]=
_には、タイプに必要なモードごとに1つのkeysymがあります。繰り返しますが、このタイプの法線、shift/caps、altgr、shift-altgr。 _[Group1]
_、私が理解している限り、複数のキーマップを使用する方法は、設定したロックキーを使用してその場で変更できます。私は自分でグループを使用しないので、すべてが私にとってgroup1です。
ここで使用できるさまざまなキーシムをすべて見つけるには、_/usr/include/X11/keysymdef.h
_を確認してください。探している2つの記号は、æの場合はae
、Æの場合はAE
です。
_key <AD02> {
type= "FOUR_LEVEL_ALPHABETIC",
symbols[Group1]= [ w, W, ae, AE ]
};
_
私は少し歩き回ったかもしれません。 XKBの Arch Wiki's ページをチェックしてください。使用しているOSやディストリビューションに関係なく、これは良いことです。
これは xmodmap
で簡単に行えます。 keysym
ディレクティブを使用して、キーに関連付けられたキーシムを変更できます。これは、現在このkeysymを任意の修飾子の組み合わせで送信しているすべてのキーに影響します。通常の印刷可能な文字の場合、4つのキーシムは、ベアキーのキーシムです。 Shift、キー AltGr とキー AltGr+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の場所は他のシステムによって異なる場合があります)。記号のkeysym名がわからない場合は、Unicode番号を使用できます:U
の後に16進数を続けます。
keysym W = w W U00e6 U00c6
あなたのシンボルで(/usr/share/X11/xkb/symbols/XY
)ファイル、キーボードバリアントの下で次の行を見つけます{ [ w, W,
。これらの2つは、明らかに小文字と大文字のwに対応します。その後、3番目と4番目のエントリは、を押したときに得られるものに対応します。 AltGr +w そして AltGr+Shift+w それぞれ。
これらの3番目と4番目の文字を目的の文字に置き換えるか、存在しない場合は追加する必要があります。
ウィキペディアによると、それらの(ae、AE)ユニコードポイントはそれぞれU + 00E6とU + 00C6であるため、シンボルファイルの新しく編集された行は(+記号を省略)になります。
{ [ w, W, U00E6, U00C6 ] };
このファイルを更新するシステムアップデートはファイルを上書きするため、この編集済みファイルのコピーを自宅のどこかに保存し、アップデートで上書きされるたびにコマンドに置き換えてください。
Sudo cp /YOUR/BACKUP/SYMBOL_FILE /usr/share/X11/xkb/symbols/SYMBOL_FILE