setxkbmapを使用して、左シフトと左コントロールを交換します


17

の代わりにを使用しShiftて左CTRLキーと左キーを交換することは可能ですか?setxkbmapxmodmap

編集

Fcitxに切り替えました。これは、あらゆる点でIBusよりもキーボードレイアウトとカスタマイズされたキーマップではるかに優れた動作をします。強くお勧めします。

回答:


28

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つの小さなスクリプトを作成できます。


1
ありがとう。動作しますが、一度だけです。問題は、IBusという入力エンジンを使用していることです。入力方法を切り替えてからキーストローク「Ctrl +スペース」で元に戻すと、左シフトと左コントロールが元に戻ります。それを避ける方法に関する提案。

mmn、おそらくIBus自体がキーボードの再定義をいくつか行っています。xkbcomp $DISPLAY some.dumpIBusを呼び出した前後に試して、2つのダンプの差分を作成します(これらは完全なキーボード定義です)。おそらく違いが見られます。
パブロサラチャガ

うーん、それは、どのように迷惑です。問題を取り除くためのアイデアはありますか?コマンドがsetxkbmap -option caps:escape機能することに注意してください。IBusは、交換されたキーEscおよびCaps_Lockキーを記憶していましたが、交換された左Shiftキーおよび左コントロールキーには対応していません。

多分IBusは起動時にキーボードを読みます。IBusをアンロードし、キーボードを変更して、もう一度ロードしてみてください。問題が解決しない場合は、IBus固有の質問を行う必要があります(バグを報告するかもしれません。つまり、IBusはキーボードの変更を検出し、それを尊重する必要があります)
Pablo Saratxaga

こんにちは。左のAltキーと左のControlキーを交換するために同じテクニックを使用する方法を教えてもらえますか?myswapファイルを次のように変更しようとしました。置換キー<LALT> {[Control_L]}; }; しかし、うまくいきませんでした。ティア!!!
ニールジラルディ

3

Pabloのソリューションの使用にマッピングLALTするいくつかの問題に遭遇しました。オプションも設定する必要があるようです。Control_Lmodifier_map

からテンプレートをコピーし、/usr/share/X11/xkb/symbols/altwin探してxkb_symbols "ctrl_alt_win"、次の変更を設定するように修正しました。

  • コントロールするためのLALTキー**
  • AltへのLWINキー
  • MENUキーからWindowsキー

最終~/.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キーボードに近づけるのが好きです。

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