--- nono/vm/keyboard.h 2026/04/29 17:05:33 1.1.1.14 +++ nono/vm/keyboard.h 2026/04/29 17:06:00 1.1.1.18 @@ -15,6 +15,7 @@ #include "message.h" class Syncer; +class UIMessage; // 文字入力しか持たないキーボードの下位クラス。 class DumbKeyboard : public Device @@ -68,9 +69,6 @@ class Keyboard : public DumbKeyboard return pressed[keycode]; } - // 全てのキーの押し下げ状態取得 (ソフトウェアキーボードなどから) - const std::vector& GetPressed() const { return pressed; } - // LED 状態取得 (ソフトウェアキーボードなどから) const std::vector& GetLED() const { return led; } @@ -111,6 +109,9 @@ class Keyboard : public DumbKeyboard // キーを1つ処理する virtual void KeyInput(uint keystat) = 0; + // キーの押し下げ状態を設定する + void SetPressed(uint keycode, bool ismake); + // キーを処理する (共通部分) bool KeyInputCommon(uint keystat); @@ -146,6 +147,7 @@ class Keyboard : public DumbKeyboard bool prev_m {}; Syncer *syncer {}; + UIMessage *uimessage {}; private: void KeyInputMessage(MessageID, uint32); @@ -155,7 +157,7 @@ class Keyboard : public DumbKeyboard }; // フルキーボードの取得 (シリアルキーボードは含まない) -static inline Keyboard *GetKeyboard() { +inline Keyboard *GetKeyboard() { return Object::GetObject(OBJ_KEYBOARD); } @@ -200,7 +202,6 @@ static inline Keyboard *GetKeyboard() { #define KC_none (0) #define KC_BREAK (0x01) // [X68k] BREAK -#define KC_COPY (0x02) // [X68k] COPY #define KC_romaji (0x03) // [X68k] ローマ字 #define KC_code (0x04) // [X68k] コード入力 #define KC_kigou (0x05) // [X68k] 記号入力 @@ -210,19 +211,18 @@ static inline Keyboard *GetKeyboard() { #define KC_TAB (0x09) #define KC_CTRL (0x0a) #define KC_kana (0x0b) // かな -#define KC_SHIFT_L (0x0c) // SHIFT(左) -#define KC_SHIFT_R (0x0d) // SHIFT(右) +#define KC_SHIFT_L (0x0c) // SHIFT(左) / [LUNA-88K] (右) +#define KC_SHIFT_R (0x0d) // SHIFT(右) / [LUNA-88K] (左) #define KC_CAPS (0x0e) -#define KC_SF (0x0f) // [LUNA] S.F +#define KC_SF (0x0f) // [LUNA-I] S.F / [LUNA-88K] META #define KC_ESC (0x10) #define KC_BS (0x11) // BackSpace #define KC_enter (0x12) // Enter (Return) -#define KC_INS (0x13) // [X68k] INS #define KC_space (0x14) #define KC_DEL (0x15) -#define KC_XFER (0x16) // [LUNA] XFER -#define KC_VALID (0x17) // [LUNA] VALID +#define KC_XFER (0x16) // [LUNA] XFER (変換) +#define KC_VALID (0x17) // [LUNA] VALID(確定) #define KC_PF11 (0x18) // [LUNA] PF11 #define KC_PF12 (0x19) // [LUNA] PF12 #define KC_PF13 (0x1a) // [LUNA] PF13 @@ -232,8 +232,8 @@ static inline Keyboard *GetKeyboard() { #define KC_right (0x1e) // cursor right #define KC_down (0x1f) // cursor down -#define KC_ROLLUP (0x20) // [X68k] ROLL UP -#define KC_ROLLDOWN (0x21) // [X68k] ROLL DOWN +#define KC_INS (0x20) // [LUNA-88K] INSERT / [X68k] INS +#define KC_COPY (0x21) // [LUNA-88K] [X68k] #define KC_1 (0x22) #define KC_2 (0x23) #define KC_3 (0x24) @@ -249,8 +249,8 @@ static inline Keyboard *GetKeyboard() { #define KC_backslash (0x2e) // \| #define KC_buzzer (0x2f) // [LUNA] ブザー発声 (キーではない) -#define KC_OPT1 (0x30) // [X68k] OPT.1 -#define KC_OPT2 (0x31) // [X68k] OPT.2 +#define KC_CUT (0x30) // [LUNA-88K] +#define KC_PASTE (0x31) // [LUNA-88K] #define KC_Q (0x32) #define KC_W (0x33) #define KC_E (0x34) @@ -266,7 +266,6 @@ static inline Keyboard *GetKeyboard() { #define KC_hira (0x3e) // [X68k] ひらがな #define KC_zenkaku (0x3f) // [X68k] 全角 -#define KC_HOME (0x40) // [X68k] HOME #define KC_UNDO (0x41) // [X68k] UNDO #define KC_A (0x42) #define KC_S (0x43) @@ -280,6 +279,8 @@ static inline Keyboard *GetKeyboard() { #define KC_semicolon (0x4b) #define KC_colon (0x4c) #define KC_bracketright (0x4d) // ']' +#define KC_OPT1 (0x4e) // [X68k] OPT.1 +#define KC_OPT2 (0x4f) // [X68k] OPT.2 #define KC_XF1 (0x50) // [X68k] XF1 #define KC_XF2 (0x51) // [X68k] XF2 @@ -298,6 +299,7 @@ static inline Keyboard *GetKeyboard() { #define KC_XF4 (0x5e) // [X68k] XF4 #define KC_XF5 (0x5f) // [X68k] XF5 +#define KC_HOME (0x60) // [LUNA-88K] [X68k] #define KC_PAD_plus (0x61) #define KC_PAD_minus (0x62) #define KC_PAD_7 (0x63) @@ -314,6 +316,8 @@ static inline Keyboard *GetKeyboard() { #define KC_PAD_enter (0x6e) #define KC_PAD_CLR (0x6f) // [X68k] CLR +#define KC_ROLLUP (0x70) // [X68k] ROLL UP +#define KC_ROLLDOWN (0x71) // [X68k] ROLL DOWN #define KC_F1 (0x72) #define KC_F2 (0x73) #define KC_F3 (0x74)