E1_F0,
E1_F0_14,
E1_F0_14_F0,
-#ifdef G80_2551_SUPPORT
- // G80-2551 four extra keys around cursor keys
- G80,
- G80_F0,
-#endif
} state = INIT;
uint16_t code = ibmpc_host_recv();
state = INIT;
return -1;
break;
-#ifdef G80_2551_SUPPORT
- /*
- * G80-2551 terminal keyboard support
- */
- case 0x80: // G80-2551 four extra keys around cursor keys
- state = G80;
- break;
- case 0x19:
- matrix_make(0x7F); // MUTE
- break;
- case 0x39:
- matrix_make(0x6E); // VOLU
- break;
- case 0x53:
- matrix_make(0x65); // VOLD
- break;
- case 0x6F:
- matrix_make(0x5C); // APP
- break;
- case 0x5C:
- matrix_make(0x19); // LGUI
- break;
- case 0x1F:
- matrix_make(0x1F); // RGUI
- break;
- case 0x27:
- matrix_make(0x67); // MHEN
- break;
- case 0x2F:
- matrix_make(0x57); // F23
- break;
- case 0x5E:
- matrix_make(0x64); // HENK
- break;
- case 0x17:
- matrix_make(0x77); // NLCK
- break;
-#endif
default: // normal key make
state = INIT;
if (code < 0x80) {
matrix_break(0x6F);
state = INIT;
break;
-#ifdef G80_2551_SUPPORT
- /*
- * G80-2551 terminal keyboard support
- * https://deskthority.net/wiki/Cherry_G80-2551
- * https://geekhack.org/index.php?topic=103648.msg2893404#msg2893404
- * https://gist.github.com/tmk/22cb8680ca8ef854630ecd1953268c5b
- */
- case 0x19:
- matrix_break(0x7F); // MUTE
- state = INIT;
- break;
- case 0x39:
- matrix_break(0x6E); // VOLU
- state = INIT;
- break;
- case 0x53:
- matrix_break(0x65); // VOLD
- state = INIT;
- break;
- case 0x6F:
- matrix_break(0x5C); // APP
- state = INIT;
- break;
- case 0x5C:
- matrix_break(0x19); // LGUI
- state = INIT;
- break;
- case 0x1F:
- matrix_break(0x1F); // RGUI
- state = INIT;
- break;
- case 0x27:
- matrix_break(0x67); // MHEN
- state = INIT;
- break;
- case 0x2F:
- matrix_break(0x57); // F23
- state = INIT;
- break;
- case 0x5E:
- matrix_break(0x64); // HENK
- state = INIT;
- break;
- case 0x17:
- matrix_break(0x77); // NLCK
- state = INIT;
- break;
-#endif
default:
state = INIT;
if (code < 0x80) {
state = INIT;
}
break;
-#ifdef G80_2551_SUPPORT
- case G80: // G80-2551 four extra keys around cursor keys
- switch (code) {
- case (0x26): // TD= -> JYEN
- matrix_make(0x6A);
- break;
- case (0x25): // page with edge -> NUHS
- matrix_make(0x68);
- break;
- case (0x16): // two pages -> RO
- matrix_make(0x51);
- break;
- case (0x1E): // calc -> KANA
- matrix_make(0x13);
- break;
- case (0xF0):
- state = G80_F0;
- return 0;
- default:
- // Not supported
- matrix_clear();
- break;
- }
- state = INIT;
- break;
- case G80_F0:
- switch (code) {
- case (0x26): // TD= -> JYEN
- matrix_break(0x6A);
- break;
- case (0x25): // page with edge -> NUHS
- matrix_break(0x68);
- break;
- case (0x16): // two pages -> RO
- matrix_break(0x51);
- break;
- case (0x1E): // calc -> KANA
- matrix_break(0x13);
- break;
- default:
- // Not supported
- matrix_clear();
- break;
- }
- state = INIT;
- break;
-#endif
default:
state = INIT;
}