レジストリエディタで[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]にScancode Mapという名前でバイナリ値を作成することで、キーの割り当てを変更できます。
このScancode Mapは下表のように定義されています。
| オフセット | バイト数 | データ |
|---|---|---|
| 0 | 4 | ヘッダー。バージョン情報 |
| 4 | 4 | ヘッダー。フラグ |
| 8 | 4 | ヘッダー。マッピング数 |
| 12 | 4 | 個々のマッピング※1 |
| … | … | … |
| 最後4バイト | 4 | NULL終端文字 (0x00000000) |
※1 マッピングはスキャンコードのscan1のmakeで「割り当て元のキー + 割り当て先のキー」の書式で指定します。
たとえば左CtrlキーとCaps Lockキーを入れ替えるには、次のようにします。
00000000 00000000 03000000 3A001D00 1D003A00 00000000
これはリトルエンディアンで記述するため、意味は下表の通りとなります。
| リトルエンディアン | ビッグエンディアン | 説明 | |
|---|---|---|---|
00000000 |
→ | 0000 0000 |
バージョン |
00000000 |
0000 0000 |
フラグ | |
03000000 |
0000 0003 |
マッピング数は3 (終端のNULLを含む) | |
3A001D00 |
001D 003A |
0x001D (左Ctrlキー) を、0x003A (Caps Lockキー) へ割り当て | |
1D003A00 |
003A 001D |
0x003A (Caps Lockキー) を、0x001D (左Ctrlキー) へ割り当て | |
00000000 |
0000 0000 |
NULL終端文字 |
