キーカスタマイズ(リマップ) 
2007.04.22.Sun / 23:27 

配列全体の変更と、個別キーの変更とを扱います。これらのカスタマイズ結果はレジストリファイルとして保存可能で、以後はクリックひとつでカスタマイズ可能です。また窓使いの憂鬱がWindows Vistaでは動作しないことを受け、代替策を模索する向きも多いことでしょう。レジストリ書き換え型のリマップはVistaでも可能です(ただし複雑なキーバインドなどは望めません)。




■ 配列全体の変更


 手許にある、いまお使いのキーボードは何配列のものでしょうか? そしてそれに適用している、Windows上でのキーボードドライバーは…? 大抵の場合、(ハード+ソフト)のキー配列というのは、(JIS+JIS)や(ASCII+ASCII)といった具合に一致しており、キートップの刻印通りに入力できるものです。


 しかし、OSをインストールした直後に誤表示・誤認識されるのはよくありがちなことですし、その後の運用でUSBキーボードを接続した結果、配列を変えられてしまうこともあります。LogitechのSetPointに至っては、インストール時に否応無く、キーボードドライバーを上書きしてしまうバージョンもあります(*1)


 ところで、典型的なキーボード配列誤認識の症状としては、次のようなものが挙げられます。

  • 日本語JISキーボードが、英語ASCIIキーボードに誤認識されてしまった場合
    • メールアドレスを入力していて@を押すが、[が入力される
    • 日本語入力に切り替えようとして半角/全角を押すが、`が入力される
    • ディレクトリパスを入力しようとして¥(円記号)や\(バックスラッシュ)を押すが、何も入力されない
    • (を入力しようとしてShift+8を押すが、*が入力される
  • 英語ASCIIキーボードが、日本語JISキーボードに誤認識されてしまった場合
    • @を入力しようとしてShift+2を押すが、"が入力される
    • "を入力しようとしてShift+'を押すが、*が入力される
    • (を入力しようとしてShift+9を押すが、)が入力される

 さていずれにせよ、これらの不具合を解決するには、デバイスマネージャ経由で、キーボードドライバーを正しく指定し直せば良い訳です。ただしひとつ条件があり、この作業が行えるのは、PS/2キーボードを接続している時に限られます(VistaではUSBキーボードだけの環境でも可能のようです)。ご本家Microsoftに、画像入りの丁寧な説明があります(XP用/Vista用)ので、本記事では割愛します。


 ただ誤認識の不具合の度に、面倒な配列変更作業を行うというのも不便です。またUSBキーボードしか無い2000/XP環境では、デバイスマネージャ経由でのドライバー変更は行えません。結局この変更作業とは、使用するキーボードドライバーのDLLファイル(*2)名を、レジストリの該当部分に指定することそのものです。それ故、直接その部分を操作することで容易に変更できますし、またREGファイルとして保存しておくことで、今後はワンクリック+再起動(XPなら再ログオン)で配列変更が可能です。下記の破線内のテキストを、メモ帳などのテキストエディタにコピー&ペーストし、拡張子を.REGとして任意の名前で保存すると良いでしょう。


  1. キーボード配列を日本語JIS配列に変更する
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
    "LayerDriver JPN"="kbd106.dll"
    "OverrideKeyboardIdentifier"="PCAT_106KEY"
    "OverrideKeyboardSubtype"=dword:00000002
    "OverrideKeyboardType"=dword:00000007
  2. キーボード配列を英語ASCII配列に変更する
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
    "LayerDriver JPN"="kbd101.dll"

 ご覧のように、JIS配列に変更するときにはOverride関連の項目も必要ですが、ASCII配列に変更するときには、Layer〜の項目だけで構いません。汎用性を考えると、1.のレジストリを保存し、Layer〜の項目を106/101と書き換えて使い分けると良いでしょう。なお、各項目の詳しい解説はKB102989にあります。


 ところで"kbd101.dll"を適用する場合、日本語入力切り替えは、ASCII配列のAlt+`(JIS配列のAlt+半角/全角)で行うことになります。この2アクションを面倒と感じるならば、"kbdax2.dll"というものもあります。こちらは日本語入力切り替えが右Altの1アクションで可能であり、それ以外は"kbd101.dll"とほぼ同じレイアウト(*3)で、日本でのASCII配列使用者に広く愛用されているようです。


 ただ拙別記事(霧の晴れない東南部)で触れているように、メインキーボード部最下段右半分のキー位置というのはとかく流動的で、私見ながら、右Altが押し易いとは到底思えません。しかし一つのキーボードを使い続けるのなら、それも些細な問題なのかもしれませんね。皆さんは如何思われますか?




■ 個別キーの変更


 リマップの目的は人それぞれですが、圧倒的に多いのはCtrlCapsLockEsc半角/全角の入れ替えで、UNIX系OSの操作が長い人ほど、この変更を好まれるようです。他にJIS配列のスペースキー両脇に控える無変換変換カタカナ ひらがななども、一等地の割には遊休しがちで、代わりに需要の高いEnterShiftCtrlWin半角/全角などに変更されているケースを散見します。


 さて、リマップの方法は、次の2つに大別されるでしょう。


  1. システム常駐型 … 「窓使いの憂鬱」や「猫まねき」など
    利点
    マクロ的に2ストローク割り当てやシーケンス入力が可能
    ・アプリケーションごとに別の割り当てが可能
    ・その他柔軟なカスタマイズが可能
    ・物理的に無いキーもソフト的に設定可能
    欠点
    ・システムに常駐するのでメモリを消費する
    ・アプリケーションなので動作環境(OS)の制限がある
     (e.g. 窓使いの憂鬱がWindows Vistaでは動作しない etc.)

  2. レジストリ書き換え型 … 「RemapKey」(*4)や「ChangeKey」などを補助利用
    利点
    ・Vistaを含むNT系OSでは使い回し可能(共通のレジストリ)
    ・リマップを意識すること無く、透過的に利用可能
    ・レジストリを保存すれば、次回からはソフト不要
    ・物理的に無いキーもソフト的に設定可能
    ・システムへの負担は実質上無し
    欠点
    ・設定によってはログオン不能になり危険
    ・複数キーのバインドに対する再定義は不可
     (常駐型ソフトが重宝される主な理由はこれでしょう)

 本稿では2.のレジストリ書き換え型を扱います。レジストリ改変時のお約束として、不用意な値操作は重大なシステム障害を招く可能性がありますので、各自のスキルと責任においてご利用ください。また、今回は特にキー配列変更というカスタマイズの性質上、共用や社有のPCにおける無断改変は絶対に避けるべきです。


 さて、早速どちらかのソフトを起動してみましょう。なおVista環境では、実行ファイルを右クリック ⇒ 管理者として実行 を選択し、権限を昇格させる必要があります(重要)。操作手順はRemapKeyなら、下段のリマップされるキーに、上段のリマップしたいキーをドラッグアンドドロップし、ファイル ⇒ 保存して終了 ⇒ 再起動 です。ChangeKeyなら、リマップされるキーをクリックすると、もう一つキーボードウィンドウが表示されますので、リマップしたいキーをクリック ⇒ 登録 ⇒ 現在の設定内容で登録します ⇒ 再起動 です。


RemapKey 起動図  ChangeKey 起動図


 なお、両者ともレジストリ書き換えのフロントエンド、つまり視覚的・直感的に操作を解り易くした、登録代行ツールとして動作しているに過ぎません。よって設定を登録した後は、該当部分をREGファイルとして書き出しておけば、今後はこれらのツールを使わずとも直接カスタマイズ可能で、これは先の配列変更の時と同じです。また、レジストリ変更を反映するためには、再起動が必要です。


  • リマップ例: 無変換左Winに、変換Backspaceに、カタカナ ひらがなDelete
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
    "Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,53,e0,70,00,5b,e0,7b,00,\
      0e,00,79,00,00,00,00,00



■ カスタマイズ結果の統合保存および再導入


 前述2か所のレジストリ項目は、1つのREGファイルに統合して、%SystemDrive%(Windowsをインストールしたドライブ)以外の任意の場所に、任意の名前でバックアップしておくと良いでしょう。REGファイルとして認識させるためには、テキスト1行目に"Windows Registry Editor Version 5.00"や"REGEDIT4"(小文字不可)の記述をお忘れなく。


 このファイルが最も活躍するのは、クリーンインストール直後でしょう。レジストリ内容をシステムに統合し、カスタマイズを反映させるには、単純にファイルをクリックして、統合確認のダイアログに答えるもよし。BATファイルに "REGEDIT.EXE /S KeyLayout.REG" と書いて、サイレント実行するもよし。貴方次第です(KeyLayout.REGは保存時の任意の名前でフルパスで記述のこと)。




■ その他のリマップ方法


 究極の方法としては、土台となるDLLファイルを、直接自分の好みに書き換える手段もあります。ですが手作業で行う方法は、バイナリーエディターやスキャンコード(*5)の知識が必要なうえ、WFPをオフにするかセーフモードにしてファイルを置き換える必要があり、幾分イリーガルな方法で、万人にはお薦め出来ません。


 正統的には、Microsoft純正のキーレイアウトDLL作成アプリケーションMicrosoft Keyboard Layout Creatorを利用します。Windows Vistaにも対応した、最新のVer.1.4が適当でしょう。使用方法や作成したDLLの適用方法などはマニュアルに詳しく、英語とはいえ平易な文章ですので、そちらを参照すると良いでしょう。


Microsoft Keyboard Layout Creator 起動図




(*1)
SetPointはLogitech(Logicool)の入力機器ドライバー兼ユーティリティーです。Ver.3.10頃まではインストール時に、[キーボードドライバー|マウスドライバー|その両方]を選択出来たのですが、それ以降のVer.ではこの選択肢が無く、否応なくキーボードドライバーが更新されてしまいます。SetPointが日本語版で日本語を選択した場合はJIS配列に、多言語(英語US)版で英語などを選択した場合はASCII配列に、再起動後それぞれ変更されてしまうようです。

(*2)
%SystemRoot%\system32\kbd*.dll(*は各レイアウトの名前)がキーボードドライバーです。日本語JIS 106/109なら"kbd106.dll"か"kbd106n.dll"、英語ASCII 101/104なら"kbd101.dll"です。ちなみに106と106nの違いは、日本語入力時のローマ字入力/かな入力の切り替え方法で、106ではCtrl+Shift+カタカナ ひらがな、106nではCtrl+CapsLock 英数です。更にMS-IMEではAlt+カタカナ ひらがなとなっているため、両者の違いを意識することは無いのが現状でしょう(ATOK etc. 要検証)。

(*3)
右Ctrl(Scancode=0xE01D)がカタカナ ひらがなになっており、右Ctrlは元から存在しません。ASCII配列を自覚的に使おうとする人には、カタカナ ひらがなはそもそも不必要でしょうから、次セクション■ 個別キーの変更の手法で、左Ctrlや好みのキーにリマップすると良いでしょう。またこの"kbdax2.dll"では、Alt+`による日本語入力切り替えは出来ません。

(*4)
MicrosoftのResource Kitに収録されたため、作者のサイトからは入手できなくなりました。現在 Windows Server 2003 Resource Kit Tools(11.8MB) がフリーでダウンロード可能で、その中に同梱されています。

(*5)
MicrosoftのWHDC内のサイトからスキャンコード表 Keyboard Scan Code Specification(2.4MB doc形式) がダウンロード可能です。またChangeKeyの調査モードでは、押下したキーのスキャンコードをリアルタイムに表示可能で便利です(ただし日本語106/109配列での解釈表示を前提としています)。

テーマ:パソコン豆知識 - ジャンル:コンピュータ
COMMENT TO THIS ENTRY
----

176Lu さま
本当にありがとうございました、助かりました。当方i8042prtなんて聞いたこともなかったんです。

でその後、解決しました。
「i8042prt サービス」で検索した下記の内容が当方にも当てはまりました。
http://do-gugan.com/~furuta/archives/2006/01/windowsxpps2.html

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt]
"Type"=dword:00000001
ここの値が4になっていたのです。

でも原因が分からないんですけど。

あと、うちのLogitechコードレスクリックプラスが最近おかしくなってまして時間の都合がつけば書いてみようと思ってます。その際はまたご教示頂ければ!

- from Everyday People -

--幸せの青い鳥は…--

こんにちは。ともあれ問題解決おめでとうございます。

> でも原因が分からないんですけど。

ホント、最初にドライバが変わったきっかけは何だったんでしょうね。ところでご自身のブログに最初に書かれているKB418323に、そのものズバリの答えがあったのに、結局私ってば問題を引っ掻き回しただけで直接お役に立てていないような…。それにしても幸せの青い鳥はやはり一番身近に在るものなのですね。

Logiマウス/トラックボールも気が付けば15個を数えるまでになりましたが、盲点と言うか、CordlessClick!Plusは未所有です。中堅機種ながら、巷では割と評判が良いようですね。どのようなトラブルか判りませんが、いつの日かお役に立てれば幸いです。

- from 176Lu -

  Secret Comment(非公開コメント)
キーカスタマイズ(リマップ)のトラックバックURL

この記事にトラックバックする(FC2ブログユーザー)

Windows用の106/109キーボードだと、Caps LockがAの左に、C
2009.05.20.Wed .No1 / プラスα空間 / PAGE TOP△

プロフィール

Author: 176Lu


リンクはご自由に。詳しくは「はじめにお読みください」の記事を。

ブログ内検索

メールフォーム

Name:
Mail:
Subject:
Comment:


Copyright 2006-2009 Moonlight Cafe All rights reserved.