Ubuntu 10.10 で CapsLock を Ctrl にする
'A’の左隣が Ctrl でないと使いにくいのは衆目の一致するところ。
なので、このキーマップを何とかしたい。
CapsLockとCtrlを入れ替えてもいいけど、
CapsLockなんて使わないから、Ctrlに変更してしまうのが好み。
こんなのは、xorg.confの
Section “InputDevice"
で
Option "XkbOtopns" "ctrl:nocaps"
とか、
Option "XkbOtopns" "ctrl:swapcaps"
と書いときゃいいだろと思ってたんだけど、やってみると効かない。
なんで?
調べてみた。
Ubuntu 8.10のX.orgはctrl:swapcapsが効かない
http://raising-heart.blogspot.com/2008/11/ubuntu-810xorgctrlswapcaps.html
によると、キーボードドライバとして(kbdではなく)、
evdevというのが使われてることが原因らしい。
/var/log/Xorg.0.log を見ると、確かに、evdevで上書きしている。
というわけで、上記サイトに習って、下記内容で
/etc/X11/Xsession.d/10setxkbmap を作ってみた。
#!/bin/sh
setxkbmap -option ctrl:nocaps
これで確かに、憎きCapsLockがCtrlに替わる。
しかしながら、これって、Xsessionが始まるとき、つまり、ログインする際に走るスクリプト。
ログイン前ではキーマップの変更はされないということ。
これは今ひとつおもしろくない。
gdmの画面では有効ではないってことだから。
ログイン前のgdmの画面のときに、キャラクタコンソールに行こうと思って、
Ctrl+Alt+F1 を押したときにハマってしまう。
ということで、Ubuntu日本語フォーラムで教えたもらった。
https://forums.ubuntulinux.jp/viewtopic.php?id=10224
それによれば、/etc/gdm/Init/Default にしかるべきことを書いておけばいいらしい。
ありがとうございます。結果から言うと上手くいきました。
/etc/gdm/Init/Default を見たところ、
/etc/X11/Xmodmap を読み込んでくれそうな雰囲気があったので、
このファイルに
remove Lock = Caps_Lock
keysym Caps_Lock = Control_L
add Control = Caps_Lock
と記述してみたのですが、これはうまくいきませんでした。
しょうがないので、
/etc/gdm/Init/Default の一番最後、
exit 0
の直前に、
setxkbmap -option ctrl:nocaps
と書いてやったら期待通りの動作になりました。
また、この設定は、ログイン後も引き継いでくれるようです。
# ちなみに、exit 0 の直前に、
# xmodmap /etc/X11/Xmodemap
# と直書きしてみましたが、期待したキーマップにはなりませんでした。
# ログイン後に、このコマンドを実行すればキーマップは変更されるので、
# 記述内容は間違ってはいないと思います。
直書きで今ひとつスマートではありませんが、とりあえずは、期待した動作が得られました。
ありがとうございます。
これでなんとかめでたし、めでたし、である。
ついでに、コンソールでも設定を変更した。
ディスカッション
コメント一覧
まだ、コメントがありません