レジストリを操作して 左 Ctrl と Caps Lock を入れ替え

1年前にも同じ記事を書いてはいた(左CtrlキーとCapslockを入れ替える - BiBoLoG).理解し直したから,もう一度書く.

Scancode Map の記述方法

Microsoft のページを読んで理解した.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
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.
http://www.microsoft.com/whdc/archive/w2kscan-map.mspx
  1. バージョン.すべて0にセット
  2. フラグ.すべて0にセット
  3. エントリ数.終端の空エントリを含めて数える
  4. 左 Control を Caps Lock に変更する
  5. Caps Lock を 左 Control に変更する
  6. 終端を示すための空エントリ

設定対象を「現在ログオンしているユーザ」に限定する

HKEY_LOCAL_MACHINE 以下だと,システム全体に影響する.他のユーザを巻き込んでしまうのは良くない.windowsregistry(windowsレジストリ) - tumulabo2 の情報から設定対象を「現在ログオンしているユーザ」に限定する方法がわかった.

キー機能入れ替えを取りやめたいときには,該当するレジストリキーを削除する.

keyswap_lctrl-capslock.reg

コンピュータ全体に適用する場合

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,03,00,00,00,1d,00,3a,00,3a,00,1d,00,\
  00,00,00,00,00,00,00,00

現在ログオンしているユーザに限定する場合

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,1d,00,\
  00,00,00,00,00,00,00,00