CORY's twilight zone > 98備忘録 (tips) > Windowsキーボードの配列を入れ替える

Windowsキーボードの配列を入れ替える

since 2003.04.20 / CORY

パソコンは使う人によって用途が様々ですが、昔からパソコンを使っている人は、CTRLキーを多用するかもしれません。Unix系OSでは常用しますし、Windows でも文字列の編集や上書き保存、ファイルを開く、検索など、様々な機能が標準で割り当てられています。

また、Windows95 / NT 4.0 以降が標準搭載されたパソコンのキーボードには、Windows キー(Windowsのロゴマークが表示されたキー)が付くようになりました。Windows 特有の機能を呼び出すショートカットキーが割り当てられており、使い慣れると便利な場合もありますが、押しやすい位置に配置されていることから、他のキーを割り当てたいとか、誤操作するため無効にしたいという場合もあるかもしれません。

Windows NT4/2000 以降のOSには、キーの位置を入れ替える機能が標準で付いています。これを使うことで、キーボードを使いやすくしてみましょう。

目次

キー配列を変えるには キーの入れ替え・無効化を試す Ctrl と Caps を入れ替える Windowsキーを無効化する Scancode Map の書き方

NEC Direct(NECダイレクト)

キー配列を変えるには

パソコン用キーボードの主なキーの配列は規格で決められており、日本語キーボードはJISやOADGなどで定められています。また、PC-98や富士通FMシリーズの親指シフトのように、メーカーが独自に定めている場合もありますが、一部の例外を除き、文字入力キーはQWERTYと呼ばれる標準的な配列になっています。

一方、文字入力以外に使われるファンクションキーなどと呼ばれるキーは、パソコンの形状などにより配置がまちまちの場合もありますし、特にPC/AT互換機が主流になってからは、Ctrlキーがとても押しにくい位置にあるなど、用途によっては使いにくさを感じている方も居られるでしょう。

キーボードのキーが押された時、キーボードに搭載されているエンコーダという装置が送り出すキーコードをパソコン側で受け取り、OSのキーボードドライバが仮想キーコードに置き換え、OSを経由してアプリケーションソフトに渡されます。つまりキーボードエンコーダかキーボードドライバに手を加えればキー配列を自在に変えられますが、ここを変えるのは大変です。

そこで、Windows OS が標準で備えている機能を使い、キー配列を入れ替える方法を試してみましょう。

キーの入れ替え・無効化を試す

Ctrl と Caps を入れ替える

まず簡単な所で、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キーを無効化する方法。同じ要領で、下記の内容をレジストリに登録します。

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 がすでに登録されている場合は、上書きされるので、注意してください。

【参考】

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

また、各行の最後に付いている \ 記号は、この行は次に続くよという意味です。よって、最後の行には \ を付けません。

(PNG 12KB)

要はこんな感じでキー配列を変更できるので、慣れれば難しくありません。なお、削除する際はレジストリエディタを起動(ファイル名を指定して実行 → regedit を起動)し、Scancode Map の値をまるごと削除すれば、元に戻ります(右図)

キーボードスキャンコード一覧

キースキャンコードは、OADGテクニカル・リファレンス(ハードウェア)付録A「キーボード配列と走査コード」に載っている、走査コード(Scan Code) ・セット1 に示される Make Code を参照…と書いていましたが、そのOADGの資料配布が有料化されている事に気づきました。以前は無料で配っていた物なんですけどねぇ。

ちょっと探してみたら、OADG109スキャンコードこの一覧が分かりやすそうです、ご参考にどうぞ。(Scancode Map には、Scan code 1 の Make code を指定します。)


改版履歴

2012.06.28
「Windowsキーボードの配列を入れ替える」に改題
2003.04.20
初版(Windows キーの上手な使い方)

更新日 : 2012年07月05日 (7803)

CORY's twilight zone > 98備忘録 (tips) > Windowsキーボードの配列を入れ替える


« 短絡線 »
[ CORY's twilight zone | PC-98, FreeBSD(98), Mac OS X, Android | 鉄道・街 | 自然 | flickr | twitter (log) | YouTube | Contact ]

Copyright © 1996-2017 CORY / ISAKA Yoji. Some rights reserved:
Creative Commons Attribution-Share alike 2.1 Japan.