月別アーカイブ: 2015年4月

PC-98×1キーボード用のUSBコンバータ

RDFキーボードを入手したので実験

IMG

キーボードから送られてくる信号はただのシリアル信号(19200bps)なんで68キーボード用の変換器をベースにして簡単に作れるかと思ったんですが

  • キーを押しっぱなしにした場合の信号の発生がわざわざ
    Make→→→→→Break&Make→→Break&Make→→Break&Make
    という、今となっては(少なくともUSB変換を前提にするなら)あまり嬉しくない仕様。(ただ、コマンドを送ることでこの仕様をキャンセル出来る世代のキーボードもある??)
  • CAPSとカナは押下のトグル状態をキーボード側でいちいち記憶してる。つまり一度押下するとMakeが発生し、離してもBreakは発生しない。もう一度押下するとBreakが発生する。
  • CAPSとカナのLEDも前述の動作にあわせてキーボード内マイコンが制御している。(ただしLEDについてはコマンドを送ることで任意に制御出来る模様)
  • キー押しっぱなしでリピートが発生するキーと発生しないキーがある。(ただ、これについてはUSB変換を行う上では影響は無いけど)

という、キーボード内のMCUがインテリジェントなのが今となっては逆にアダになってます。特に1つ目の仕様はゲームに向かないですね。普通に文章を打つ分には問題ないんですが。

最下段(スペースバーがある段)のキーが今時のキーボードに比べて少ないんですが(スペースバーの左に3つ、右に1つ)これはあまり気になりませんでした。まあ、英語キーボードなんかもっと少ないですし。

富士通キーボード F6962KB2(その2

備忘録

先日ここに書いた富士通のキーボード、F6962KB2についてもうちょっとまじめに調べた結果をだらだらと記しておきます。

IMG

コネクタ(ヒロセ HR12)のピンアサインは多分以下のとおりです

1 Rx DATA (本体からキーボードへ)
2 Tx DATA (キーボードから本体へ) オープンコレクタ出力
3 GND
4 未使用
5 GND
6 GND
7 Vcc (5V)
8 Vcc (5V)

Tx DATAはオープンコレクタ出力なので適当な抵抗でpull-upする必要があります。 7,8pinがVccという所だけFMR/FM TOWNS系と共通なおかげで助かりました・・・

信号は先日も記述しましたが4800bps、スタートピット1、ストップビット1、データ8bit、パリティODDのシリアル通信です。

キーを押すと3バイトのデータがキーボードから送られてきます。キーを離しても何も送られてきません。

キーを押しっぱなしにした場合、リピートデータが送られてくるキーと、押しっぱなしにしても何も送ってこないキーの2種類があります。リピートデータが送られてくる場合、リピート開始まで500ms、リピート周期は50msです。

押しっぱなしでリピートデータを送ってくるキーは概ねこんなデータです。

  • 最初の押下時: 0x11, 0x00, <スキャンコード>
  • 押しっぱなし: 0x11, 0x01, <スキャンコード>

リピートデータを返さないキー(SHIFTや実行といったキー)の場合は「最初の押下時」のパターンの3byteを送ってきます(2byte目が0x00)。

リピートデータを返すキーを2つ同時に押下した場合、リピートデータは後から押したキーのものしか発生しません。そして、同時押しの状態から片方のキーをリリースした場合

  • 後から押下したキーをリリースした場合、リリース後は何のデータも発生しません(先に押下していたキーが押しっぱなしだとしてもリピートデータは発生しない)
  • 先に押下したキーをリリースした場合は、後から押下したキーのリピートデータが引き続き発生する

となります。

 

これ、SHIFTキー同時押し(SHIFT+Aとか)って一体どうやって判定してるんでしょうね?もしかしたら2バイト目のどこかが装飾キー押下フラグにでもなってるのかと思いましたがそんな事はありませんでした(SHIFT+Aを押下すると単に「SHIFT押下」「A押下」「Aリピート」が順に送られてくるだけ)

それともOS側は「SHIFTキーコードが1回発生したらMake、もう1回発生したらBreak」っていうトグル処理になってるんでしょうか?実機がどうなっているのか興味ありますが残念ながらメインフレームには縁がありません(もしご存知の方がいらっしゃいましたら教えていただけますと幸いです)

 

ADBキーボードの変換器

週末を使ってADBキーボードの変換器を考えてみました。

最終的なゴールはADB-USB変換アダプタを作ることですが、とりあえず調査とか実験のためにADB-シリアル変換器を作ってみました。こんな感じです。後に写ってるキーボードは NeXT用です。

IMG

8pinのPICが1つと抵抗2本、パスコン1個と言う非常にシンプルな構成です。これでADBの信号をシリアル出力に変換します。一応、シリアル出力は「2400bps、ストップビット1、パリティ無し」で、送信するデータは「最上位1bitがMake/Breakフラグで、下位7bitがスキャンコード」としています。つまり

IMG

こういう事が出来ると言う訳で。X68にADBキーボードを繋いだ例はこれがX68史上初めてなんじゃないかと(笑

で、とりあえず シリアル to USB変換器 X68キーボードUSB変換器とカスケードに繋いで

IMG

この状態でADBキーボードをUSB変換して使ってますが、今のところ快調に動いています。ここまで来れば、機能を1チップに集約するのも容易そうです。多分

 

追記
USB-ADB変換アダプタができました