やっと最終記事です。GitHubは以下です


キーボードパーサーでNotify属性のデータ処理とPC-98へ送信

キーボードのデータ処理はほとんどがUSBのそれと一緒です。またPC-98への送信は全く一緒ですw。

USB Host Sheildのライブラリから必要な部分の処理や定義を拝借して実装を行います。Pc98BLEKbdRptParser.hpp、Pc98BLEKbdRptParser.cppで記述しています。長いのでGitHubで眺めてください。

PC-98への送信部分やブートモードの話はUSBの時に書いた通りです。もう書きたくないのでそっち読むかコードを追ってください。下にUSBの時のキーボードパーサーのリンクを入れときます。

USBの時と違うのはParse()の部分です。ちなみにBLEキーボードをたたいた時に来るデータですが、「1・ぬ」を2回押すと以下のレポートがでます。

8バイトのレポートですが、HIDなのでUSBキーボードと同じです。ということはUSB HostSheild Libraryのキーボードパーサーの継承元であるKeyboardReportParserのクラスのParse処理をパクればいいわけです。というわけで、Parse部分を移植しUSBHIDは不要なので削除し、必要な構造体MODIFIERKEYS,KBDINFOをhppで宣言しています。

98キーボードへのピンアサインに変更はないです。これでほぼ動きました。

が…3COINのクセつよキーボードのせいで以下の点で修正が必要になりました。

  1. 「\・ろ」キーがなんか変
  2. 「]・む」キーがなんか変

上のキーの位置もおかしいし、エンターが長いとか…

メチャクチャ誤入力しちゃうぜ!!

安物買いのなんとかですけど、BLEキーボードが、これしかないので進めざるえません。

KeyDown,KeyUpの部分とcodeArray部の一部変更を行っています。あとは標準のUSBキーボードのキーコードでよさそうです。

[2024/04/29] ダイソーでBLEのフルサイズキーボードが売っていてそっちのほうが操作感はいいです。記事リンク貼っときます


マウスパーサーでNotify属性のデータ処理とPC-98へ送信

次はマウスパーサーです。マウスを動かすと以下のレポートがきます

マウスはデータ長でチョイチョイ情報が違います。

USBのときは3byteのデータで来てましたが、今回は7byteです。USBの時も色々なマウスで試しました。7byteもありましたし、ほかの長さもありました。そんなに難しいデータ構造ではないのでパーサー部を書き直します。

 

とあえずこんな感じです。なんか三項演算子使わなくてもいいところがありますが戻り値アピールの為そのままにしますw。実際には下のPaeseから呼び出され各種イベントが起きるようになります。マウスが変わったときにはParseMouseDataを書き換えます。前にも書きましたが文字列処理などは重くなるので極力控えます。

イベントの処理はUSBの時と一緒です。


テストしたPC-98はPC-9821V166(ジャンパで200Mhz動作)青札。CF、SSD換装、FDDシミュレーター(SFR1M44-U100×2)。リセットボタンがなくて色々と不満がありますが…。マウスキーボードはMiniDinの丸コネクタです。OSはWin2000、MS-DOS6、Win98SEです。

Win2000、Win98SEはコンパネのマウスで調整をしています。DOSマウスドライバを起動してDOSシェルです。ゲームも試しましたが問題なく動いています。

ガシェットはUSBの時と同じ機材を使っています。USH Host Sheildは必要ありません。もっとコンパクトにできると思います。CAPS,NumLK,カナのLEDにも対応しているつもりです。BLEのほうが安定して接続できるような気がしますね。

 

 

投稿者 まる

Twitter : @dinagon Instagram : @d_dinagon フォロバします!!最近、ESP/Arduinoいじりすぎでアプリ開発が進んでない。歯医者なのに歯のことはあまり触れませんw