Ubuntu 16.04でキーバインドの設定

Ubuntu 14.04ではxmodmapでキーバインドの変更を行うことができました。
しかし、Ubuntu 16.04でxmodmapを使うと、日本語入力モードに切り替えた途端、設定が初期化されてしまいます。

調査したところ、Ubuntu 16.04ではxmodmapではなくsetxkbmapを使うと巧くいくようです。

$ setxkbmap -print
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)+ctrl(nocaps)"   };
        xkb_geometry  { include "pc(pc105)"     };
};

xkb_*****:*****の設定は/usr/share/X11/xkb下の各ディレクトリにある。

$ ls /usr/share/X11/xkb
ls -F /usr/share/X11/xkb
compat/  geometry/  keycodes/  rules/  symbols/  types/

作業内容

デフォルトのキーバインドを以下のように変更する。
無変換→ALT(左?)
変換→ESC

変換キーと無変換キーの設定がどこに書かれてあるかを調べる。

$ grep HENK /usr/share/X11/xkb/symbols/*
〜省略〜
/usr/share/X11/xkb/symbols/inet:    key <HENK>   {      [ Henkan                ]       };
〜省略〜

$ grep MUHE /usr/share/X11/xkb/symbols/*
〜省略〜
/usr/share/X11/xkb/symbols/inet:    key <MUHE>   {      [ Muhenkan              ]       };
〜省略〜

どうやら、/usr/share/X11/xkb/symbols/inetを修正すればいいということがわかる。

    key <HENK>   {      [ Escape                ]       };
    key <MUHE>   {      [ Alt_L              ]       };
$ sudo rm -rf /var/lib/xkb/*

再起動する。

Caps LockにCtrlキーを割り当てる

$ setxkbmap -option "ctrl:swapcaps"

ところがこれを実行すると、無変換キーを押した時に左ALTキーを押しっぱなしにした状態になってしまう。

暫定解決

このままだと人生をキーバインド作業に捧げてしまいそうなので、無変換キーをESCキーに割り当てることにした。
無変換キーを左ALTにしたかったのは、Emacsのメタキーとして使いたかっただけなので、ESCキーでも問題はない。
そして、変換キーにENTERキーを割り当てた。
こうすれば、小指でENTERキーを叩くよりも楽にキー入力することができる。

参考サイト

XKBでCapsLockをEscに割り当てる

Ubuntuライフ © 2016 Frontier Theme