--- nono/vm/lunakbd.h 2026/04/29 17:04:52 1.1.1.7 +++ nono/vm/lunakbd.h 2026/04/29 17:04:55 1.1.1.8 @@ -7,6 +7,7 @@ #pragma once #include "keyboard.h" +#include "monitor.h" #include "scheduler.h" class LunaKeyboard : public Keyboard @@ -18,7 +19,6 @@ class LunaKeyboard : public Keyboard bool PowerOn() override; void ResetHard() override; - void MonitorUpdate(TextScreen&) override; // シフト状態なら true を返す bool IsShift() const override; @@ -33,8 +33,8 @@ class LunaKeyboard : public Keyboard // MD キーコードに変換 uint KeyToMDKey(uint keycode) const override; - // キー処理(MD固有処理) - bool ProcessKey(uint keystat) override; + // キーを1つ処理する + void KeyInput(uint keystat) override; // キーイベントを起こせる空きスロットを計算して、イベントを開始 void SendStart() override; @@ -47,8 +47,10 @@ class LunaKeyboard : public Keyboard // 1: CAPS int Keycode2LED(uint keycode) const; + DECLARE_MONITOR_CALLBACK(MonitorUpdate); + // イベント - Event key_event {}; + Event key_event { this }; Event mouse_event[3] {}; // マウス状態 @@ -65,6 +67,8 @@ class LunaKeyboard : public Keyboard void MouseSamplingCallback(Event& ev); void MouseCallback(Event& ev); + Monitor monitor { this }; + // 変換テーブル static const uint keycode2lunakey_table[0x80];