はじめに
この記事は、農工大 Advent Calendar 2024 14日目の記事です。
この記事で紹介されている内容を試す際は自己責任でお願いします!
この記事の内容を実行したことによって生じた損害等の一切の責任を負いかねますのでご了承ください。
導入
皆さんは、無変換キーを使ったことはありますか?
このキーに機能を割り当てられるゲームをやったことがない1ので、私はないです。
そのくせ、WASDキーに指を置くときかなり押しやすい位置にあるのがむかついたので、別のキーで置き換えてみました。
環境
OS: Windows 11
キーボード: Logicool G512 日本語配列
序文
この記事を書くまでは知らなかったんですが、なんか AutoHotKeyでもできる らしいです。(!?)
自分の環境ではなぜか動作しなかったので、本文では Scancode Map をレジストリエディタで書き換えてキーを置き換える方法を紹介しようと思います。
本文
① 編集するレジストリを探す
お好きな方法でレジストリエディタを開きます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
を探します。(Keyboard Layouts
もあるので注意!)
Keyboard Layout
直下に Scancode Map
という バイナリ値 を作成します。
② Scancode Map
を編集する
これをフォーマットに沿って分解すると、次の図のようになります。
Scancode Map
内の値はすべてリトルエンディアンで表されます
番号 | サイズ(Byte) | 値の説明 |
---|---|---|
① | 4 | バージョン情報 すべて0 |
② | 4 | ヘッダー すべて0 |
③ | 4 | ④スキャンコードマップ の数+1 |
④ | 4×n | スキャンコードマップ |
⑤ | 4 | 終端 すべて0 |
スキャンコードマップは、 (割り当てたいキーのスキャンコード(2 Byte)) (実際に押されるキーのスキャンコード(2 Byte))
というフォーマットで表されています。
上の画像④内の 36 00 7B 00
という部分を例にすると、右Shift 36
のスキャンコードを 7B
すなわち無変換キーにマップするということになります。
また、動作してほしくないキーは、割り当て先を 00 00
にすることで無効化することもできます。実際に、上に示した画像の④ 1~4バイト目を参照すると、00 00 52 E0
となっています。私はこのマップでInsertキーを無効化しています。
日本語キーのスキャンコードそのものについては、参考資料に置くWebページが詳しいです。私が実際にマップする際には、 Set 1
を参照したところうまくいきました。
おわりに
私はこれで無変換キーを右Shift、カタカナ/ひらがなキーを BackSpace、変換キーを Enter に割り当て、そしてInsertキーを抹消して快適な人生を送っています。
参考資料
Japanese Keyboard (layout and scancode)
-
探せばいくらでもありそう ↩