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
Scancodeについて
肝心なキーマッピングはScancodeと呼ばれる値を利用して作ります。このScancodeが対象のキーを示す値です。
全てのキーにはScancodeが設定してあり、その値を使って変換前と変換後のキーマッピングを作ります。
先程のパターンを例に説明します。
BackspaceキーのScancodeは0x000E(2byte)、InsertキーのScancodeは0xE052(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単位で入力。設定値は異なりますが、以下の画像を参考にしてください。
注意点として、入力する値はリトルエンディアンになります。
コンピュータが複数個のbyteを扱う場合、そのbyteを並べる順番にルールがあります。これはバイトオーダ(byte order)とも呼ばれていて、大切な知識になります。エンディアン (endian) の概念2byte以上から構成される数値を並べる時、そのbyteを最上位から並べるか最下位から並べるかのルールです。よくメモリにデータを配置する場合を例に説明されてますが、あくまでルールなので、メモリに限った話ではありません。また、1byteのデータを扱ってる分には関係なく、2byte...
つまり、先程の設定値である、
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
になります。
頭に?が積み重なった人は簡易ソフト使うの推奨。
管理人の設定値
僕はこんな感じの設定を使ってます。
変換前 | 変換後 |
---|---|
Insert | Backspace |
CapsLock | F14 |
ScrollLock | CapsLock |
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を活用してます。
みなさんのお気に入りのIMEは何ですか? 僕は古来よりGoogle 日本語入力を使ってます。この頃はMicrosoftの標準が絶望的に終わっていて、Google 日本語入力を導入するのが当たり前でした。Google 日本語入力はGoogleの天才エンジニアが業務の合間に作ったらしい。凄すぎる...この記事はIMEの設定を自分好みに変更して最高の環境を手に入れようって話です。他のIMEでも同じような設定が存在するので、項目を探すと幸せになれるかも。文字入力はPCで最も利用す...
あとがき
Insert邪魔すぎだろ。もっと謙虚な位置に作れよ。
NumLockとかも嫌われてそう。
この記事は参考になりましたか?
コメント