web-dev-qa-db-ja.com

setxkbmapを使用して、左シフトと左コントロールを入れ替えます

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

[〜#〜]編集[〜#〜]

私は Fcitx に切り替えました。これは、すべての点でIBusよりもキーボードレイアウトとカスタマイズされたキーマップではるかにうまく機能します。私はそれを強くお勧めします。

18
day

xmodmapは廃止されました。そのため、実際にはxkbツールを使用して行う必要があります。

必要なスワップは、デフォルトではX11ファイルに含まれていないようです。自分で書く必要があります。

ページ https://web.archive.org/web/20170825051821/http://madduck.net/docs/extending-xkb/ は、それを理解し、それを行う方法を見つけるのに役立ちました。

setxkbmapの出力を配置するファイル~/.xkb/keymap/mykbdを作成します。これはベースキーボードの定義になります。例えば:

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を簡単に交換できるようにしたい場合;追加の「myswap」オプションなしで、~/.xkb/keymap/の下に別のファイルを作成し、xkbcompを使用してロードするだけです。 2つの小さなスクリプトを作成して、それらをロードできます。

29
Pablo Saratxaga

Pabloのソリューション を使用してLALTControl_Lにマッピングする際にいくつかの問題が発生しました。modifier_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> };
};

また、xkbcompコマンドに-w0を追加して、新しいシェルを開くときに警告が出力されないようにしました。

xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY

** MacとLinuxの間で頻繁に切り替えて、マッスルメモリー用にMacキーボードを概算するために、Linuxに2つのコントロールキーを用意するのが好きです。

3
Jo-el