備忘録
先日ここに書いた富士通のキーボード、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」っていうトグル処理になってるんでしょうか?実機がどうなっているのか興味ありますが残念ながらメインフレームには縁がありません(もしご存知の方がいらっしゃいましたら教えていただけますと幸いです)