【Windows】 CapsLockとCTRLの入れ替え

キーボードのCapsLockって使いますか?もちろん、使用する方もいるとは思いますが、SHIFT+キー派な自分にとっては、不意にCapsLock状態になってしまって困ったりするキーです。またEmacs使いである事もありCTRLキーの使用頻度が高いため、従来の左CTRLよりもCapsLockの位置にCTRLキーがあった方が助かるなぁと思うわけです。

CapsLockを左CTRLにする方法ですが、フリーウェアも色々と出ています。
とはいえ、常駐型のアプリを増やしたくないですし、キー入れ替えのためだけのアプリをインストールするのも面倒かな。
キーの入れ替え自体はレジストリを操作する事で実現できますので、ちょくせつ記述しちゃっています。

※ レジストリ操作によるキーマップの変更は危険が伴います。特に誤ったスキャンコードを指定してしまうと、キーボードによる操作ができなくなる可能性があります。十分ご注意の上、自己責任で対応してください。

スキャンコード(キーボードのキーコード)を変更するためにはレジストリエディタで以下のレジストリを操作します。
(レジストリエディタは regedit.exe を起動してください。)

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout

上記場所に右クリック「新規キー」で "Scancode Map" という名前でバイナリデータキーを作成します。
あとはこのキーのバイナリ値を書き込む事で様々なキーマップの変更が可能になります。
データの構成は4バイト単位で

00 00 00 00
00 00 00 00
データ数
入れ替えコード(入れ替え後キー:2バイト 入れ替え対象キー:2バイト)
00 00 00 00

といった形式になります。

折角なので、よく使われるパターンを紹介しておきます。

・CapsLockに左CTRLを割り当てる

00 00 00 00
00 00 00 00
02 00 00 00
1D 00 3A 00
00 00 00 00

・CapsLockと左CTRLを交換する

00 00 00 00
00 00 00 00
03 00 00 00
1D 00 3A 00
3A 00 1D 00
00 00 00 00

・右ALTに変換を割り当てる

00 00 00 00
00 00 00 00
02 00 00 00
64 00 38 E0
00 00 00 00

・CapsLockと左CTRLを交換した上で、右ALTに変換を割り当てる

00 00 00 00
00 00 00 00
04 00 00 00
64 00 38 E0
1D 00 3A 00
3A 00 1D 00
00 00 00 00

3行目のデータ数というのは末尾の「00 00 00 00」も含めたキーマップデータ数のことです。
よって、1キーだけ変更する場合は「02 00 00 00」2キーを変更する場合は「03 00 00 00」になります。
キーコードは2バイトのリトルエンディアンで表現されており、上で使用しているものはそれぞれ

001D  左CTRL
003A  CapsLock
0064  変換
E038  右ALT

となります。
ご参考まで。

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください