Closed TaiseiIto closed 3 years ago
mouseIDが3か4で初期化された場合、一回のマウスイベントで4バイト送信され、4バイト目にマウスホイールの移動量が入っているらしい
mouseIDは初期値が0らしい。 mouseIDを0から3にする手順
その後、mouseIDを3から4にする手順
とりあえず、mouseIDの初期値を確認するところから始めよう
現時点で 0xfa 0x00 という信号がマウスから送られてくる。 0xfaはマウスが最初に送ってくる信号なので無視して、0x00がmouseIDの初期値になっている。
割り込み処理でマウスから信号を受信するので、イベントキューを実装してからこのissueに取り掛かった方がよさそう
なぜかvmwareではmouse IDが返ってこない
0xf6 set defaults commandを送ってみるか
現時点でのQEMUのシリアル出力
keyboard signal = 0X47
mouse signal = 0XFA
mouse signal = 0XAA
mouse signal = 0X00
mouse signal = 0XFA
mouse signal = 0X00
mouse signal = 0XFA
vmwareだとmouse idは3止まりで4にはならなかった。 mouse idを保存しといて、mouse idごとにmouse signalの解析方法を分ける処理が必要になる
割り込みではなくポーリングで行けるかもね
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0X03
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0XFA
mouse signal = 0X03
mouse signal = 0XFA
基本的に一回のsend_to_mouseで一回のACKが来て、mouseからデータが送られてくる場合はそのあとにさらにデータが来てる
マウスIDを画面に表示して確認してみよう
Event構造体のx_movementの上位バイト以降が失われていると考えるとこのバグの説明がつく
y_movementとwheelに関する情報が失われ,さらにx_movementの符号の情報も失われている.
https://wiki.osdev.org/Mouse_Input