CapsLockキーをレジストリ設定で無効化する。

MacOSになれていた筆者ですが、
WSL2がいい感じになってきた昨今は、WindowsPCをよく使っています。

そんな中、Windowsならではの悩みが、
CapsLockがいつの間にか作動してしまって、すごく面倒くさいというものがあります。

キーマッピングをいじれるソフトをインストールしても、CapsLockは無効化できるそうですが、
レジストリをいじるほうが、自分にとってはお手軽だったので、この方法を紹介したいと思います。

また、設定してる内容がどういう意味なのかも解説しているので、知識としても参考になれば幸いです。

もちろん、レジストリをいじり間違えると、PCが起動しなくなるなどのリスクもあります。
間違えてしまいそうな人は、やらないことをお勧めしますし、
あくまで自己責任ということで、よろしくお願いします。

設定手順

レジストリ編集をして、CapsLockキーを無効化する手順は以下のとおりです。

  1. レジストリエディター(regedit)を管理者として開く
  2. 「Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout」 を開く
  3. Binary Value(バイナリ値)を新規作成。名称は、「ScanCode Map」とする
  4. 値に、「00 00 00 00 00 00 00 00 02 00 00 00 00 00 3A 00 00 00 00 00」 を入力
  5. PCを再起動する。

regedit起動

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout に、ScanCode Mapを作成

00 00 00 00 00 00 00 00 02 00 00 00 00 00 3A 00 00 00 00 00 と入力

これで完了です。
再起動後、CapsLockキーが無効化されているのが確認できるはずです。

もし、元の設定に戻したい場合、
作成したScanCode Mapを削除して再起動すればOKです。

ScanCode Mapとは

ここからは、設定した内容の意味についても解説していきます。
“ScanCode Map” は、キー入力を別物に変換するための設定マップになっています。

この設定ファイルがあると、
このキーはこれに差し替える~!みたいな設定が書けるものになっていて、中身はバイナリデーターです。

バイナリ値の意味は

ここで記載している設定の意味も知っておくと役に立ちます。
よくわからないものを入力して使うのは不安でしょうから、興味のある方はどうぞ。

記載していたバイナリデーター
4バイトごとに並べるとこうなります。

00 00 00 00 ... header: version
00 00 00 00 ... header: flags
02 00 00 00 ... header: entry count
00 00 3A 00 ... mapping
00 00 00 00 ... null

ヘッダー

最初の12バイト分は、ヘッダーになっていて、
最初4バイトがバージョン、次の4バイトがフラグ、最後がエントリー数を表現している。

versionと、flagsのところは全部ゼロを入れておけば良いようです。
(なのでここは固定でゼロ埋めしておけばOK)

エントリー数は、変換マップの設定個数と、終端nullを含めた数を表します。

今回は、CapsLockについての設定が1つだけなので、
設定1個と、終端nullが1個で、記載すべきはエントリー数は2となります。
(もし、設定を3個書くなら、終端nullと合わせて、エントリー数4とかになります)

2を、4バイト分の16進数で表現するとこうなります。
0x00000002

更にレジストリに記載するときは、
リトルエンディアンで記載するルールなので、
02 00 00 00 となります。(下位バイトから順に記述する)

マッピング設定

ひとつのマッピング設定は、4バイトで表現しますが、
前2バイトが変換前のコード、後2バイトが変換後のコードを示しています。

CapsLockは、0x3A というコードで、
この入力を無効化したいので、0x00に変換するという設定を書きます。

4バイト分の16進数で表現するとこう。
0x003A0000

前2バイト(変換前コード)を、後ろ2バイト(変換後コード)に変換したいという意味。
(0x003A → 0x0000)

で、こちらも記載するときは、リトルエンディアンになるので、
下位のバイトから記述していき、00 00 3A 00 と記載しているわけです。

終端NULL

最後は、データーの終了を示す終端NULLとして、4バイトのゼロ埋めしています。
これは、データーを終わりを示すためのものです。

まとめ

これで、CapsLockに困らされることもなくなります。
意外と簡単に設定ができて、
このキーとこのキーを入れ替えたいみたいなこともできますよね。
(ややこしくなるのでやらないほうがいいと思うけど・・)

ScanCode Mapの詳細については、
マイクロソフトのドキュメントを見てもらうのが一番良いかもしれません。

Configuration of Keyboard and Mouse Class Drivers - Windows drivers
Non-HID keyboards and mice can connect over multiple legacy buses but still use the same class driver.
タイトルとURLをコピーしました