HHK Lite2に右Ctrlを!

HHKLite2には右Ctrlが無い。
これではFEZをやるときにチャット範囲が切り替えられなくて困るじゃないか。

MSからMSKLCなるものが出ているが、
Ctrlとかは変えられないので今回の目的には使えない。

他にもキーマッピング変更ソフトはあるがVistaに対応していない。

仕方ないのでレジストリをいじる事にした。

やった事無いんだけどなぁ…。
regeditで以下のレジストリキーを新規作成します。

HKEY_LOCAL_MACHINE
System
CurrentControlSet
Control
KeyBoard Layout
Scancode Map
Windows Vistaの場合には以下のレジストリキーを作成すると、今ログオンしているユーザだけが対象になります。

HKEY_CURRENT_USER
KeyBoard Layout
Scancode Map

新規作成で「バイナリ」を選択

————————–

左ctrl 00 3A
CapsLock 00 1D

00 00 00 00 00 00 00 00 ; header version[4byte] flags[4byte]
02 00 00 00 ; エントリ数(terminateを含んだ数)
1D E0 5C E0 ; (右ウインドウズキーを右Ctrlにする)
00 00 00 00 ; terminate (終了)

—————————–

*************

Windows Vista/XP/2000/NT4.0のキー配列の変更方法
以下の説明は、Microsoftの技術文書Scan Code Mapper for Windowsを元にしています。

regeditで以下のレジストリキーを新規作成します。

HKEY_LOCAL_MACHINE
System
CurrentControlSet
Control
KeyBoard Layout
Scancode Map
Windows Vistaの場合には以下のレジストリキーを作成すると、今ログオンしているユーザだけが対象になります。

HKEY_CURRENT_USER
KeyBoard Layout
Scancode Map
Scancode Mapの値の型はバイナリで、以下の仕様に基づいて作成します。

DWORD: 0x00000000 ヘッダ
DWORD: 0x00000000 ヘッダ
DWORD: 末尾のヌルも含めた続くDWORDの個数
DWORD: マッピング1

DWORD: マッピングn
DWORD: 0x00000000 末尾のヌル
マッピングは入力スキャンコードを上位2バイトで、出力スキャンコードを下位2バイトで示します。 Caps Lock(0x3a)を左Control(0x1d)にする場合には値は0x003a001dとなります。この場合の設定するバイナリ値は以下の通りです(i386の場合)。

0000 0000 0000 0000 0200 0000 1d00 3a00 0000 0000
DWORDが下位バイトから順に展開されることに注意してください。空白は見やすくするために入れたものです。実際に入力する際には必要ありません。左ControlとCaps Lockを入れ換える場合には以下の値を設定します。

0000 0000 0000 0000 0300 0000 1d00 3a00 3a00 1d00 0000 0000
キーを殺す場合には0x0000を割り当ててください。例えば、両方のWindowsキーを殺す場合には以下の値を設定します。

0000 0000 0000 0000 0300 0000 0000 5be0 0000 5ce0 00 00 00 00
値の作成にはAdministratorの権限が必要です。設定した値は再起動した後に有効になります。 Windows Vistaで今ログオンしているユーザだけを対象にする場合には、Administrator権限は必要ありません。設定はログオンしなおすことで有効になります。 Control、Alt、Deleteの設定を変えるときには注意してください。この三つのどれかがキーボード上に存在しなくなると、ログオンできなくなる場合があります。

よく変更されるキーのスキャンコードを示しておきます。

スペース 0x39
半角/全角(漢字) 0x29
Esc 0x01
英数(Caps Lock) 0x3a
左Ctrl 0x1d
右Ctrl 0xe01d
左Alt 0x38
右Alt 0xe038
無変換 0x7b
変換 0x79
¥|(*) 0x7d
ひらがな(カタカナ)0x70
Num Lock 0x45
Scroll Lock 0x46
F1-F10 0x3B-0x44
F11-F12 0x57-0x58
左Windows 0xe05b
右Windows 0xe05c
Application 0xe05d
(*) 101配列のドライバを106配列のキーボードに使ったとき。

バイナリいじるときのお約束どおり、ひっくり返すのを忘れずに。