マウスホイール検知 - OS自作情報
マウスのホイールを有効にするには、マウスの初期化前に次のコマンドを送ります。どうやらホイールもマウスができて一時してから実装されたため、OS混乱しないように無効化されてるようです。 (第四、第五ボタンも有効にしています。) (PS/2マウスの場合)
キーボード制御回路の設定
- キーボード制御回路 : 0x0064
- キーボードデータ出力 : 0x0060
- キーボード制御回路から8bit読み出して下位2bitが00になるまで待つ(以後「キーボード制御回路待ち」)
- キーボード制御回路に書き込みコマンド : 0x60 を書き込む。
- キーボード制御回路待ち
- キーボードデータ出力に0x47を書き込む。
ここらへんははりぼてOSと同じです。
マウス制御回路の設定
- キーボード制御回路 : 0x0064
- キーボードデータ出力 : 0x0060
- マウス制御回路転送コマンド : 0xD4
- マウス制御回路に0xF3を送る。
- マウス制御回路(キーボード制御回路)からの割り込みを待つ。
- キーボード制御コマンド出力から8bit読み出し、0xFAか調べる。0xFFが来たときはコマンドを再送信
- キーボード制御回路にマウス制御回路転送コマンドを送る
- キーボード制御回路待ち
- キーボードデータ出力に0xF3を送る
- マウス制御回路の作業完了確認をする
- キーボード制御回路にマウス制御回路転送コマンドを送る
- キーボード制御回路待ち
- キーボードデータ出力に0xC8を送る
- マウス制御回路の作業完了確認をする
- キーボード制御回路にマウス制御回路転送コマンドを送る
- キーボード制御回路待ち
- キーボードデータ出力に0xF3を送る
- マウス制御回路の作業完了確認をする
- キーボード制御回路にマウス制御回路転送コマンドを送る
- キーボード制御回路待ち
- キーボードデータ出力に0xC8を送る(第四、第五ボタンを有効にしたくないときは,0x64)
- マウス制御回路の作業完了確認をする
- キーボード制御回路にマウス制御回路転送コマンドを送る
- キーボード制御回路待ち
- キーボードデータ出力に0xF3を送る
- マウス制御回路の作業完了確認をする
- キーボード制御回路にマウス制御回路転送コマンドを送る
- キーボード制御回路待ち
- キーボードデータ出力に0x50を送る
- マウス制御回路の作業完了確認をする
- キーボード制御回路にマウス制御回路転送コマンドを送る
- キーボード制御回路待ち
- キーボードデータ出力に0x50を送る
- マウス制御回路の作業完了確認をする
これでおそらく有効化できてると思います。間に転送コマンドを送ってますが、直接マウス制御回路に届くデータは以下のようになってます。
- 0xF3
- 0xC8
- 0xF3
- 0xC8(0x64)
- 0xF3
- 0x50
- 0xF4