このノートだけではなく、どの PC でもなんですが、必ず「Caps Lock」を「Ctrl」に変更しています。これまでは「Ctrl2cap」というツールを使っていたのですが、今回はレジストリの書き換えで変更しようと思います。
参考サイト:ASCII.jp:CtrlとCapsを入れ替え! Windowsのキー配列をカスタマイズ (1/2)|深厚のWindows使いこなしテクニック
この記事を元に色々調べた結果、下のリンクがマイクロソフトのソースのようです。 記事の中ほど「Scan code mapper for keyboards」が該当する項目です。
Keyboard and mouse class drivers (Windows Drivers)
01スキャンコードマッピングの要点
- レジストリ
次の項目に「Scancode Map」という名前でマッピングデータを作成します。名前は何でもいいようですが変える意味もないでしょう。
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. 4バイト:すべて「00」(ヘッダー:バージョン)
4バイト:すべて「00」(ヘッダー:フラグ)
4バイト:マッピングする数、ターミネータを含みますのでプラス1する(上の例では3)
4バイトを必要な数だけ:マッピングデータ(上の例では 1D,00,3A,00 と 3A,00,1D,00 の2組)
4バイト:すべて「00」(ターミネータ) - スキャンコードの取得
ググれば一覧もありますが、「KT Software – Keymill」というツールもあります。立ち上げてキーを押せばスキャンコードを記録してくれます。下の画像は、Ctrl と CapsLock をクリックしたところです。
02レジストリエディタを立ち上げて…
実際にやってみましょう。「検索」に「regedit」と入れてエンターキーを押せばレジストリエディタが立ち上がりますので、階層を該当項目までたどっていきます。
編集→新規→バイナリ値をクリック、名前を「Scancode Map」とします。右クリック→修正で、マッピングデータを入力していきます。
03CapsLock to Ctrl
00 00 00 00 00 00 00 00
02 00 00 00 1d 00 3a 00
00 00 00 00
再起動すれば反映されます。
レジストリファイルを ausnichts/Scancode-Mapper · GitHub に置いておきます。以下それぞれのファイルがありますのでダウンロードしてダブルクリックすれば読み込まれます。レジストリをいじることになりますので慎重に、そして自己責任でお願いします。
04CapsLock to Ctrl & Ctrl to CapasLock
00 00 00 00 00 00 00 00
03 00 00 00 1d 00 3a 00
3a 00 1d 00 00 00 00 00
05Home to Insert & Insert to Home, End to Delete & Delete to End
今回、Win10 に入れ替えて「あれ?」と思ったのが、右上の4つのキー Home,End,Insert,Delete の挙動です。
思い出しました。そういえば、Delete キーが使いにくいということで、マッピングも変更し、キートップを差し替えたのでした。
これが元々の位置です。画像は価格コムさんから拝借しました。Insert,Delete,Home,End となっています。
入れ替えた現在の位置がこちらです。
で、キートップのようにマッピングし直します。
スキャンコードを調べますと、52,53,47,4f なんですが、それぞれ e0 のプレフィクスがつくようです。*1
00 00 00 00 00 00 00 00
06 00 00 00 1d 00 3a 00
52 e0 47 e0 47 e0 52 e0
53 e0 4f e0 4f e0 53 e0
00 00 00 00