|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2018 [email protected]
4: //
5:
6: #include "x68kkbd.h"
7: #include "mfp.h"
8:
9: // コンストラクタ
10: X68030Keyboard::X68030Keyboard()
11: {
12: // MFP へキー入力を通知するイベント
13: #if 0
14: event.dev = gMFP;
15: event.func = (DeviceCallback_t)&MFPDevice::Rx;
16: event.time = 0;
1.1.1.2 ! root 17: event.SetName("KeyInput");
1.1 root 18: #endif
19: }
20:
21: // デストラクタ
22: X68030Keyboard::~X68030Keyboard()
23: {
24: }
25:
26: // キーを押した
27: void
28: X68030Keyboard::MakeKey(uint keycode)
29: {
30: uint x68kkey;
31:
32: // 共通キーコードから X680x0 キーコードに
33: x68kkey = keycode2x68kkey(keycode);
34:
35: // X680x0 にないキーは無視
36: if (x68kkey == NoKey) {
37: return;
38: }
39:
40: putlog(1, "MakeKey %d(%s)", x68kkey, keyname[x68kkey]);
41:
42: // MFP に通知
43: event.code = x68kkey;
44: // gScheduler->AddEvent(&event);
45: }
46:
47: // キーを離した
48: void
49: X68030Keyboard::BreakKey(uint keycode)
50: {
51: uint x68kkey;
52:
53: // 共通キーコードから X680x0 キーコードに
54: x68kkey = keycode2x68kkey(keycode);
55:
56: // X680x0 にないキーは無視
57: if (x68kkey == NoKey) {
58: return;
59: }
60:
61: putlog(2, "BreakKey %d(%s)", x68kkey, keyname[x68kkey]);
62:
63: // MFP に通知
64: event.code = x68kkey | 0x80;
65: // gScheduler->AddEvent(&event);
66: }
67:
1.1.1.2 ! root 68: // マウス入力
! 69: void
! 70: X68030Keyboard::MouseInput(int x, int y, bool rb, bool lb, bool mb)
! 71: {
! 72: }
! 73:
1.1 root 74: // 共通キーコードを X680x0 キーコードに変換して返す。
75: // X680x0 キーがなければ NoKey を返す。
76: uint
77: X68030Keyboard::keycode2x68kkey(uint keycode)
78: {
79: if (keycode >= countof(keycode2x68kkey_table)) {
80: return NoKey;
81: }
82:
83: return keycode2x68kkey_table[keycode];
84: }
85:
86: // キーコード変換表
87: // 共通キーコードから X680x0 キーコードに変換する。
88: /*static*/ const uint
89: X68030Keyboard::keycode2x68kkey_table[133] = {
90: NoKey, // [00]
91: X68kKey_BREAK, // [01]
92: X68kKey_COPY, // [02]
93: X68kKey_romaji, // [03]
94: X68kKey_kana, // [04]
95: X68kKey_kigou, // [05]
96: X68kKey_touroku, // [06]
97: X68kKey_HELP, // [07]
98: X68kKey_HOME, // [08]
99: X68kKey_TAB, // [09]
100: X68kKey_CTRL, // [0a]
101: X68kKey_kana, // [0b]
102: X68kKey_SHIFT, // [0c]
103: NoKey, // [0d]
104: X68kKey_CAPS, // [0e]
105: NoKey, // [0f]
106:
107: X68kKey_ESC, // [10]
108: X68kKey_BS, // [11]
109: X68kKey_enter, // [12]
110: X68kKey_INS, // [13]
111: X68kKey_space, // [14]
112: X68kKey_DEL, // [15]
113: NoKey, // [16]
114: NoKey, // [17]
115: NoKey, // [18]
116: NoKey, // [19]
117: NoKey, // [1a]
118: NoKey, // [1b]
119: X68kKey_up, // [1c]
120: X68kKey_left, // [1d]
121: X68kKey_right, // [1e]
122: X68kKey_down, // [1f]
123:
124: X68kKey_ROLLUP, // [20]
125: X68kKey_ROLLDOWN, // [21]
126: X68kKey_1, // [22]
127: X68kKey_2, // [23]
128: X68kKey_3, // [24]
129: X68kKey_4, // [25]
130: X68kKey_5, // [26]
131: X68kKey_6, // [27]
132: X68kKey_7, // [28]
133: X68kKey_8, // [29]
134: X68kKey_9, // [2a]
135: X68kKey_0, // [2b]
136: X68kKey_minus, // [2c]
137: X68kKey_circum, // [2d]
138: X68kKey_backslash, // [2e]
139: X68kKey_UNDO, // [2f]
140:
141: X68kKey_OPT1, // [30]
142: X68kKey_OPT2, // [31]
143: X68kKey_Q, // [32]
144: X68kKey_W, // [33]
145: X68kKey_E, // [34]
146: X68kKey_R, // [35]
147: X68kKey_T, // [36]
148: X68kKey_Y, // [37]
149: X68kKey_U, // [38]
150: X68kKey_I, // [39]
151: X68kKey_O, // [3a]
152: X68kKey_P, // [3b]
153: X68kKey_at, // [3c]
154: X68kKey_bracketleft, // [3d]
155: X68kKey_hira, // [3e]
156: X68kKey_zenkaku, // [3f]
157:
158: NoKey, // [40]
159: NoKey, // [41]
160: X68kKey_A, // [42]
161: X68kKey_S, // [43]
162: X68kKey_D, // [44]
163: X68kKey_F, // [45]
164: X68kKey_G, // [46]
165: X68kKey_H, // [47]
166: X68kKey_J, // [48]
167: X68kKey_K, // [49]
168: X68kKey_L, // [4a]
169: X68kKey_semicolon, // [4b]
170: X68kKey_colon, // [4c]
171: X68kKey_bracketright, // [4d]
172: NoKey, // [4e]
173: NoKey, // [4f]
174:
175: NoKey, // [50]
176: NoKey, // [51]
177: X68kKey_Z, // [52]
178: X68kKey_X, // [53]
179: X68kKey_C, // [54]
180: X68kKey_V, // [55]
181: X68kKey_B, // [56]
182: X68kKey_M, // [57]
183: X68kKey_N, // [58]
184: X68kKey_comma, // [59]
185: X68kKey_period, // [5a]
186: X68kKey_slash, // [5b]
187: X68kKey_underscore, // [5c]
188: NoKey, // [5d]
189: NoKey, // [5e]
190: NoKey, // [5f]
191:
192: NoKey, // [60]
193: X68kKey_PAD_plus, // [61]
194: X68kKey_PAD_minus, // [62]
195: X68kKey_PAD_7, // [63]
196: X68kKey_PAD_8, // [64]
197: X68kKey_PAD_9, // [65]
198: X68kKey_PAD_4, // [66]
199: X68kKey_PAD_5, // [67]
200: X68kKey_PAD_6, // [68]
201: X68kKey_PAD_1, // [69]
202: X68kKey_PAD_2, // [6a]
203: X68kKey_PAD_3, // [6b]
204: X68kKey_PAD_0, // [6c]
205: X68kKey_PAD_decimal, // [6d]
206: X68kKey_PAD_enter, // [6e]
207: X68kKey_PAD_CLR, // [6f]
208:
209: NoKey, // [70]
210: NoKey, // [71]
211: X68kKey_F1, // [72]
212: X68kKey_F2, // [73]
213: X68kKey_F3, // [74]
214: X68kKey_F4, // [75]
215: X68kKey_F5, // [76]
216: X68kKey_F6, // [77]
217: X68kKey_F7, // [78]
218: X68kKey_F8, // [79]
219: X68kKey_F9, // [7a]
220: X68kKey_F10, // [7b]
221: X68kKey_PAD_multiply, // [7c]
222: X68kKey_PAD_divide, // [7d]
223: X68kKey_PAD_equal, // [7e]
224: X68kKey_PAD_comma, // [7f]
225:
226: X68kKey_XF1, // [80]
227: X68kKey_XF2, // [81]
228: X68kKey_XF3, // [82]
229: X68kKey_XF4, // [83]
230: X68kKey_XF5, // [84]
231: };
232:
233: /*static*/ const char * const
234: X68030Keyboard::keyname[] =
235: {
236: "", // 00
237: "ESC", // 01
238: "1!", // 02
239: "2\"", // 03
240: "3#", // 04
241: "4$", // 05
242: "5%", // 06
243: "6&", // 07
244: "7'", // 08
245: "8(", // 09
246: "9)", // 0a
247: "0", // 0b
248: "-=", // 0c
249: "^~", // 0d
250: "\\|", // 0e
251: "BS", // 0f
252:
253: "TAB", // 10
254: "Q", // 11
255: "W", // 12
256: "E", // 13
257: "R", // 14
258: "T", // 15
259: "Y", // 16
260: "U", // 17
261: "I", // 18
262: "O", // 19
263: "P", // 1a
264: "@`", // 1b
265: "[{", // 1c
266: "Enter", // 1d
267: "A", // 1e
268: "S", // 1f
269:
270: "D", // 20
271: "F", // 21
272: "G", // 22
273: "H", // 23
274: "J", // 24
275: "K", // 25
276: "L", // 26
277: ";+", // 27
278: ":*", // 28
279: "]}", // 29
280: "Z", // 2a
281: "X", // 2b
282: "C", // 2c
283: "V", // 2d
284: "B", // 2e
285: "N", // 2f
286:
287: "M", // 30
288: ",<", // 31
289: ".>", // 32
290: "/?", // 33
291: " _", // 34
292: "Space", // 35
293: "HOME", // 36
294: "DEL", // 37
295: "ROLLUP", // 38
296: "ROLLDOWN", // 39
297: "UNDO", // 3a
298: "←", // 3b
299: "↑", // 3c
300: "→", // 3d
301: "↓", // 3e
302: "PADCLR", // 3f
303:
304: "PAD/", // 40
305: "PAD*", // 41
306: "PAD-", // 42
307: "PAD7", // 43
308: "PAD8", // 44
309: "PAD9", // 45
310: "PAD+", // 46
311: "PAD4", // 47
312: "PAD5", // 48
313: "PAD6", // 49
314: "PAD=", // 4a
315: "PAD1", // 4b
316: "PAD2", // 4c
317: "PAD3", // 4d
318: "PADEnter", // 4e
319: "PAD0", // 4f
320:
321: "PAD,", // 50
322: "PAD.", // 51
323: "記号", // 52
324: "登録", // 53
325: "HELP", // 54
326: "XF1", // 55
327: "XF2", // 56
328: "XF3", // 57
329: "XF4", // 58
330: "XF5", // 59
331: "かな", // 5a
332: "ローマ字", // 5b
333: "コード", // 5c
334: "CAPS", // 5d
335: "INS", // 5e
336: "ひらがな", // 5f
337:
338: "全角", // 60
339: "BREAK", // 61
340: "COPY", // 62
341: "F1", // 63
342: "F2", // 64
343: "F3", // 65
344: "F4", // 66
345: "F5", // 67
346: "F6", // 68
347: "F7", // 69
348: "F8", // 6a
349: "F9", // 6b
350: "F10", // 6c
351: "", // 6d
352: "", // 6e
353: "", // 6f
354:
355: "SHIFT", // 70
356: "CTRL", // 71
357: "OPT1", // 72
358: "OPT2", // 73
359: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.