【Windows10】ThinkPad E420 のキーボードレイアウトをレジストリで変更する CapsLock → Ctrl 他

【Windows10】ThinkPad E420 のキーボードレイアウトをレジストリで変更する CapsLock → Ctrl 他

このノートだけではなく、どの 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スキャンコードマッピングの要点

  1. レジストリ
    次の項目に「Scancode Map」という名前でマッピングデータを作成します。名前は何でもいいようですが変える意味もないでしょう。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

  2. データの構成
    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」(ターミネータ)

  3. スキャンコードの取得
    ググれば一覧もありますが、「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