Linux環境でCapsLockをCtrlにする【メモ】

投稿者: | 2014年2月27日

自分は常用の環境をLinux(Ubuntu)にしてまだ日が浅いですが、某Eエディタを使っている所為もあってかAキーの隣にCapsLockではなくてCtrlが欲しい気分が高まってきました^^;

ググってその通りにやっただけですが、忘れた時に調べ直すのも面倒なので記事にします。

さて、CapsLockをCtrlにするには幾通りか方法があり、数多と紹介されていますが、調べたところxmodmapコマンドを利用するのが良さそう。 xmodmapコマンドではOSのキーマップテーブルを変更するため、細かく、環境全体で有効な設定が行えるのが利点です。

xmodmapコマンドに -pke オプションを与えると現在のキー番号とその役割(キーシム)の対応表、キーマップテーブルが得られます。そして、これを適当なファイルに書き出すために以下のコマンドを実行します。

xmodmap -pke > ~/.xmodmap

>の右側に ~/.xmodmap として、ホームディレクトリの.xmodmapというファイルに書き込むよう指定していますが、ここは好きな場所とファイル名で構いません。

そして得られたファイルを見ると

keycode  foo = bar

という形でズラズラとキーマップが書かれていますが、重要なのはCapsLockとCtrlの行です。 日本語キーボードを利用している場合、CapsLockはKeycode 66、左CtrlであるControl_LはKeycode 37が割り当てられていると思います。

恐らくこうなっているはず

...
keycode  37 = Control_L NoSymbol Control_l
...中略...
keycode  66 = Eisu_toggle Caps_Lock Eisu_toggle Caps_Lock
...

この二行を見つけたら、他の行は全て削除します。

他の行を残しておいても構いませんが、ターミナルを開くたびにこのファイル全てを読み込むように設定するのでターミナルを開いた時に一瞬bashがフリーズしたかのような振る舞いになってしまい地味にストレスなので私は削除しました。

そして、 keycode66の行の右辺を削除してKeycode37と同じにします

最後に、CtrlとCapsLockは特殊キーなので、CapsLockキーを削除して左Ctrlキーを一つ追加したことをOSに伝える必要があるため以下の二行を追加します。

clear Lock
add Control = Control_L

xmodmapコマンドの引数にこのファイルを与えると、ファイルの内容の変更が適用されます。

xmodmap ~/.xmodmap

このコマンドを~/.bashrcに書き込んでおけば、起動するたびに変更が適用されるようになります。

 

参考にしたサイト:http://d.hatena.ne.jp/kenbeese/20120214/title

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください