キーマップの変更方法

Caps Lockキーって使ったことあります?使わないのに、非常にいい場所にありますよね。そのくせよく使うCtrlキーとかはちょっと遠い配置になってます。vimemacsといったプログラマがよく使うエディタではこのCtrlキーを非常によく使います。

そのため、大抵のプログラマはキーは一をいじって、ここら辺のキーの入れ替えをしてます。今回は素の方法を簡単に紹介。

ちなみに、まわりを見る限り、CtrlとCaps Lockを入れ替えている人が多いような気がします。個人的には、さらにEscキーも入れ替えてしまって、

Ctrl -> Esc
Caps Lock -> Ctrl
Esc -> Caps Lock

にするのがおすすめデス。これは、viを使っていると非常によくEscキーを使うのですが、これが非常に遠くて使いにくいためです。

Windowsでの変更方法

Windowsでキーマップをいじるには、レジストリを直接いじる必要があります。ただ、よく知らないのに直接レジストリをいじるのはとても危険です。

幸いなことに、フリーソフトでキーマップを変更するようなソフトがいくつかあります。色々使い比べて見るのがいいんじゃないかと思います。なお、レジストリ変更系は、ソフトをアンインストールしただけでは元に戻らないのが普通なので、注意が必要です。

取り合えずこれあたりがいいんじゃないでしょうか?
KeySwap for XPの詳細情報 : Vector ソフトを探す!

Linux (debian) での変更方法

Linux(debian)の場合はもう少し直接的にいじれるようになっています。GUI部分での変更とターミナル上での変更両方があります。

まずはGUIでの変更。GNOMEでは、「システム -> 設定 -> キーボード」のキーボードの設定中で、「[レイアウト]タブ -> レイアウトのオプション」から設定変更ができます。ここから、「CapsLock key behavior」と「Ctrl key position」辺りをいじっておけばいいかと思います。

次は、ターミナルでの変更です。これには「xmodmap」を使って変更することになります。そのためには、まずそれぞれのキーの「キーコード」を知る必要があります。

キーコードを調べるためには「xev」を使います。ターミナル上でxevを実行すると、何かが開くと思います。この状態で、変更したいキーを押します。すると、その押したキーの情報が表示されます。

KeyRelease event, serial 33, synthetic NO, window 0x2e00001,
root 0x75, subw 0x0, time 6918335, (166,-15), root:(170,35),
state 0x4, keycode 66 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

たくさん出てきますが、そのなかのkeycodeとkeysymの部分をメモしておいてください。

次に、xmodmapに読み込ませる設定を書きます。これは.Xmodmapに書きます。次のように、それぞれのキーコードと、各キーを押したときに発行されるコードを対応付けます。

keycode 9 = 0xff36
keycode 37 = 0xff1b
keycode 66 = 0xffe3

これであとはxmodmapにこの設定を読み込ませるだけです。

xmodmap .Xmodmap

これで反映されると思います。