xmodmapがもうダメダメなので、 setxkbmap を使うことにした。
しかし、man を読んでも自分で設定する方法がよくわからん…
一応安定のArchLinux wikiで設定方法は載ってるんだが…
XkbOptionsに色々書き足すか、設定ファイルを書き換えるかする方法。
後者はまぁもちろんそれは動くだろう。 /usr/share/X11/xkb以下にxkbで使われるcomponentが用意してある。それを書き換えればまぁ動く。結局わからなかったので最終的にこれで解決した。
前者は、ubuntuだと/etc/default/keyboardのXKBOPTIONSを書き換えてdpkg-reconfiugreすることになる。
これはまぁ動くんだろうけど、問題はoption(というかsymbol)をどうやって自分で定義し、システムに読み込ませるか。
rulesファイルにoptionに関する記述はあり、caps lockを無効にしてctrlとして使うオプションであるctrl:nocapsの定義とかを見て$HOME以下に書いてみたりしたんだけどうーんうまくいかない。
-Iでinclude pathを指定する方法でうまくいかないって言ってる人はいるみたい。
ちなみに、 /etc/gdm3/XSession で $HOME/.Xkbdmap が使われるようになっているので、このファイルで -model ctrl:nocaps を指定してみたが効かず。
これは多分、起動後にコマンド叩くのを自動化する系の解決法の場合によく見る sleep 入れないとだめっていう問題のような気がする。わからんけど。
結局何もわからなかった
まぁ こういう方法→Ubuntu 16.04 で XKB を使ってキーマップをカスタマイズする を使えば自分でいくらでも設定をかけるはずだが、なんかなぁ。自分で定義したオプションをさくっと追加してオプションを追加するだけの方法が知りたかった