Windowsのキーマッピングを変更するためには、専用のソフトを使うかレジストリを変更すれば良い。
今回は参考サイトの記載をもとに、Powershellを用いて、レジストリを編集し、CapsLockキーをCtrlキーに変更する
変更履歴
2019-03-16 シンタックスハイライト追加と、解説用のコメントをはずしてコピペで実行できるように変更 2020-03-08 スキャンコードの指定順序の説明が誤っていたので修正
環境
もの | 詳細 |
---|---|
CPU | Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz*1 |
OS | Microsoft Windows 8.1 Pro (6.3.9600) |
Powershell | 4.0 |
実行例
# CapsLock(00 1D)を左ctrl(00 3A)のキーへ変更 > Set-ItemProperty ` "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout" ` -name "Scancode Map" -value (` 0x00,0x00,0x00,0x00,` 0x00,0x00,0x00,0x00,` 0x02,0x00,0x00,0x00,` 0x1D,0x00,0x3A,0x00,` 0x00,0x00,0x00,0x00 ` ) -type binary # バイトの意味は上から以下の通り # header version[4byte] # flags[4byte] # エントリ数(terminateを含んだ数) # CapsLock(00 3A)を左ctrl(00 1D)のキーへ変更 # terminate (終了)
注意点
CPUによって、リトルエンディアンかビッグエンディアンかが異なるそうなので、環境によっては読み替える必要がある。
参考
- 「Caps」と「Ctrl」の入れ替え
- WindowsでCapsLockにCtrlを割り当てて元のCtrlはそのままにする - アインシュタインの電話番号
- 碧落 - キーボード配列をWindows上で変更する
- Windows Vista/XP/2000/NT4.0のキー配列の変更方法
- レジストリアクセス(3) - PowerShell Memo
- バイトオーダ - ビッグエンディアン/リトルエディアン
感想、その他
- キーコードがわかればいろいろ遊べそうな気はする。
- Powershellのコマンドに連想配列でパラメータを渡せそう(分配演算子)なので、後で調べてシェルを書き換えてみるかもしれない。