回答:
xmodmap
時代遅れです。したがって、実際にはxkb
ツールを使用して行う必要があります。
必要なスワップは、デフォルトでX11ファイルに含まれていないようです。あなたは自分でそれを書かなければなりません。
http://madduck.net/docs/extending-xkb/のページは、その方法を理解し、見つけるのに役立ちました。
~/.xkb/keymap/mykbd
の出力を置くファイルを作成します。setxkbmap
これはベースキーボード定義になります。例えば:
setxkbmap -print > ~/.xkb/keymap/mykbd
次に、シンボルファイルを作成してキースワッピングを定義し、たとえば ~/.xkb/symbols/myswap
そこに、次の行を追加します。
partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
replace key <LCTL> { [ Shift_L ] };
replace key <LFSH> { [ Control_L ] };
};
次に、~/.xkb/keymap/mykbd
ファイルを編集し、xkb_symbols
追加する行を変更します
+myswap(swap_l_shift_ctrl)
最後に、でロードできますxkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
(-I
パラメーターに「〜」は使用できません)。おそらく、いくつかのまれなキーの未定義シンボルに関する多くの警告を吐き出しますが、それらを無視することができます(たとえば、エラーをdave:にリダイレクトします2> /dev/null
)。
ノーマルと反転したctrl / shiftを簡単に交換できるようにしたい場合; ~/.xkb/keymap/
追加の「myswap」オプションなしで別のファイルの下に作成し、でロードしxkbcomp
ます。それらをロードする2つの小さなスクリプトを作成できます。
xkbcomp $DISPLAY some.dump
IBusを呼び出した前後に試して、2つのダンプの差分を作成します(これらは完全なキーボード定義です)。おそらく違いが見られます。
setxkbmap -option caps:escape
機能することに注意してください。IBusは、交換されたキーEscおよびCaps_Lockキーを記憶していましたが、交換された左Shiftキーおよび左コントロールキーには対応していません。
Pabloのソリューションの使用にマッピングLALT
するいくつかの問題に遭遇しました。オプションも設定する必要があるようです。Control_L
modifier_map
からテンプレートをコピーし、/usr/share/X11/xkb/symbols/altwin
探してxkb_symbols "ctrl_alt_win"
、次の変更を設定するように修正しました。
最終~/.xkb/symbols/myswap
ファイルは次のとおりです。
partial modifier_keys
xkb_symbols "swap" {
key <MENU> { [ Super_L ] };
key <LALT> { [ Control_L, Control_L ] };
key <RALT> { type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Alt_R, Meta_R ] };
key <LWIN> { [ Alt_L, Meta_L ] };
key <LCTL> { [ Control_L ] };
key <RCTL> { [ Control_R ] };
modifier_map Control { <LALT>, <LCTL>, <RCTL> };
modifier_map Mod1 { <LWIN>, <RALT> };
modifier_map Mod4 { <MENU> };
};
また、新しいシェルを開くときに警告が出力されないようにコマンドに追加-w0
しましたxkbcomp
。
xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY
** MacとLinuxを頻繁に切り替えるため、Linuxに2つのコントロールキーを配置して、マッスルメモリ用のMacキーボードに近づけるのが好きです。