|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2018 [email protected] ! 4: // ! 5: ! 6: #pragma once ! 7: ! 8: #include "device.h" ! 9: #include "scheduler.h" ! 10: ! 11: class Keyboard : public Device ! 12: { ! 13: typedef Device inherited; ! 14: protected: ! 15: Keyboard(); ! 16: public: ! 17: virtual ~Keyboard(); ! 18: ! 19: // キーを押した ! 20: virtual void MakeKey(uint) = 0; ! 21: // キーを離した ! 22: virtual void BreakKey(uint) = 0; ! 23: ! 24: // キー名を返す (主にデバッグ表示用) ! 25: static const std::string GetName(uint code); ! 26: ! 27: protected: ! 28: // キー入力イベント ! 29: Event event {}; ! 30: ! 31: private: ! 32: static std::vector<const char *> keyname; ! 33: }; ! 34: ! 35: extern Keyboard *gKeyboard; ! 36: ! 37: // 抽象化キーボードレイヤーでのキーコード。 ! 38: // wxWidgets で受け取ったキーコードをこれに変換して VM に入力する。 ! 39: // VM のキーボードデバイスがこれを当該機種ごとのキーコードなり何なりに ! 40: // 変換して入力する。 ! 41: ! 42: #define KC_none (0) ! 43: ! 44: #define KC_BREAK (0x01) // [X68k] BREAK ! 45: #define KC_COPY (0x02) // [X68k] COPY ! 46: #define KC_romaji (0x03) // [X68k] ローマ字 ! 47: #define KC_code (0x04) // [X68k] コード入力 ! 48: #define KC_kigou (0x05) // [X68k] 記号入力 ! 49: #define KC_touroku (0x06) // [X68k] 登録 ! 50: #define KC_HELP (0x07) // [X68k] HELP ! 51: #define KC_HOME (0x08) // [X68k] HOME ! 52: #define KC_TAB (0x09) ! 53: #define KC_CTRL (0x0a) ! 54: #define KC_kana (0x0b) // かな ! 55: #define KC_SHIFT_L (0x0c) // SHIFT(左) ! 56: #define KC_SHIFT_R (0x0d) // SHIFT(右) ! 57: #define KC_SHIFT KC_SHIRT_L // 区別がない場合は L のほうを使う ! 58: #define KC_CAPS (0x0e) ! 59: #define KC_SF (0x0f) // [LUNA] S.F ! 60: ! 61: #define KC_ESC (0x10) ! 62: #define KC_BS (0x11) // BackSpace ! 63: #define KC_enter (0x12) // Enter (Return) ! 64: #define KC_INS (0x13) // [X68k] INS ! 65: #define KC_space (0x14) ! 66: #define KC_DEL (0x15) ! 67: #define KC_XFER (0x16) // [LUNA] XFER ! 68: #define KC_VALID (0x17) // [LUNA] VALID ! 69: #define KC_PF11 (0x18) // [LUNA] PF11 ! 70: #define KC_PF12 (0x19) // [LUNA] PF12 ! 71: #define KC_PF13 (0x1a) // [LUNA] PF13 ! 72: #define KC_PF14 (0x1b) // [LUNA] PF14 ! 73: #define KC_up (0x1c) // cursor up ! 74: #define KC_left (0x1d) // cursor left ! 75: #define KC_right (0x1e) // cursor right ! 76: #define KC_down (0x1f) // cursor down ! 77: ! 78: #define KC_ROLLUP (0x20) // [X68k] ROLL UP ! 79: #define KC_ROLLDOWN (0x21) // [X68k] ROLL DOWN ! 80: #define KC_1 (0x22) ! 81: #define KC_2 (0x23) ! 82: #define KC_3 (0x24) ! 83: #define KC_4 (0x25) ! 84: #define KC_5 (0x26) ! 85: #define KC_6 (0x27) ! 86: #define KC_7 (0x28) ! 87: #define KC_8 (0x29) ! 88: #define KC_9 (0x2a) ! 89: #define KC_0 (0x2b) ! 90: #define KC_minus (0x2c) ! 91: #define KC_circum (0x2d) // ^~ ! 92: #define KC_backslash (0x2e) // \| ! 93: #define KC_UNDO (0x2f) // [X68k] UNDO ! 94: ! 95: #define KC_OPT1 (0x30) // [X68k] OPT.1 ! 96: #define KC_OPT2 (0x31) // [X68k] OPT.2 ! 97: #define KC_Q (0x32) ! 98: #define KC_W (0x33) ! 99: #define KC_E (0x34) ! 100: #define KC_R (0x35) ! 101: #define KC_T (0x36) ! 102: #define KC_Y (0x37) ! 103: #define KC_U (0x38) ! 104: #define KC_I (0x39) ! 105: #define KC_O (0x3a) ! 106: #define KC_P (0x3b) ! 107: #define KC_at (0x3c) ! 108: #define KC_bracketleft (0x3d) // '[' ! 109: #define KC_hira (0x3e) // [X68k] ひらがな ! 110: #define KC_zenkaku (0x3f) // [X68k] 全角 ! 111: ! 112: #define KC_A (0x42) ! 113: #define KC_S (0x43) ! 114: #define KC_D (0x44) ! 115: #define KC_F (0x45) ! 116: #define KC_G (0x46) ! 117: #define KC_H (0x47) ! 118: #define KC_J (0x48) ! 119: #define KC_K (0x49) ! 120: #define KC_L (0x4a) ! 121: #define KC_semicolon (0x4b) ! 122: #define KC_colon (0x4c) ! 123: #define KC_bracketright (0x4d) // ']' ! 124: ! 125: #define KC_Z (0x52) ! 126: #define KC_X (0x53) ! 127: #define KC_C (0x54) ! 128: #define KC_V (0x55) ! 129: #define KC_B (0x56) ! 130: #define KC_N (0x57) ! 131: #define KC_M (0x58) ! 132: #define KC_comma (0x59) ! 133: #define KC_period (0x5a) ! 134: #define KC_slash (0x5b) ! 135: #define KC_underscore (0x5c) ! 136: ! 137: #define KC_PAD_plus (0x61) ! 138: #define KC_PAD_minus (0x62) ! 139: #define KC_PAD_7 (0x63) ! 140: #define KC_PAD_8 (0x64) ! 141: #define KC_PAD_9 (0x65) ! 142: #define KC_PAD_4 (0x66) ! 143: #define KC_PAD_5 (0x67) ! 144: #define KC_PAD_6 (0x68) ! 145: #define KC_PAD_1 (0x69) ! 146: #define KC_PAD_2 (0x6a) ! 147: #define KC_PAD_3 (0x6b) ! 148: #define KC_PAD_0 (0x6c) ! 149: #define KC_PAD_decimal (0x6d) // . ! 150: #define KC_PAD_enter (0x6e) ! 151: #define KC_PAD_CLR (0x6f) // [X68k] CLR ! 152: ! 153: #define KC_F1 (0x72) ! 154: #define KC_F2 (0x73) ! 155: #define KC_F3 (0x74) ! 156: #define KC_F4 (0x75) ! 157: #define KC_F5 (0x76) ! 158: #define KC_F6 (0x77) ! 159: #define KC_F7 (0x78) ! 160: #define KC_F8 (0x79) ! 161: #define KC_F9 (0x7a) ! 162: #define KC_F10 (0x7b) ! 163: #define KC_PAD_multiply (0x7c) ! 164: #define KC_PAD_divide (0x7d) ! 165: #define KC_PAD_equal (0x7e) ! 166: #define KC_PAD_comma (0x7f) ! 167: ! 168: #define KC_XF1 (0x80) // [X68k] XF1 ! 169: #define KC_XF2 (0x81) // [X68k] XF2 ! 170: #define KC_XF3 (0x82) // [X68k] XF3 ! 171: #define KC_XF4 (0x83) // [X68k] XF4 ! 172: #define KC_XF5 (0x84) // [X68k] XF5 ! 173: ! 174: #define KC_max (0x85)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.