Windows環境でCapsLockキーにCtrlキーを割り当てるには、キーマップを変更すればいいだけである。下手なツールを使うと何をされるかわからないので、適当なテキストファイルに設定を書き込み、レジストリに設定を書き込むのが一番良い。
設定ファイルの内容は以下のとおり。
\Registry\Machine\SYSTEM\CurrentControlSet\Control\Keyboard Layout Scancode Map = REG_BINARY 20 \ 0x00000000 0x00000000 \ 2 \ 0x003A001D \ 0x0
これをcapslock.iniなどのファイル名として作成し、reginiコマンドで読み込んで再起動すれば完了だ。
> regini capslock.ini
設定内容は一行で記述する。見やすく改行する場合は\文字でエスケープする。それぞれの設定内容をコメントとして補足したのが以下のもの(汎用の設定ファイルとして同梱しておくと忘れにくい)。
; REG_BINARY 20 byte length, 1set=20, 2set=24, set*4+16 ; 0x00000000 0x00000000 version, flags ; 2 Number of entries (includes null terminator) ; 0x003A001D CapsLock -> Ctrl (0x3a -> 0x1d) ; 0xE05B0000 left Windows -> nul (0xE0 0x5b -> 0x00) ; 0xE05C0000 right Windows -> nul (0xE0 0x5c -> 0x00) ; 0x0 null terminator
2つ以上の設定を書き込む場合は、REG_BINARYの後の数字を増やして、エントリーの項目を設定数+1で記述する。CpasLockをCtrlキーに変更するのは0x003A001Dだが、同時に左のWindowsキーを無効化するには0xE05B0000を追加して記述する。たとえば以下のような感じだ。
\Registry\Machine\SYSTEM\CurrentControlSet\Control\Keyboard Layout Scancode Map = REG_BINARY 24 \ 0x00000000 0x00000000 \ 3 \ 0x003A001D \ 0xE05B0000 \ 0x0 ; REG_BINARY 20 byte length, 1set=20, 2set=24, set*4+16 ; 0x00000000 0x00000000 version, flags ; 2 Number of entries (includes null terminator) ; 0x003A001D CapsLock -> Ctrl ; 0xE05B0000 left Windows -> nul (0xE0 0x5b -> 0x00) ; 0xE05C0000 right Windows -> nul (0xE0 0x5c -> 0x00) ; 0x0 null terminator
キーコードがわかればいろいろと簡単に変更できるだろう。 設定したキーマップを削除したい場合は、regeditを起動し、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard LayoutのScancode Mapを削除すればOKだ。