--- nono/vm/lunakbd.h 2026/04/29 17:04:59 1.1.1.9 +++ nono/vm/lunakbd.h 2026/04/29 17:05:06 1.1.1.10 @@ -35,7 +35,7 @@ class LunaKeyboard : public Keyboard private: // MD キーコードに変換 - uint KeyToMDKey(uint keycode) const override; + uint KeyToMDKey(uint keystat) const override; // キーを1つ処理する void KeyInput(uint keystat) override; @@ -43,28 +43,42 @@ class LunaKeyboard : public Keyboard // キーイベントを起こせる空きスロットを計算して、イベントを開始 void SendStart() override; - // キーボードコールバック - void KeyboardCallback(Event& ev); + // イベントを開始 + void Start(uint64 period); + + // コールバック + void Callback(Event& ev); // 共通キーコードから LED 番号を取得。 // 0: かな // 1: CAPS int Keycode2LED(uint keycode) const; + // LED 番号から共通キーコードを取得。 + uint LED2Keycode(int ledcode) const; + + // マウスサンプリング + void MouseSampling(); + void MouseOn(); + void MouseOff(); DECLARE_MONITOR_CALLBACK(MonitorUpdate); - // イベント - Event key_event { this }; - std::array mouse_event {}; + // マウスサンプリング + bool mouse_on {}; - // マウスコールバック - void MouseSamplingCallback(Event& ev); - void MouseCallback(Event& ev); + // ブザー + bool buzzer_on {}; // ブザー発音中なら true + uint buzzer_msec {}; // コマンドで指定した発音時間 [msec] + uint buzzer_freq {}; // コマンドで指定した発音周波数 [Hz] + uint64 buzzer_end {}; // ブザーを鳴らし終わる仮想時刻 + + // イベント + Event event { this }; Monitor monitor { this }; // 変換テーブル - static const uint keycode2lunakey_table[0x80]; + static const uint keycode2lunakey_table[KC_max]; // LUNA キーコード static const uint NoKey = 0;