--- nono/vm/lunakbd.h 2026/04/29 17:05:06 1.1.1.10 +++ nono/vm/lunakbd.h 2026/04/29 17:05:17 1.1.1.12 @@ -4,12 +4,17 @@ // Licensed under nono-license.txt // +// +// LUNA のキーボードとマウス +// + #pragma once #include "keyboard.h" +#include "event.h" #include "monitor.h" -#include "scheduler.h" -#include + +class SIODevice; class LunaKeyboard : public Keyboard { @@ -18,8 +23,7 @@ class LunaKeyboard : public Keyboard LunaKeyboard(); virtual ~LunaKeyboard() override; - bool PowerOn() override; - void ResetHard() override; + bool Init() override; // シフト状態なら true を返す bool IsShift() const override; @@ -34,6 +38,10 @@ class LunaKeyboard : public Keyboard void Command(uint32 data) override; private: + // キーボードの接続と取り外し + void MDConnect() override; + void MDDisconnect() override; + // MD キーコードに変換 uint KeyToMDKey(uint keystat) const override; @@ -67,7 +75,6 @@ class LunaKeyboard : public Keyboard bool mouse_on {}; // ブザー - bool buzzer_on {}; // ブザー発音中なら true uint buzzer_msec {}; // コマンドで指定した発音時間 [msec] uint buzzer_freq {}; // コマンドで指定した発音周波数 [Hz] uint64 buzzer_end {}; // ブザーを鳴らし終わる仮想時刻 @@ -77,6 +84,8 @@ class LunaKeyboard : public Keyboard Monitor monitor { this }; + SIODevice *sio {}; + // 変換テーブル static const uint keycode2lunakey_table[KC_max]; @@ -119,6 +128,7 @@ class LunaKeyboard : public Keyboard static const uint LunaKey_minus = 0x2c; static const uint LunaKey_circum = 0x2d; static const uint LunaKey_backslash = 0x2e; + static const uint LunaKey_buzzer = 0x2f; static const uint LunaKey_Q = 0x32; static const uint LunaKey_W = 0x33;