キー入力をカスタマイズする方法 (Scancode Map)

Windowsのキー入力をカスタマイズする方法 (Scancode Map)

※ 当サイトは広告を含みます。

Windowsのキーマッピング(Scancode Map)を変更してキー入力をカスタマイズする方法です。
この方法を利用すると、あるキー入力を別のキー入力に変更、または入力を無効にすることができます。

管理人

いくつか誤爆してキレるキーがあるじゃない?

りさ

Insertとか?

管理人

そういう邪魔なやつを消します。

設定方法

レジストリを操作してカスタマイズします。なので、誤った操作をしないように注意しましょう。
実はこの設定を簡易的にやってくれるソフトウェアは色々あります。ただ、どうせ行き着く先はレジストリです。

管理人

レジストリの操作が怖い人は適当なソフト探してください。

設定値を作る

レジストリに設定する値はバイナリ値です。簡易ソフトウェアを使った場合も、この値を書き込んでるだけ。
ぱっとみ何してるのか分からないと思いますが、結論として次のような設定値を作ります。


0x00000000, 0x00000000, 0x00000002, 0xE052000E, 0x00000000

これはInsertキーBackspaceキーに変換する設定値です。いくつかルールがあって基本的に1項目を4byteで記述します。
最初の1,2番目と最後は0x00000000で固定値、3番目が後続する項目の数。今回は2個あるので0x00000002です。
そして、4番目がキーを入れ替えるマッピング値を示す値です。入れ替える対象が複数あるなら、複数個を続けて書きます。

よって書式は以下です。後続する個数は最後の値を含むため、必ずキーマッピング数 + 1になります。


0x00000000, 0x00000000, {後続する個数}, {キーマッピング} x n個, 0x00000000

参考サイトhttps://learn.microsoft.com/en-us/windows-hardware/drivers/hid/keyboard-and-mouse-class-drivers#scan-code-mapper-for-keyboards

Scancodeについて

肝心なキーマッピングはScancodeと呼ばれる値を利用して作ります。このScancodeが対象のキーを示す値です。
全てのキーにはScancodeが設定してあり、その値を使って変換前と変換後のキーマッピングを作ります。

先程のパターンを例に説明します。

BackspaceキーScancode0x000E(2byte)InsertキーScancode0xE052(2byte)です。
キーマッピングは、変換前を上位2byte、変換後を下位2byteとしてまとめて記述します。
なお、変換ではなく無効化したい場合、変換後の下位2byteに0x0000を指定します。


E0 52 00 0E

結果的にキーマッピング値はこうなる。


0xE052000E

Scancodeを調べる方法

残念ながら公式に一覧がありません。なので、この辺のサイトを参考に調べます。

参考サイト https://map-scan-code.soncho-works.com/scancode
https://www.ipentec.com/document/windows-key-code-scan-value-and-key-code-map-format#section_01
https://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html
https://hp.vector.co.jp/authors/VA003720/lpproj/others/kbdjpn.htm

管理人

1つ目のサイトはレジストリ設定用のファイルも作れるらしいよ。

りさ

もう、そのサイト使えば良くない?

管理人

それは言っては駄目なやつ。

レジストリに書き込む

作った設定はレジストリの以下に書き込みます。なお、設定の有効化はPC再起動が必要だった気がします。


コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

ここにScancode Mapの名前でバイナリ値を作成。そこに作った設定値を入力します。
また、値は1byte単位で入力。設定値は異なりますが、以下の画像を参考にしてください。

レジストリ設定

注意点として、入力する値はリトルエンディアンになります。

つまり、先程の設定値である、


0x00000000, 0x00000000, 0x00000002, 0xE052000E, 0x00000000


0x00000000, 0x00000000, 0x02000000, 0x0E0052E0, 0x00000000

になり、レジストリエディタの表示に合わせると


00 00 00 00 00 00 00 00
02 00 00 00 0E 00 52 E0
00 00 00 00

になります。

管理人

頭に?が積み重なった人は簡易ソフト使うの推奨。

管理人の設定値

僕はこんな感じの設定を使ってます。

変換前変換後
InsertBackspace
CapsLockF14
ScrollLockCapsLock

00 00 00 00 00 00 00 00
04 00 00 00 0E 00 52 E0
3A 00 46 00 65 00 3A 00
00 00 00 00

この仕組みはキーボードに存在しない値をマッピングすることも可能で、F13とかF14も指定できます。
他アプリと連携する必要はありますが、これを活用すると任意の機能を搭載したオリジナルキーが作れます。
僕の場合はUS配列のキーボードを使ってるので、IMEの切り替えにF14を活用してます。

あとがき

管理人

Insert邪魔すぎだろ。もっと謙虚な位置に作れよ。

りさ

NumLockとかも嫌われてそう。

この記事は参考になりましたか?

👆このブログを支援する

関連記事

コメント

この記事へのコメントはありません。