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