IBM 5576-002キーボードをWin10で使う
IBM PS/55の002型キーボード(5576-002)をWindows 10 x64上で使うためのinfファイルを作ってみた。まあ、レジストリを変えれば済むことなんだけども。
- CELLA.DAT
- https://radioc.web.fc2.com
概要
IBM パーソナルシステム/55 002/003型キーボードをWindows 10のデバイスマネージャー
でデバイスとしてインストール・認識させるためのinfファイルを作成します。Windowsに
標準でインストールされているkeyboard.infから作成した差分パッチです。
レジストリを変更すれば済むことなのですが、ドライバの再認識で設定が戻ってしまい不
便なので、これを作りました。
靖間 誠 氏作の5576AX.infを参考にしながらWindows 10のkeyboard.infをベースに作成し
ました。Windows Vista/7/8でも同様に使えそうですが、動作環境がなく未確認です。
Windowsとスキャンコードとの関係について
5576-002には6つのスキャンコードセットが用意されている。
5576-002のスキャンコードセット2(02h)は英語環境(PC DOSの英語モードなど)での使用が想定された動作モードで、漢字キーは左ALTキー、無変換キー、変換キー、ひらがなキーがスペースキーとして扱われ、日本語配列のために追加された半角・全角キーと¥キーはダミーコードとしてシステムで無視される(Windowsではビープ音が鳴るので注意)。日本語(JIS)配列特有の記号キーの入替については、英語101キーボード上の表記に対応するキーのスキャンコードが送られる。つまり、スキャンコードは英語101キーボードとして振る舞うので、DOSの英語環境でもそのままキーボードの表記通りに入力できる。リセット時はこのセットが使われる。
5576-002のスキャンコードセット 82hはOS/2日本語版のために用意された動作モードで、形式はスキャンコードセット2をベースに日本語環境特有のキーに対応したものになっている。記号キーは英語101キーボードのキーの並びそのままにスキャンコードを割り当てたものになっている。
5576-A01(日本語106キーボード)はスキャンコードセット2に対して、英語101キーボードをベースに日本語配列で追加されたキーだけに固有のスキャンコードを割り当てている。見方を変えると、キーボードの設計者からすれば101キーボードから最小限の設計変更で日本語配列のキーボードを開発できることになる。ただし、記号の割り当てはJIS配列準拠で101キーボードと異なるため、DOSの英語環境では日本語キーボードドライバがないと記号がキーの表記通りに入力できない。
002のスキャンコードセット82hとA01のスキャンコードセット2は同じようで少し違うのが厄介なところ。ここでWindowsの話に戻すと、その違いに対応するのがkbdibm02.dll、だと思う。
kbdibm02.dllはユーザーモードで動くドライバなので、ここではキーボードを制御することはできない。キーボードのカーネルモードドライバに相当するi8042prt.sysには5576-002専用に用意された初期化ルーチンがある。レジストリでOverrideKeyboardType=7、OverrideKeyboardSubtype=3をセットすることによってこのルーチンが有効になり、キーボード初期化時にスキャンコードセットが82hにセットされる。これによって変換キーなどが使えるようになる。
なお、5576-002は一部のロットでコードセット3のスキャンコードの割り当てが異なるものがある。コードセット82hを使うWindowsには影響ないと思うが、実物で確認できないので不明としておく。