読者です 読者をやめる 読者になる 読者になる

PowershellでWindowsのCapsLockキーをCtrlキーに変更する

Windowsのキーマッピングを変更するためには、専用のソフトを使うかレジストリを変更すれば良い。

今回は参考サイトの記載をもとに、Powershellを用いて、レジストリを編集し、CapsLockキーをCtrlキーに変更する

環境

もの 詳細
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,` # header version[4byte] 
0x00,0x00,0x00,0x00,` # flags[4byte]
0x02,0x00,0x00,0x00,` # エントリ数(terminateを含んだ数)
0x1D,0x00,0x3A,0x00,` # CapsLock(00 1D)を左ctrl(00 3A)のキーへ変更
0x00,0x00,0x00,0x00 ` # terminate (終了)
) -type binary

注意点

CPUによって、リトルエンディアンビッグエンディアンかが異なるそうなので、環境によっては読み替える必要がある。

参考

  1. 「Caps」と「Ctrl」の入れ替え
  2. WindowsでCapsLockにCtrlを割り当てて元のCtrlはそのままにする - アインシュタインの電話番号
  3. 碧落 - キーボード配列をWindows上で変更する
  4. Windows Vista/XP/2000/NT4.0のキー配列の変更方法
  5. レジストリアクセス(3) - PowerShell Memo
  6. バイトオーダ - ビッグエンディアン/リトルエディアン

感想、その他

  • キーコードがわかればいろいろ遊べそうな気はする。
  • Powershellのコマンドに連想配列でパラメータを渡せそう(分配演算子)なので、後で調べてシェルを書き換えてみるかもしれない。

*1:どうもCPUの種類によってバイナリの読み方が異なるそうなので、一応記載した。Intelはリトルエンディアンで読むらしい