Windowsキーを無効にしてCapsLockキーをCtrlにする方法

試行錯誤

  • ノートPCについているWindowsキーが恐ろしく邪魔。そしてCapsLockキーをCtrlに入れ替えたい。そんな目的でフリーソフトを探していたのですが見つからない。後者だけならAltime等がありますが、途中からレジストリを直接いじった方が早いことに気づいたので試行錯誤してみました。
  • 鍵になるのは、"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout"キーの"Scancode Map"というバイナリ値。本当はScancode Mapの一覧表があって、任意の位置のキーを任意の意味のキーに変更できるはずなんですが、簡単に見つかりませんでした。
  • 原理原則:
Start offset (in bytes)  Size (in bytes)  Data 
0 4 Header: Version Information
4 4 Header: Flags
8 4 Header: Number of Mappings
12 4 Individual Mappings
Last 4 bytes 4 Null Terminator (0x00000000)
  • CapsLockとCtrlを入れ替える事例(Microsoft):
Value Interpretation 
0x00000000 Header: Version. Set to all zeroes.
0x00000000 Header: Flags. Set to all zeroes.
0x00000003 Three entries in the map (including null entry).
0x001D003A Left CTRL key --> CAPS LOCK (0x1D --> 0x3A).
0x003A001D CAPS LOCK --> Left CTRL key (0x3A --> 0x1D).
0x00000000 Null terminator.
  • CapsLockをCtrlにする事例(sohatachさん):
00 00 00 00
00 00 00 00
00 00 00 02  
00 00 00 00
00 1D 00 3A
00 00 00 00
  • 上二つを見ていたら、何となく法則がわかりました。多分こんな感じだと思われる。考えてみれば、CapsLockとCtrlは入れ替える必要はなくて、CapsLockがCtrlになれば十分ですね。Windowsキーは右左がどちらかわからないので、両方無効にすればよし。regeditから入力した値はこれ。
00 00 00 00
00 00 00 00
00 00 00 04 # 4 エントリ追加
00 1d 00 3a # 1 エントリ目 左 CapsLock を Ctrl に変更
00 5b e0 00 # 2 エントリ目 左(?) Windows キー無効化
00 00 5c e0 # 3 エントリ目 右(?) Windows キー無効化
00 00 00 00 # 4 エントリ目 Null Terminator

結論

  • これを"Scancode Map.reg"というファイルにでも保存して、次回からこれをダブルクリックすればよかろう。手入力した値をエクスポートしたのですが、途中に"00 00 00"というエントリが入っているのが謎だ。まあ、うまくいっているので深く考えないことにします。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,1d,00,3a,00,00,00,5b,e0,\
  00,00,5c,e0,00,00,00,00