レジストリの編集でキーマッピングを入れ替える方法

キーボードの機能を使ったりソウトウェアをインストールしたりしてキーマッピングを入れ替えている人も多いと思いますが、実は、Windowsではキーマッピングの変更はレジストリを編集するだけで簡単に実現できます。

!注意!この記事ではレジストリ操作などPCを破壊してしまう可能性のある操作を説明しています。操作ミスや当記事の記述ミスにより最悪の場合、Windowsが起動しなくなるなどの障害が発生する危険性もあります。当記事を参考にされる場合は必ずバックアップを作成した上で、破壊しても問題ないPCで行ってください。

キーマッピングを入れ替える方法

「Windowsキー」と「Rキー」を同時に押し、「ファイル名を指定して実行」から
レジストリエディター(regedit.exe)を起動して、

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

Scancode Mapという名前で入れ替えたい配列を指定します。
書き込む値はバイナリ値です。

値の書き方はフォーマットに従ってスキャンコードのペアを指定していきます。

フォーマットについては以下の例を参考にしてください。

CtrlとCapsLockを入れ替える例

Ctrlと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

Scancode Mapはバイナリ値になっています。
値の意味は次のようになっています。

00,00,00,000x00000000バージョン番号
すべて0
00,00,00,000x00000000フラグ
すべて0
03,00,00,000x00000003マッピングを設定する個数
マッピング2つとNULL終端を合わせて3
1D,00,3A,000x001D 0x003Aマッピング1
左CtrlをCapsLockに変換
3A,00,1D,000x003A 0x001Dマッピング2
CapsLockを左Ctrlに変換
00,00,00,000x00000000NULL終端

※3を表すのに00,00,00,03ではなく03,00,00,00となっていることに違和感を感じる人もいるかもしれません。エンディアンの関係でDWORD値はこのように記述するようです。

マッピングのところは2つのWORDに分割し、1つ目のWORD値のキーを2つ目のWORD値のキーにマッピングするという風に読みます。例えば、

1D,00,3A,00

の場合は次のようになります。

1D,000x001D29左Ctrl
3A,000x003A58CapsLock

ちなみに、変換後のキーを00,00とすることで、そのキーを無効にすることもできます。

例えば、

1D,00,00,00

とすることで、左Ctrlを無効にできます。

スキャンコード

スキャンコードはキーボードのキーごとに割り当てられたコード番号になります。いくつかピックアップしてみました。

キーScan CodeキーScan Code
Caps Lock3A,00Enter1C,00
左Shift2A,00右Shift36,00
左Ctrl1D,00右CtrlE0,1D
左Alt38,00右Alt38,E0
Esc01,00F13B,00
F23C,00F33D,00
F43E,00F53F,00
F640,00F741,00
F842,00F943,00
F1044,00F1157,00
F1258,00

※キーボードの配列などによっては表の通りにならないことがあるかもしれません。ご注意ください。
※スキャンコードについてはMicrosoftの技術資料も参考にしてみてください。

リンク

Archive: Scan Code Mapper for Windows
http://msdn.microsoft.com/en-us/windows/hardware/gg463447


こちらの記事はWindowsの使い方というサイトで公開していた内容です。
使用していたレンタルサーバーのサービス終了に伴い移転しました。

コメントを残す

メールアドレスが公開されることはありません。