一年半程前に、手持ちのUSBキーボードやUSBマウスをPC-9801やPC-9821に接続するための変換器を製作しましたが、変換器の仕様検討やプログラムの検証で実機のキーボードがどうしても必要になり、その際にPC98キーボードを入手しました。 PC-9801のキーボードは作りがしっかりしていて、キータッチの操作感覚は、私的には、今時のUSBキーボードに比べると格段に優れているように思います。キーのクリック音がちょっと大きいのが気になりますが、タッチ感は心地よいものです。 このキーボードを遊ばせておくのも勿体ないので、Windowsでも使えるようにキーボードをUSB化する変換器を製作しました。 ネット検索をしますと同様の製作事例がいくつか見つかります。ホームページで紹介するのも今更という気がしないでもないですが、ソースコード一式、全て公開することにしました。 2.キーボード変換器の製作 2-1.ハードウエア キーボード変換器の製作には、USBマイコンのPIC32MX250F128Bを使いました。USBマイコンであればPIC18でもPIC24でもかまいません。たまたま手元にあったチップがPIC32MX250Fだったからこれを使用したまでです。 回路は、以前に作成しましたUSBキーボードをPC-98に接続するための変換器のものと同一です。USBコネクタをAタイプからBタイプに変更するのと、98キーボードを接続するためのminiDIN-8Pのメスコネクタを取り付けるだけです。 電源はUSBのバスパワー方式としました。USBコネクタのVBUSピンから変換器ならびに98キーボードに電源供給しています。 98キーボードの動作に必要な電流がどれぐらいなのか判りませんが、ネット上の先人の製作例では問題なく動いているようですのでこの方式としました。 PC98キーボードのインタフェース電圧は+5VのTTLですが、マイコンのI/Oは+3.3Vです。本来ならレベル変換回路が必要なのかも知れませんが、レベル変換なしでもうまく動いています。 回路図と完成品の写真です。
2-2.ファームウエア PICマイコンのファームウエアは、MPLAB-IDE で C32 コンパイラを使いC言語で作成しました。 USBドライバー部分については、マイクロチップから提供されている「Microchip Libraries for Applications v2013-06-15」の中の"USB/Device-HID-Keyboard"サンプルデモを使いました。 これにより、面倒なUSB部分の処理を作る必要もなく、98キーボードから送られてくるキーのコードをUSBのキーコードに変換する処理を作成するだけで済みます。 コードの変換もテーブル参照で行いますのでプログラムは簡単です。注意するのは、Capsとkanaキーの処理と、そのままでは、'~' と '`' が表示刻印と入れ替わってしまうことです。 なお、Microchipのサンプルコードのusb_descriptors.c の中にある Report Descriptor の hid_rpt01 については、英語圏での使用が想定されていて、このままでは、'\' や '_'、 'カナ' を入力できませんので一部修正が必要です。 変換器のメインプログラムはこちらのソースコード(main.c)になります。コメントを追いかければ大体の動きが判って頂けると思います。 3.その他 起動時のUSBの接続処理などに不安定なところもありますが、自分用のツールとしては問題ないレベルですので、改良や機能追加などの手を入れる予定はありません。 98キーボードにあるLEDは、キーボード側で勝手に点灯・消灯します。制御することも可能ですが、LEDの点消灯は見た目だけで特に意味もないので処理はさぼっています。
この変換器の基板化の予定はありません。欲しい人はご自分で製作してみてください。
ソースコードは、私的利用に限っては無償です。自由に使ってください、といってもほとんどがMicrochipの提供プログラムですが。
MPLABのProjectFile一式は、こちらとなります。
pc98key2usb_20190724.zip ... 起動時の処理を見直し |