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