2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windowsでキーを別のキーに置き換える方法

Posted at

はじめに

この記事は、農工大 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 がこちらです。
image.png

これをフォーマットに沿って分解すると、次の図のようになります。
image.png

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)

  1. 探せばいくらでもありそう

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?