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