レトロPC用 USBキーボード変換アダプタ(その1)

 それぞれの機種のキーボードは持っているのだけど 所有機が増えるとキーボードも増えて置き場所に困ってくる。専用キーボードは所有はしておきたいけど普段使うには大きいし何よりケーブル接続の取り回しが面倒になったのでワイヤレスUSBキーボードを使える変換アダプターを作成。

 もともとはFM TOWNS用だけでも と、作り始めたけど 他の機種のキーボードも似た感じの作りだと判ったので続けて作成。
 ついでにUSBゲームパッドにも一部対応。これはゲームパッドの入力をキーコードに変換して送ってます。


1.変換アダプタ
キーボード変換アダプタの本体は共通でこんな感じ
・Raspberry Pi Pico または、RP2040-Zero
・AE-LCNV4-MOSFET等の4ビット双方向ロジックレベル変換モジュール
・各機種にあったキーボードコネクタ
必要なピンだけ繋ぐ。USB抜き差しするならコンデンサは必要

 
schematic_1  PC-98DOschematic_2



2.接続コネクタ

FM TOWNS(HR12) FM77AV40EX(miniDIN4)
HR12 (3)t 本体コネクタ pico/rp2040 miniDIN 4t  本体コネクタ pico/rp2040
1   GND GND 1   VCC VCC
2   GND   2   GND
3   KSD GP6 3   KSD GP6
4   CTLR GP7 4   GND GND
5   N.C.          
6   N.C.          
7   VCC          
8   VCC VCC        
FM77AV(RJ9) FM77AV40(RJ12)
MJ4p  本体コネクタ pico/rp2040 MJ6p 本体コネクタ pico/rp2040
1   GND GND 1   VCC VCC
2   KSD GP6 2   DETECT GP7
3   DETECT GP7 3   KSD GP6
4   VCC VCC 4   GND GND
        5   N.C.  
        6    
               
               
PC-88FH以降/VA(miniDIN5) PC-98/DO(miniDIN8)
miniDIN 5t  本体コネクタ pico/rp2040 miniDIN 8t2  本体コネクタ pico/rp2040
1   VCC VCC 1   /RST GP5
2   GND GND 2   GND GND
3   TxD GP6 3   /RDY GP6
4   N.C.   4   RxD GP4
5   N.C.   5   /RTY GP7
        6   N.C.  
        7   MODE(*1) GP8(*1)
        8   VCC VCC
  *1)PC-98DO
X1/turbo(φ3.5 TRS)
trs35_t 本体コネクタ pico/rp2040
1   VCC(*2) 接続しない
2   DATA GP6
3   GND GND
       
       
       
       
       
*2)X1/turboのVCCでは動作しないので別電源を使用する

実際のコネクタはこんな感じ。
※画像は試作などでアダプタのピン数など回路図とは違ってるかも
towns_plug FM TOWNS用 コネクタは入手可能だが3Dプリンタで作成してみた
77av_plug FM77AV-2用 FM77AVは機種によりコネクタが違うのが酷いよね
x1_plug X1/turbo用 本体からの電源が弱いので本体のVCCは使わずUSB電源等で+5Vをとる必要がある



3.ファームウェア

 Raspberry Pi Pico 用と RP2040 Zero 用があります。違いはLED制御だけでZeroはカラー
FM TOWNS以外はキーボード、またはゲームパッドの接続が可能です。
しっかりテストしたわけではないので上手く機能しない場合があるかも。

※仕様上 USBデバイスは1台のみ接続可能。USBハブは使用できません。
※キーボードとマウスを1つのUSBレシーバで使用できる無線タイプのデバイスは接続可能

※使用は自己責任で、個人での利用のみにお使いください。

FM TOWNS
 キーボード、マウスが接続可能。TOWNSでキーボードゲームパッドは不要だろうと使用できません。
 マウス機能はTOWNSのキーボードに接続するマウス機能に対応したものなので Windowsでしか使えないようです。
 予定

FM 77AV
 fm77av_usb_kbd_rp2040.zip

PC-88FH以降
 pc88fh_usb_kbd_rp2040.zip

PC-88VA
 pc88va_usb_kbd_rp2040.zip

PC-98
 予定

PC-98DO
 予定

X1/turbo
 予定


4.機種特有のキー割り当て
 普段テンキーレスキーボードを使っているので ほぼそのための割り当て

動作確認キーボード
 ELECOM TK-FDM109TKBK, TK-FDM109MBK

JIS FM TOWNS FM 77AV PC-88FH以降/VA
    Shift+ Ctrl(右)+    
F1-F5 PF1-PF5 PF11-PF15   PF1-PF5 f1-f5
F6 PF6 PF16   PF6 f6
F7 PF7 PF17   PF7 f7
F8 PF8 PF18   PF8 f8
F9 PF9 PF19   PF9 f9
F10 PF10 PF20   PF10 f10
F11 PF11     EL  
F12 PF12     DUP  
半/全/漢字 かな/漢字   半角/全角   全角
Esc ESC     ESC ESC
Tab TAB     TAB タブ
CapsLock CAP     CAP 大文字
Ctrl(左) CTRL     CTRL コントロール
Win(左) Ctrl+Esc(Windows用Win)        
Alt(左)       GRAPH GRAPH
無変換       スペース(左) 決定
変換       スペース(右) 変換
カナ/かな/ローマ字 ひらがな->カタカナ->オフ かな かな
Alt(右)         PC
App Shift+PF10(Windows用App)    
Ctrl(右) メタキーとして他のキーとの複合用とする    
Enter RETURN 実行   RETURN RETURN
BackSpace BackSpace 取消     後退
PrintScreen COPY       画面コピー
ScrollLock SCROLL LOCK   オーバーレイ切替 オーバーレイ切替 オーバーレイ切替
Pause/Break PAUSE BREAK   BREAK 停止
Insert 挿入 DUP 漢字辞書 INS 挿入
Home HOME CLS 単語抹消 HOME 画面消去
Page Up 前行   単語登録   ROLL DOWN
Delete 削除 EL SYSREQ DEL 削除
End END   EXT1 CLS 説明
Page Down 次行   EXT2   ROLL UP
NumLock オーバーレイ切替        
JIS PC-98/DO X1turbo
    Shift+ Ctrl(右)+   Shift+
F1-F5 f1-f5   vf1-vf5 F1-F5 F6-F10
F6 f6     ROLL UP  
F7 f7     ROLLDOWN  
F8 f8     HELP  
F9 f9     COPY  
F10 f10     REW  
F11 vf1     STOP  
F12 vf2     FF  
半/全/漢字 CTRL+XFER        
Esc ESC     ESC  
Tab TAB     H TAB  
CapsLock CAPS     CAPS LOCK  
Ctrl(左) CTRL     CTRL  
Win(左) Win(左)        
Alt(左) GRPH     GRAPH  
無変換 NFER        
変換 XFER        
カナ/かな/ローマ字 カナ     カナ  
Alt(右)       XFER  
App App     A/B mode切替(*1)
Ctrl(右) メタキーとして他のキーとの複合用とする CTRL  
Enter RETURN     RETURN  
BackSpace BS     INS  
PrintScreen COPY     COPY  
ScrollLock オーバーレイ切替   98/88モード切替 オーバーレイ切替  
Pause/Break STOP     BREAK  
Insert INS     INS DEL
Home HOME CLR   HOME CLR
Page Up ROLL DOWN     ROLL DOWN  
Delete DEL     DEL INS
End HELP     HELP  
Page Down ROLL UP     ROLL UP  
NumLock          
*1)AでLED1回、BでLED2回点滅(緑)
オーバーレイで下記キーはテンキー扱いになる
・FM TOWNS ・他機種
[7][8][9][0] [7][8][9][=] [7][8][9][0] [7][8][9][=]
[U][I][O][P] [4][5][6][-] [U][I][O][P] [4][5][6][-]
[J][K][L][;][:] [1][2]][3][+][*] [J][K][L][;][:] [1][2]][3][+][*]
[M][,][.][/] [0][000][.][[/] [M][,][.][/] [0][,][.][[/]
[Enter] [Return] [Enter] [Return]


5.ゲームパッドの割り当て
 所有のELECOMのゲームパッドで割当てをしてます。メーカーやボタン数で使えるボタンが異なり使えない場合があります。
 以前キーボードアダプタの自作のページでジョイパッドを接続してるものを見たことがって、そう言えばプログラマブルジョイパッドなんてのがあったの思い出して似たものを実装してみた。
 今回は キーボードと同時接続できないのでアルファベット、ファンクションキーをボタン操作で入力できるようにしてみた。
 ボタン割り当ての変更ができたら良いとは思うけど対応するかは未定。
十字キーの割り当てだけは変更可能。

動作確認ジョイパッド
 ELECOM JC-GP20SBK, JC-U3912TBK

  テンキー   矢印
  パターン1 パターン2 パターン3   パターン4   パターン5
十字キー上 8 8 8    
十字キー下 2 2 2    
十字キー左 4 4 4    
十字キー右 6 6 6    
十字キー右上 9 6,8,6… 割当なし   右,上,右…   割当なし
十字キー左上 7 4,8,4… 割当なし   左,上,左…   割当なし
十字キー右下 3 6,6,6… 割当なし   右,下,右…   割当なし
十字キー左下 1 4,2,4… 割当なし   左,下,左…   割当なし
ボタン1 X
ボタン2 Z
ボタン3 スペース
ボタン4 RETURN
ボタン5 SHIFT(ホールド式)
ボタン6 CTRL(ホールド式)
ボタン7 単押しは Y
押しながらボタン8を押した回数で該当するアルファベットを入力(*3)
ボタン8 単押しは N
押しながらボタン7を押した回数で該当するファンクションキーを入力(例:3回ならF3)
ボタン9 CAPS(トグル式) オンでLED2回、オフでLED1回点滅(青)
※X1 turboのみ 押しながらボタン10を押すとA/B mode切替。AでLED1回、BでLED2回点滅(緑)
ボタン10 かな(トグル式)オンでLED2回、オフでLED1回点滅(青)
ボタン11 単押しはESC
押しながらボタン12を押すと十字キーの割当パターンを変更できる(*4)
ボタン12 PAUSE/BREAK
*3)例:3回ならC。入力時、小文字ならLED1回、大文字ならLED2回点滅(青))
*4)変更した際、パターン番号の数だけLEDが点滅(緑)する


他の方が作成された変換器や特に参考にさせてもらったサイトなど
FM7関連     http://gomikuzukasu.web.fc2.com/fm7/index.html
 AV40EX に AV2 のキーボードを接続
 AV40EX に AV40 のキーボードを接続

PC-8801覚え書き  http://www.maroon.dti.ne.jp/youkan/pc88/index.html
 PC-8801FH以降のキーボードの通信プロトコル

諏訪工房      https://www.suwa-koubou.jp/
 PC-9801/9821用キーボード変換器
 PC-9801用バスマウス変換器

uts        https://kyouichisato.blogspot.com/
 SHARP X1 に PS/2 キーボードを繋いで使う

X1センター    http://www.x1center.org/
 仕様関係 –> キーボードの伝送フォーマット仕様 Ver0.1





BOOTHで頒布するかも。。

コメント