--- nono/vm/lunakbd.h 2026/04/29 17:04:28 1.1.1.1 +++ nono/vm/lunakbd.h 2026/04/29 17:04:29 1.1.1.2 @@ -6,6 +6,7 @@ #pragma once #include "keyboard.h" +#include "scheduler.h" class LunaKeyboard : public Keyboard { @@ -14,15 +15,45 @@ class LunaKeyboard : public Keyboard LunaKeyboard(); virtual ~LunaKeyboard(); + virtual void ResetHard(); + + virtual bool MonitorUpdate(); + // キーを押した virtual void MakeKey(uint); // キーを離した virtual void BreakKey(uint); + // マウス入力 + virtual void MouseInput(int x, int y, bool rb, bool lb, bool mb); private: + // キーイベントを空きスロットに登録 + void SetKeyEvent(uint code); + + // キーボードコールバック + void KeyboardCallback(int arg); + // 共通キーコードから LUNA キーコードへの変換 uint keycode2lunakey(uint); + // イベント + Event key_event {}; + Event mouse_event[3] {}; + + // キー送信中なら true + bool key_sending = false; + + // マウス状態 + int mouse_x; // 前回送信から現在までの積算値 + int mouse_y; + bool mouse_r, prev_r; // 現在値と前回送信時の値 + bool mouse_l, prev_l; + bool mouse_m, prev_m; + + // マウスコールバック + void MouseSamplingCallback(int arg); + void MouseCallback(int arg); + // 変換テーブル static const uint keycode2lunakey_table[128];