CORY's twilight zone > 98備忘録 (tips)[an error occurred while processing this directive] > Windowsキーボードの配列を入れ替える
パソコンは使う人によって用途が様々ですが、昔からパソコンを使っている人は、CTRLキーを多用するかもしれません。Unix系OSでは常用しますし、Windows でも文字列の編集や上書き保存、ファイルを開く、検索など、様々な機能が標準で割り当てられています。
また、Windows95 / NT 4.0 以降が標準搭載されたパソコンのキーボードには、Windows キー(Windowsのロゴマークが表示されたキー)が付くようになりました。Windows 特有の機能を呼び出すショートカットキーが割り当てられており、使い慣れると便利な場合もありますが、押しやすい位置に配置されていることから、他のキーを割り当てたいとか、誤操作するため無効にしたいという場合もあるかもしれません。
Windows NT4/2000 以降のOSには、キーの位置を入れ替える機能が標準で付いています。これを使うことで、キーボードを使いやすくしてみましょう。
◆ キー配列を変えるには ◆ キーの入れ替え・無効化を試す ◇ Ctrl と Caps を入れ替える ◇ Windowsキーを無効化する ◆ Scancode Map の書き方
パソコン用キーボードの主なキーの配列は規格で決められており、日本語キーボードはJISやOADGなどで定められています。また、PC-98や富士通FMシリーズの親指シフトのように、メーカーが独自に定めている場合もありますが、一部の例外を除き、文字入力キーはQWERTYと呼ばれる標準的な配列になっています。
一方、文字入力以外に使われるファンクションキーなどと呼ばれるキーは、パソコンの形状などにより配置がまちまちの場合もありますし、特にPC/AT互換機が主流になってからは、Ctrlキーがとても押しにくい位置にあるなど、用途によっては使いにくさを感じている方も居られるでしょう。
キーボードのキーが押された時、キーボードに搭載されているエンコーダという装置が送り出すキーコードをパソコン側で受け取り、OSのキーボードドライバが仮想キーコードに置き換え、OSを経由してアプリケーションソフトに渡されます。つまりキーボードエンコーダかキーボードドライバに手を加えればキー配列を自在に変えられますが、ここを変えるのは大変です。
そこで、Windows OS が標準で備えている機能を使い、キー配列を入れ替える方法を試してみましょう。
まず簡単な所で、CtrlキーとCapsキーを入れ替えてみます。テキストエディタ(メモ帳でも可)を開き、以下の内容をテキストファイル形式で保存します(Windows Vista/7 では Unicode で保存すること)。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Keyboard Layout] (※)
"Scancode Map"=hex:\
00,00,00,00,\
00,00,00,00,\
03,00,00,00,\
1d,00,3a,00,\
3a,00,1d,00,\
00,00,00,00
※上記はログインしているユーザのみ有効にする場合の設定。全ユーザ共通にする場合(管理者権限が必要)は、この行を [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] に変更する。
このファイルのある場所をエクスプローラで開き、"CtrlCaps.REG" という名前に変えてからダブルクリックし、確認ダイアログが出るので登録し※、Windows を再起動すると、Ctrl と Caps キーが入れ替わっているはずです。
※Scancode Map がすでに登録されている場合は、上書きされるので、注意してください。
次に、Windowsキーを無効化する方法。同じ要領で、下記の内容をレジストリに登録します。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Keyboard Layout] (※)
"Scancode Map"=hex:\
00,00,00,00,\
00,00,00,00,\
03,00,00,00,\
00,00,5b,e0,\
00,00,5c,e0,\
00,00,00,00
※上記はログインしているユーザのみ有効にする場合の設定。全ユーザ共通にする場合(管理者権限が必要)は、この行を [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] に変更する。
このファイルのある場所をエクスプローラで開き、"NoWinKeys.REG" という名前に変えてからダブルクリックし、確認ダイアログが出るので登録し※、Windows を再起動すると、左右の Windowsキーを押しても反応しなくなっているはずです。
※Scancode Map がすでに登録されている場合は、上書きされるので、注意してください。
【参考】
ここで満足された方は以上で終わりです。 さらに Ctrl-Caps の入れ替えと Windows キーの無効化両方したいとか、他のキーも入れ替えたいという方は、もう少々お付き合いを。
まず、上記2つの例をつなぎ合わせてみましょう。
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Keyboard Layout] (※) "Scancode Map"=hex:\ 00,00,00,00,\ ←最初にDWORD2つ分の0を指定 00,00,00,00,\ (頭2行はお約束という事でもいいです) 05,00,00,00,\ ←変換テーブルの数(最後の0だけの行を含む) ↓以下に変換先&変換元キーコードを並べて指定 1d,00,3a,00,\ ← Caps Lock を Ctrl に変更 3a,00,1d,00,\ ← Ctrl を Caps Lock に変更 00,00,5b,e0,\ ← 左Windows キーを無効 00,00,5c,e0,\ ← 右Windows キーを無効 00,00,00,00 ← 最後を示すDWORD1つ分の0を指定(これもお約束)
※上記はログインしているユーザのみ有効にする場合の設定。全ユーザ共通にする場合(管理者権限が必要)は、この行を [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] に変更する。
単につなぎ合わせるのでなく、最初と最後に0だけの行があることや、変換テーブルの数を示す値があることが、分かるかと思います。 また、右側(上位ワード)が変換元、左側(下位ワード)が変換先になることも確認できたかと思います。
なお、各値は16進のリトルエンディアンで記述します。16進で2桁ずつに区切り、上位と下位を入れ替えます。大小文字は区別しません。 例: E05B(左Windows) → 5B, E0
また、各行の最後に付いている \ 記号は、この行は次に続くよという意味です。よって、最後の行には \ を付けません。
要はこんな感じでキー配列を変更できるので、慣れれば難しくありません。なお、削除する際はレジストリエディタを起動(ファイル名を指定して実行 → regedit を起動)し、Scancode Map の値をまるごと削除すれば、元に戻ります(右図)。
キースキャンコードは、OADGテクニカル・リファレンス(ハードウェア)付録A「キーボード配列と走査コード」に載っている、走査コード(Scan Code) ・セット1 に示される Make Code を参照…と書いていましたが、そのOADGの資料配布が有料化されている事に気づきました。以前は無料で配っていた物なんですけどねぇ。
ちょっと探してみたら、OADG109スキャンコードこの一覧が分かりやすそうです、ご参考にどうぞ。(Scancode Map には、Scan code 1 の Make code を指定します。)
更新日 : 2012年07月05日 (4937)
CORY's twilight zone > 98備忘録 (tips)[an error occurred while processing this directive] > Windowsキーボードの配列を入れ替える