Windowsのキーボードの割当を変更する方法としては色々存在します。Microsoftの公式ソフト「マイクロソフトパワートイズ」などがありますが、これらはアプリをインストールしてバックグラウンドで実行させて置く必要があります。
裏でアプリを実行せずとも、インストール不要で恒久的に書き換えることができます。
今回はWindowsの設定(レジストリ)そのものを書き換えて常にキーボードを変更する方法を紹介します。
レジストリを書き換える
Windowsの設定はレジストリという領域の値を書き換えることで変更可能です。
Scancode Mapと言われる設定を追加することでキーボードの入力と出力を変更できます。
直接レジストリを変更する必要はありません。メモ帳などのテキストエディタで変更内容のスクリプトを作成して、.reg
の形式で保存・実行してWindowsを再起動すれば書き換わります。
これはPgUpを左矢印に、PgDnを右矢印へ変更するスクリプトコードです。
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,4B,E0,49,E0,4D,E0,51,E0,00,00,00,00
これらは基本的に「"Scancode Map"=hex:
」以降の数字の羅列だけを変更します。
このスクリプトコードを.reg
として保存して実行・Windowsを再起動すれば恒久的に書き換わります。
Scancode Mapの構造を解説
"Scancode Map"=hex:
以降の数字の羅列は4byteずつの構造となっています。なので4つごとに区切るとわかりやすいです。
00,00,00,00, //ヘッダー:バージョン(すべて0)
00,00,00,00, //ヘッダー:フラグ(すべて0)
03,00,00,00, //ヘッダー:マッピング数、変更したいキーの数+1を記入
4B,E0,49,E0, //自由にキー割り当て、1つごとに 4 byte
4D,E0,51,E0, //自由にキー割当
00,00,00,00 //Null 終わり、00で埋めておく
これらの値はすべてリトルエンディアンといって逆向きにデータを入力しています。
例えば”03,00,00,00,”は本来”00 00 00 03″を表しており、3のことです。
記述方法
自由にキー割当の構造は、キーボードに割当られた2byteの”Scancode”と呼ばれるものを「変更後のキーである出力キー」「変更前のキーである入力キー」となるように2つ並べています。
Scancodeの一覧は最後に掲載しておきます。
「4B,E0,49,E0,」はE0 4Bが←を表しており、E0 49がPgUpとなっています。先ほど説明したようにリトルエンディアンというルールにしたがって、E0 4Bの←は4B,E0,と入力されます。
このような構造で変更したいキーにつき1つずつ追加していきます。
「上のヘッダー:マッピング数」の箇所には追加したキー変更の数に1を足した数値を16進数で入力します。例えばこの場合は2つ変更しているので3を「03,00,00,00,」と16進数のリトルエンディアンで入力しています。
「0A,00,00,00,」となります
Scancodeの一覧
準備中…
Copilotキーは不明
今のところ、私が調べた限りではCopilotキーのScancodeは不明です。
コメント