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