ちょっと Tea Time!?  USB->PS/2変換コネクタの憂鬱(キーボード編) 2025.9.4

ことはじめ
すこし前に作成したCPM80,CPM68KはPCをターミナル(TeraTerm)として動かしていますが、
モニタ―とキーボードも専用のものを作ろうと考えています。いわゆるオールインのMZ80化です(古いなあ〜。

モニターは800x480ドットの7インチWVGAをつかって80x24のキャラクタ表示をさせます。
キーボードは小型のPS/2出力のものをつかって、RS232信号に変換させる予定です。

モニターについては、すでに部品の調達も終わっているので、次はキーボードです。
PS/2出力の小型のキーボードがみつからなかったので、小型のメカニカルキーの
USBキーボードを購入です。


メカニカルタイプのUSB-Cのキーボードを購入です。61キーで日本語キーボードと少し配列が異なります。

ついでに、USB->PS/2変換コネクタも購入です。この変換コネクタですが、AMAZONで
購入です。この手の変換コネクタの評価をみていると、動かないレビューが沢山あるので、
少々高いですが、1個500円のものを購入です。


USB->PS/2のコネクタも購入です。意外と高かった!

実はこのコネクタには、間違った思い込みがあることがわかりました。
コネクタの内部にはUSBの信号をPS/2の信号に変換するICがはいっているはず
という思い込みです。

どんなICが入っているのか興味があったのですが、恐らくバラした人がいるに違いないと
ネットを検索したらでてきました。その結果は、唖然です。
この手のコネクタは、単純な物理変換コネクタというだけです。
すなわちICなんか入ってなくて、単にUSBとPS/2コネクタを結線しているだけです。


引用:ABCDEFG・大人の分解遊戯・USB-PS/2変換コネクタの分解

USBとPS/2では通信プロトコルがまったく違いますが、どうやら信号線がUSBなのか
PS/2なのかをマウスあるいはキーボード側で識別して、送受信で通信プロトコルを
切り替えるようです。

であれば、変換コネクタで動くものがあったり、動かないものがあったりというのも
納得です。すなわちUSBとPS/2の両方の通信プロトコルにマウスやキーボードなどが
対応していなかったというだけのことです。それを変換コネクタの不具合と思い込んでしまって
評価(レビュー)がなされていたのでしょう。
 もっとも、物理結線が不十分な粗悪品をつかまされた人もいるでしょうが。

ちなみに、USBとPS/2との結線の違いは、USBがD+、D-信号線はプルダウンされているのに対して
PS/2はオープンコレクタ出力でプルアップがされているので、初期の信号線の信号レベルをみれば
容易に判別できるでしょう。

ということは、変換コネクタを買ってからわかりました。

やはり物理変換コネクタでした

500円もの大枚をはたいて購入した変換コネクタでしたが、入出力のピンの導通を測定してみたら、
見事にテスターから「ピー」という音がします。やはり、購入したものは単なる物理変換コネクタでした。

キーボードはPS/2に対応していない

変換コネクタについては物理変換コネクタであることがわかりましたが、次の期待はキーボードが
PS/2に対応しているかどうかです。そこで、PS./2入力可能なマイコンとして、久しぶりにIchigoJamに接続です。
モニターを接続するのは面倒だったので、キーボードの信号がでているかどうかでチェックです。
まずは、PS/2出力のキーボードを接続して、信号が送られてくることを確認です。
次に、今回購入したUSBキーボードに変換コネクタを接続してIchigoJamに接続です。


IchigoJamに接続して、キーボードから信号がくるかどうかを調べましたが、無反応でした。
キーボードがPS/2に未対応のようです。


無反応!!!!


動かないようです。どうやら、このキーボードはPS/2には対応していないようです。

こうなったら直接配線だあ〜!

実は、こういったことも想定してメカニカルキーボードを選択していました。
最悪の場合はキー接点から直接配線して、PICかなにかでRS232信号に変換です。
ということでキーボードを分解して、中身をみてみましょう!

どこから開ければいいのかな?
まずは固定ネジの場所を探します。
どうやら、ネジはキートップに隠れているようでした。


ゴム足を取ってみましたが、ネジが見えません。


キートップをはずすと固定のネジがありました。


都合6箇所のネジで固定されていました。その部分のキートップを外します。


結構部品がいっぱい!

キーボードの裏側をみてみると、部品が結構沢山ついています。
というのも、このキーボードはイルミネーション機能もあって、LEDが各キー毎に配置されていて、
それらが妖艶に光ます。そんな機能は、いらないのだけどなあ〜。


結構部品がいっぱいついています。

基板をみていて面白いのは、ゼロΩのジャンパー抵抗が多数使われています。
両面基板をつかったほうが、コスト的には有利なんじゃ?と思ったりしましたが、
抵抗を実装してでも、片面基板をつかったほうが安いということなのかなあ〜?。
あと、部品点数を減らすためにDUAL DIODEが使われているようです。
これはキーのセンシングのときに必要です。


部品の配置例です。ゼロΩの表面実装抵抗がジャンパー代わりに使われています。

配線はややこしそうだけど、意外と単純だった

最初に基板をみたときに、複雑だなあ〜とおもいました。
もう、全部の部品を外して一から配線してやろうか!
とも思いましたが、そこは一旦落ち着いて基板をよく眺めることに。
すると、下記のような構成になっていることがわかりました。


配線の概略です。実際はもっと多くの配線があります。

押されたキーのセンシングは、COMMON DRIVEを1つづつLOWレベルにして、KEY SENSINGをチェック。
LEDの点灯は、COMMON DRIVEをHIGHにして、LED CONTROLをLOWレベルにします。
このようにすれば、クロス部分のスイッチあるいはLEDのチェックと点灯がそれぞれできます。
コモンドライブが全部で14本、キーセンスが5本、LED制御が5本なので、キーボードとの配線は全部で24本となります。
そのため出力線などを含めると40PinのPICが必要になりそうです。

マトリックス状況を確認

キーセンスとLED制御の行については、キーボードの行に対応しています。
問題は列の構成がどうなっているかなので、調べてみました。
配線を追いかけるのではなく、テスターの導通チェックで調べると簡単でした。


全体のキーの配置です。61キーで日本語キーボードとは、配置もすこし異なります。



マトリックスの列の部分はこんな感じになっていました。裏面側で調べて、反転させて表示させました。


こちらは、裏面側で調べた結果です。


各種情報もわかったことなので、改造にかかりましょう!

PICを取りつけよう!

新しい制御マイコンとしてPICを取りつけます。その前に、不要な部品をとりはずしです。
USBコネクタや既存のICは不要なので取り外してしまいます。
USBコネクタは外部への信号への取り出しに使おうかと思いましたが、細かい作業になるかもしれないので、
思い切って取り外しました。それと、コネクタって意外と長いので邪魔になったりします。


コネクタとICをとりはずす準備です。半田が飛び散ってもよいように養生です。

 
USB-Cコネクタと制御ICの取り外しが完了しました。  

PICはキーボード内に収納するため、そのためのスペースを確保です。
ケース内のプラスチックの一部を削除です。この場所にPICを収めます。

PICが入るスペースを確保です。


PICを両面テープで固定して、配線です。

PICのピン配置の備忘録です。

キーセンス PIC-GPIO コモンドライブ PIC_GPIO
A0(最上位行:数字など) PIN_A0 C0 最左列(ESC) PIN_B5
A1 PIN_A1 C1 (1) PIN_B4
A2 PIN_A2 C2 (2) PIN_B3
A3 PIN_A3 C3 (3) PIN_B2
A4(最下位行:スペースなど) PIN_A4 C4 (4) PIN_B1
C5 (5) PIN_B0
LED制御(390Ω抵抗経由) C6 (6) PIN_D7
B0(最上位行:数字など) PIN_D1 C7 (7) PIN_D6
B1 PIN_D0 C8 (8) PIN_D5
B2 PIN_C3 C9 (9) PIN_D4
B3 PIN_C2 C10 (0) PIN_C5
B4(最下位行:スペースなど) PIN_C1 C11(-) PIN_C4
C12(+) PIN_D3
UART-TX(YELLOW) PIN_C6 C13(BS) PIN_D2
UART-RX(GREEN) PIN_C7

ソフトを組みましょう! 2025.9.5

いまでこそWINやALTキーなどがあるけれど、CPM80の時代ではなかったはず。
これらのキーってどう活用したらいいのだろう?
とりあえずは、押されたキーに対応するコードを送出するようにするだけだけど、
内部制御につかうキータッチを整理です。

(1)SHIFT + CAPSLOCK
 これは定番です。英文字の大文字、小文字の切替です。
 CAPSLOCKがかかったときは、当該のLEDが点灯するようにしましょう。


CAPSLOCK時の点灯です。

(2)FNキー
 右下にFNキーがありますが、これは矢印キーを有効にするトグルスイッチにしましょう。
 WORDMASTERでつかうことを前提とすると
  ↑  : CTRL-E
  →  : CTRL-D
 ↓   : CTRL-X
 ←  : CTRL-S

というコードを送出します。

矢印キーも使えるようにしました。

とりあえず完成

ソフトはそれほどややこしくないのですが、それでも400行程度になりました。
プログラムソース(PIC18F47Q43 CCS-C) ←バグありました。

動作テストのためにUSB-RS232変換アダプタを取り付けて
PCに文字を表示させます。

まずはキーボードの準備ができました。
あとは、本体側の改造だなあ〜。

【備忘録】改造の回路図


回路図です。ほぼPICオンリーです。

キーボード基板に実装されているICは撤去しておきます。
USBコネクタは外す必要はないでしょう。


基板への電源は未実装の電解コンデンサのパターン部分に供給です。



コモンライン(C)の取り出し場所。キーの接点からが半田付けしやすいです。あ、図のC0〜C13は左右が逆だわ!


LEDからのB0〜B4の接続位置。LEDの-側に取り付け。


キーセンス(A0〜A4)の取り出し位置。DUAL DIODEのコモンカソードに接続。
ちょっと小さいけど、接続は簡単でしょう。

ソフトの追加機能

モニターからキーボードの通信速度の変更を追加。

「CTRL」 + [ALT] + [1] : 115200baud
「CTRL」 + [ALT] + [2] : 38400baud
「CTRL」 + [ALT] + [3] : 19200baud
「CTRL」 + [ALT] + [4] : 9600baud
「CTRL」 + [ALT] + [5] : 2400baud
「CTRL」 + [ALT] + [6] : 1200baud

プログラムソース (v1.1) 若干修正
プログラムバイナリーHEXファイル(PIC18F47Q43用)

性懲りもなく 2025.9.12

さきほど購入した61キーのものは、とにかく小さいものということで選択しました。
その後に、色々と調べてみて68キーなるものがあり、こちらの方がスクリーンエディターを
使うときには便利そうです。サイズは1キー分だけ、幅が広がるだけなので小さい部類でしょう。
ということで、ろくに61キーボードを使わないままで、追加で購入です。
まあ、61キーボードはVT100専用にして、こちら68キーボードはMZ80化計画に使いましょう。
と、自分を納得させます(笑。


今度は68キーのキーボードを購入です。


68キー(下側)はすこしだけ幅が大きいです。キーの文字がシンプルなのも良さげです。


スクリーンエディタでよく使うキーが独立しているので、こちらの方が便利そうです。




61キー(左)と68キー(右)でESCキーの印字がちがいます。チルダ「~}って使わないのかなあ〜?

早速改造!

届いた直後ですが、早速改造です。せめて、動作するかどうかくらいは確かめた方がよかったかな?


裏面はなんか既視感があるなあ〜。同じメーカのものかな?

キーマトリックスは61キーとは左側は同じですが、キーが増えた右側だけがすこし異なります。
基板も61キーと同じ感じなので、同じような回路構成でしょう。
と、いうことで、早速改造です。




キーマトリックスは61キーとキー数が違うので、右側が若干異なります。 上:正面から 下:裏面側から


不要なICを取り外しです。あ、一度も通電してないや〜。

前回はUSBコネクタを外してしまいましたが、
これを活用すると外だし配線がスッキリしそうなので、今回は残すことにしました。
そして、ケース内の空間の広そうなところを選んで、基板上にPICを両面テープで
貼り付けて配線です。


USBコネクタはそのまま活用です。端子が小さいので、パターンを追いかけて、
接続しやすそうなところを探します。



未実装の電解コンデンサのパターンがあるので、そこから電源を取り出します。


配線完了です。


ホスト側(CPM80)にもUSBコネクタを追加です。キーボードはVT100と
入れ替えられるようにスイッチを入れておきました。


ソフト作成!

ソフトは先につくったものを勿論のこと流用です。キーマトリックスが若干異なるだけなので、
データテーブルをすこし変更するだけで済みます。

68キーボードをつかうと、矢印キーやPageUp、PageDown、そしてDELキーもあるので便利です。
HOMEキーは使わないので、あとでINSキーに入れ替えてやりましょう。


時間が経つと忘れてしまうので、注意書きを入れておきました。
まあ、これを忘れてしまうようだと、相当アレが進んでいそうですが(笑。


キーボード関係は、おそらくこれで完結でしょう。

(ENDかな?)