--- nono/vm/x68kkbd.h 2026/04/29 17:04:32 1.1.1.3 +++ nono/vm/x68kkbd.h 2026/04/29 17:04:36 1.1.1.4 @@ -1,6 +1,7 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once @@ -10,23 +11,26 @@ class X68030Keyboard : public Keyboard { - typedef Keyboard inherited; + using inherited = Keyboard; public: X68030Keyboard(); - virtual ~X68030Keyboard(); + ~X68030Keyboard() override; - virtual bool Init(); + void ResetHard() override; // キーを押した - virtual void MakeKey(uint); + void MakeKey(uint) override; // キーを離した - virtual void BreakKey(uint); + void BreakKey(uint) override; // マウス入力 - virtual void MouseInput(int x, int y, bool rb, bool lb, bool mb); + void MouseInput(int x, int y, bool rb, bool lb, bool mb) override; + + // ホストからの制御コマンド + void Command(uint32 data) override; private: - // キー入力イベント - Event event {}; + // キーデータ送信 + void SendKey(uint data); // 共通キーコードから LUNA キーコードへの変換 uint keycode2x68kkey(uint); @@ -37,6 +41,23 @@ class X68030Keyboard : public Keyboard // キー名テーブル static const char * const keyname[128]; + // キーリピート開始時間 [msec] + uint32 rept_delay {}; + // キーリピート間隔 [msec] + uint32 rept_time {}; + + // LED 暗さ (0 明るい <-> 3 暗い) + uint32 led_darkness {}; + + // LED は以下の7つ。 + // 0: かな + // 1: ローマ字 + // 2: コード入力 + // 3: CAPS + // 4: INS + // 5: ひらがな + // 6: 全角 + // X680x0 キーコード static const uint NoKey = 0; static const uint X68kKey_ESC = 0x01;