|
|
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.