TaiseiIto / hariboslinux

Haribote OSをLinux環境で開発しよう
MIT License
3 stars 0 forks source link

マウスホイールの回転量を取得しよう #27

Closed TaiseiIto closed 3 years ago

TaiseiIto commented 3 years ago

https://wiki.osdev.org/Mouse_Input

TaiseiIto commented 3 years ago

mouseIDが3か4で初期化された場合、一回のマウスイベントで4バイト送信され、4バイト目にマウスホイールの移動量が入っているらしい

TaiseiIto commented 3 years ago

mouseIDは初期値が0らしい。 mouseIDを0から3にする手順

その後、mouseIDを3から4にする手順

TaiseiIto commented 3 years ago

とりあえず、mouseIDの初期値を確認するところから始めよう

TaiseiIto commented 3 years ago

現時点で 0xfa 0x00 という信号がマウスから送られてくる。 0xfaはマウスが最初に送ってくる信号なので無視して、0x00がmouseIDの初期値になっている。

TaiseiIto commented 3 years ago

割り込み処理でマウスから信号を受信するので、イベントキューを実装してからこのissueに取り掛かった方がよさそう

TaiseiIto commented 3 years ago

なぜかvmwareではmouse IDが返ってこない

TaiseiIto commented 3 years ago

0xf6 set defaults commandを送ってみるか

TaiseiIto commented 3 years ago

現時点でのQEMUのシリアル出力

keyboard signal = 0X47
mouse signal = 0XFA
mouse signal = 0XAA
mouse signal = 0X00
mouse signal = 0XFA
mouse signal = 0X00
mouse signal = 0XFA
TaiseiIto commented 3 years ago

https://shrimp.marokun.net/osakkie/wiki/?%A5%DE%A5%A6%A5%B9%A5%DB%A5%A4%A1%BC%A5%EB

これも参考になりそうだ

TaiseiIto commented 3 years ago

vmwareだとmouse idは3止まりで4にはならなかった。 mouse idを保存しといて、mouse idごとにmouse signalの解析方法を分ける処理が必要になる

TaiseiIto commented 3 years ago

割り込みではなくポーリングで行けるかもね

TaiseiIto commented 3 years ago
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
TaiseiIto commented 3 years ago

基本的に一回のsend_to_mouseで一回のACKが来て、mouseからデータが送られてくる場合はそのあとにさらにデータが来てる

TaiseiIto commented 3 years ago

マウスIDを画面に表示して確認してみよう

TaiseiIto commented 3 years ago

Event構造体のx_movementの上位バイト以降が失われていると考えるとこのバグの説明がつく

TaiseiIto commented 3 years ago

y_movementとwheelに関する情報が失われ,さらにx_movementの符号の情報も失われている.