ibmpc_usb: Add scan code translation for 5576-002/3
This commit is contained in:
parent
17c2532950
commit
bf9a686982
1 changed files with 40 additions and 0 deletions
|
|
@ -751,6 +751,30 @@ static uint8_t cs2_e0code(uint8_t code) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IBM 5576-002/003 Scan code translation
|
||||||
|
// https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-AT-Keyboard-Protocol#ibm-5576-code-set-82h
|
||||||
|
static uint8_t translate_5576_cs2(uint8_t code) {
|
||||||
|
switch (code) {
|
||||||
|
case 0x11: return 0x0F; // Zenmen -> RALT
|
||||||
|
case 0x13: return 0x11; // Kanji -> LALT
|
||||||
|
case 0x0E: return 0x54; // @
|
||||||
|
case 0x54: return 0x5B; // [
|
||||||
|
case 0x5B: return 0x5D; // ]
|
||||||
|
case 0x5C: return 0x6A; // JYEN
|
||||||
|
case 0x5D: return 0x6A; // JYEN
|
||||||
|
case 0x62: return 0x0E; // Han/Zen -> `~
|
||||||
|
case 0x7C: return 0x77; // Keypad *
|
||||||
|
}
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
static uint8_t translate_5576_cs2_e0(uint8_t code) {
|
||||||
|
switch (code) {
|
||||||
|
case 0x11: return 0x13; // Hiragana -> KANA
|
||||||
|
case 0x41: return 0x7C; // Keypad '
|
||||||
|
}
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
static int8_t process_cs2(uint8_t code)
|
static int8_t process_cs2(uint8_t code)
|
||||||
{
|
{
|
||||||
// scan code reading states
|
// scan code reading states
|
||||||
|
|
@ -769,6 +793,9 @@ static int8_t process_cs2(uint8_t code)
|
||||||
|
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case INIT:
|
case INIT:
|
||||||
|
if (0xAB90 == keyboard_id || 0xAB91 == keyboard_id) {
|
||||||
|
code = translate_5576_cs2(code);
|
||||||
|
}
|
||||||
switch (code) {
|
switch (code) {
|
||||||
case 0xE0:
|
case 0xE0:
|
||||||
state = E0;
|
state = E0;
|
||||||
|
|
@ -802,6 +829,9 @@ static int8_t process_cs2(uint8_t code)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case E0: // E0-Prefixed
|
case E0: // E0-Prefixed
|
||||||
|
if (0xAB90 == keyboard_id || 0xAB91 == keyboard_id) {
|
||||||
|
code = translate_5576_cs2_e0(code);
|
||||||
|
}
|
||||||
switch (code) {
|
switch (code) {
|
||||||
case 0x12: // to be ignored
|
case 0x12: // to be ignored
|
||||||
case 0x59: // to be ignored
|
case 0x59: // to be ignored
|
||||||
|
|
@ -822,6 +852,9 @@ static int8_t process_cs2(uint8_t code)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F0: // Break code
|
case F0: // Break code
|
||||||
|
if (0xAB90 == keyboard_id || 0xAB91 == keyboard_id) {
|
||||||
|
code = translate_5576_cs2(code);
|
||||||
|
}
|
||||||
switch (code) {
|
switch (code) {
|
||||||
case 0x83: // F7
|
case 0x83: // F7
|
||||||
matrix_break(0x02);
|
matrix_break(0x02);
|
||||||
|
|
@ -843,6 +876,9 @@ static int8_t process_cs2(uint8_t code)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case E0_F0: // Break code of E0-prefixed
|
case E0_F0: // Break code of E0-prefixed
|
||||||
|
if (0xAB90 == keyboard_id || 0xAB91 == keyboard_id) {
|
||||||
|
code = translate_5576_cs2_e0(code);
|
||||||
|
}
|
||||||
switch (code) {
|
switch (code) {
|
||||||
case 0x12: // to be ignored
|
case 0x12: // to be ignored
|
||||||
case 0x59: // to be ignored
|
case 0x59: // to be ignored
|
||||||
|
|
@ -917,12 +953,15 @@ static int8_t process_cs2(uint8_t code)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Terminal: Scan Code Set 3
|
* Terminal: Scan Code Set 3
|
||||||
*
|
*
|
||||||
* See [3], [7] and
|
* See [3], [7] and
|
||||||
* https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-AT-Keyboard-Protocol#scan-code-set-3
|
* https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-AT-Keyboard-Protocol#scan-code-set-3
|
||||||
*/
|
*/
|
||||||
|
// IBM 5576-001 Scan code translation
|
||||||
|
// https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-AT-Keyboard-Protocol#ibm-5576-code-set-3
|
||||||
static uint8_t translate_5576_cs3(uint8_t code) {
|
static uint8_t translate_5576_cs3(uint8_t code) {
|
||||||
switch (code) {
|
switch (code) {
|
||||||
// Fix positon of keys to fit 122-key layout
|
// Fix positon of keys to fit 122-key layout
|
||||||
|
|
@ -933,6 +972,7 @@ static uint8_t translate_5576_cs3(uint8_t code) {
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int8_t process_cs3(uint8_t code)
|
static int8_t process_cs3(uint8_t code)
|
||||||
{
|
{
|
||||||
static enum {
|
static enum {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue