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?

More than 3 years have passed since last update.

Windowsでキーマップを変更する

Posted at

Windowsでキーマップを変更する

  • Windows PC でキーマップを変更するためのメモ
  • PC は Windows 10 Home
  • 本ページではレジストリエディタを用いたレジストリ設定を記載しています
    • 本ページの内容を参照される際にはすべて自己責任にて実施してください

要件 ( やりたかったこと )

  • キーボード上のキーマップを変更 ( CapsLock を 追加の Ctrl として使う みたいな設定を行う方法のメモ )
  • 追加のソフトウェアは使用しない ( OSの機能のみで実現したい )

変更方法

レジストリの設定を作成して変更する

レジストリの変更方法

準備

レジストリの変更を行うには以下の2つの方法がある
※ 変更を反映させるためには再起動が必要

  • regedit.exe ( レジストリエディタ ) でて入力する
  • regファイルを作成して読み込ませる ( regedit.exe でインポートする )

どちらでやってもそんなに作業量は変わらなさそうだが、今回は regedit で直接入力したほうが楽そうなのでその方法をメモしておく
( reg ファイルは regedit から Export できるので、複数の PC に設定する場合には Export と Inport で対応するのが楽そう )

regedit での設定ファイルの作成

regedit.exe を開き、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard LayoutScancode Map を作成

設定内容の作成

設定内容は以下の内容で構成されるらしい

Start offset (in bytes) Size (in bytes) Data
0 4 Header: Version Information
4 4 Header: Flags
8 4 Header: Number of Mappings
12 4 Individual Mapping
... ... ...
Last 4 bytes 4 Null Terminator (0x00000000)
※ Microsoft社ドキュメント Hardware Dev Center Keyboard and mouse class drivers より引用

説明や内容を見た感じ各値の意味は以下みたいな感じ
また、設定値はリトルエンディアンで記載する

  • Version Information
    • 4byte の all0
  • Flags
    • 4byte の all0
  • Number of Mappings
    • エントリ数 ( nullエントリを含む )
    • 設定内容 ( キーマップの変更 ) のエントリ数 + 1 ( nullエントリ )
  • Individual Mapping
    • 設定内容
  • Null Terminator
    • 4byte の all0

サンプルなどは Hardware Dev Center Keyboard and mouse class drivers にあるので設定内容全体への詳細記法は省略する

Individual Mapping に関して

この項目は以下の手順で作成していけばいい

  • キーボード上のキーを何と入力したいかを決める
    • 今回は既出リンク内のサンプルにもある CAPS LOCK --> Left CTRL key で記載する
  • これをキーコードに直す
    • CAPS LOCK0x3A
    • Left CTRL key0x1D
  • 変更したい内容をキーコードで表すと 0x3A --> 0x1D
  • 上記のキーコードでは 1byte + 1byte = 2byte なので各種設定値の頭に all0 の 1byte を付与して Individual Mapping のバイト数 ( 4byte ) に合わせる
    • 0x003A --> 0x001D ( 2byte + 2byte = 4byte )
    • 今回は変更したいキーのコードが 1byte だったので頭に0埋めしたが、もともと2byteの場合は0埋め不要
  • 上記より作られた値は 0x003A001D
  • これをリトルエンディアンにする
    • 設定値は 0x1D003A00 となる
  • この値が Individual Mapping ( レジストリエディタに入力するときは 0x 無しで 1D003A00 と入力できた )

キーコードに関しては Microsoft Download Center からdoc形式のドキュメントでダウンロードできる
( 検索したところダウンロードリンクしか見つからなかったが、本記事執筆時現在以下のキーワードで検索すると上位に出てきた )
Keyboard Scan Code Specification - Microsoft Download Center

参考

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?