彼女からは、おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

Ubuntu 9.04 でキー割り当て(キーボード配列)を変更 - 起動時に .Xmodmap が自動で読み込まれないときは?

ええと,先日のエントリー「Ctrl(Control)キーと CapsLock キーの位置問題に折り合いをつけてみる」に続いて,Emacs の操作に必須な,キー割り当て変更に関する話題です。


Windows のキー割り当ての変更は,既に書いたとおり XKeymacs に任せるとして(Windows のすべての操作を Emacs 風に変更するツール Xkeymacs が手放せない),今回は,Linux(特に Ubuntu 9.04)におけるキー割り当ての変更のハナシ。過去に Ubuntu でハマってしまった箇所があったので,そのことを思い出しながら書き留めておきます。

Ctrl と CapsLock の交換

単純に Ctrl と CapsLock の交換であれば,UbuntuGUI で設定変更ができるようにメニューを用意してくれています。


システム > 設定 > キーボード > 「レイアウト」タブ > 「レイアウトのオプション」をクリックします。


Ctrl キーの位置 > 「Swap Ctrl and CapsLock」を選択すれば OK です。

Ctrl(右)と CapsLock の交換

ところが,先日のエントリー「Ctrl(Control)キーと CapsLock キーの位置問題に折り合いをつけてみる」でおススメした,“Ctrl(左)はそのまま残して,Ctrl(右)と CapsLock を交換”する場合には,ひと工夫必要になります。


具体的には,xmodmap コマンドを使用します。


詳しいことは上記のマニュアルに載っていますが(ただし英語),次のスクリプトをホームディレクトリ直下にファイル名「.Xmodmap」で保存した後,

remove Lock = Caps_Lock
remove Control = Control_R
keysym Caps_Lock = Control_R
keysym Control_R = Caps_Lock
add Lock = Caps_Lock
add Control = Control_R


次のコマンドを実行すれば OK です。

$ xmodmap .Xmodmap

ハマってしまった箇所と,その解決方法

しかし,起動するたびに上記のコマンドを実行するのは面倒なので,次に考えるのは,“どうしたら自動化できるか?”ということ。


この点,ググってみたら,

便利なことに Ubuntu では、システム起動時に「.Xmodmap を読み込ますか?」と出てくるので、一度ここで Yes を答えておけば、あとは自動的に起動時に読み込んで設定を反映してくれる。

とあり,実際,次の起動時に,

と訊かれたので,右側の「.Xmodmap」を左側に移動させてやれば,OK のはずでした。


ところが,どういうわけか,キー割り当てが効いていない。いろいろ調べてみたら,次の方法で解決できました。


Alt + F2 で「アプリケーションの実行」を起動し,(Windows でいうところの「ファイル名を指定して実行」みたいなもの)「gconf-editor」を実行します。


次のとおり展開し,値を確認。
/desktop/gnome/peripherals/keyboard/general/update_handlers


おそらく値が [.Xmodmap] となっていると思うので,これを [$HOME/.Xmodmap] に変更してやれば,次回の起動時から「.Xmodmap」が自動的に読み込まれるはずです。


僕とおんなじところでハマってしまって諦めていた人,ぜひ試してみてください。ではでは。