Ubuntu16.04でCapsLockとCtrlを入れ替える
自宅のPCをUbuntuにしたので環境整え
調べながらやったら結構面倒だったので備忘
参考
http://d.hatena.ne.jp/aaa555/touch/searchdiary?word=*%5BLinux%5D
http://blog.cnu.jp/blog/2014/05/12/use-xkb/
設定ファイルの雛形を準備
$ mkdir -p ~/.xkb/keymap ~/.xkb/symbols $ setxkbmap -print > ~/.xkb/keymap/mykbd
.xkb/keymapディレクトリと.xkb/symbolsディレクトリを作成
現在システムに設定されているkeymap(?)をmykbdという名前で~/.xkb/keymapに配置する
setxkbmapコマンドにprintオプションをつけると現在値を標準出力してくれるらしい
変更するキーバインドの設定
$ vim ~/.xkb/symbols/myswap
やりたいことはCapsLockと左Ctrlの入れ替え
myswapに以下のように記述する
partial modifier_keys xkb_symbols "swapkeys" { replace key <LCTL> { [ Caps_Lock ] }; replace key <CAPS> { [ Control_L] }; };
上記設定をmykbdに反映する
$ vim ~/.xkb/keymap/mykbd
雛形は準備されているので+myswap(swapkeys)
の部分を追加します
xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+jp+us:2+inet(evdev)+myswap(swapkeys)" }; xkb_geometry { include "pc(pc105)" }; };
システムに設定を追加する
このままだと日本語入力に切り替えたタイミングで設定が戻ったりしてしまうので、システムに反映します
$ vim ~/.bashrc
以下を末尾に追加する
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null
作成したmyswapファイルをシステムのほうにコピーする
sudo cp -i ~/.xkb/symbols/myswap /usr/share/X11/xkb/symbols/
/usr/share/X11/xkb/rules/evdev の末尾に次の1行を追加
$ vim /usr/share/X11/xkb/rules/evdev
以下を末尾に追加する
mysetting:swapkeys = +myswap(swapkeys)
gnomeのシステム設定に反映させる
$ gsettings set org.gnome.desktop.input-sources xkb-options "['mysetting:swapkeys']"
再起動すればちゃんと設定が保持されます