diff --git a/src/input/keyboard.c b/src/input/keyboard.c index a26d60f..cfca287 100644 --- a/src/input/keyboard.c +++ b/src/input/keyboard.c @@ -188,12 +188,13 @@ bool keyboard_handle_set1_scancode(uint8_t scancode, keyboard_event_t *ev) { ev->pressed = pressed; ev->mods = keyboard_get_modifiers(); + keymap_result_t r = keymap_translate_keycode(keycode, ev->mods); + ev->codepoint = r.codepoint; + if (!pressed) { return true; } - keymap_result_t r = keymap_translate_keycode(keycode, ev->mods); - if (r.is_dead) { g_kb.dead_key = r.codepoint; return true; diff --git a/src/input/keymap.c b/src/input/keymap.c index 3a5cf8e..66a0b29 100644 --- a/src/input/keymap.c +++ b/src/input/keymap.c @@ -434,32 +434,34 @@ int keymap_legacy_key(uint16_t keycode, uint32_t codepoint) { case KEY_ENTER: case KEY_KP_ENTER: return '\n'; + case KEY_SPACE: return ' '; + case KEY_ARROW_UP: return 17; case KEY_ARROW_DOWN: return 18; case KEY_ARROW_LEFT: return 19; case KEY_ARROW_RIGHT: return 20; case KEY_LEFT_CTRL: - case KEY_RIGHT_CTRL: return 21; + case KEY_RIGHT_CTRL: return 161; case KEY_LEFT_SHIFT: - case KEY_RIGHT_SHIFT: return 24; - case KEY_LEFT_ALT: return 25; + case KEY_RIGHT_SHIFT: return 162; + case KEY_LEFT_ALT: return 163; case KEY_RIGHT_ALT: return 22; // for compat w/ doom case KEY_CAPS_LOCK: return 23; // same here case KEY_DELETE: return 127; - case KEY_F1: return 31; - case KEY_F2: return 32; - case KEY_F3: return 33; - case KEY_F4: return 34; - case KEY_F5: return 35; - case KEY_F6: return 36; - case KEY_F7: return 37; - case KEY_F8: return 38; - case KEY_F9: return 39; - case KEY_F10: return 40; - case KEY_F11: return 41; - case KEY_F12: return 42; + case KEY_F1: return 141; + case KEY_F2: return 142; + case KEY_F3: return 143; + case KEY_F4: return 144; + case KEY_F5: return 145; + case KEY_F6: return 146; + case KEY_F7: return 147; + case KEY_F8: return 148; + case KEY_F9: return 149; + case KEY_F10: return 150; + case KEY_F11: return 151; + case KEY_F12: return 152; default: return 0; } diff --git a/src/userland/games/doom/doomgeneric_boredos.c b/src/userland/games/doom/doomgeneric_boredos.c index db47c9b..8d201f7 100644 --- a/src/userland/games/doom/doomgeneric_boredos.c +++ b/src/userland/games/doom/doomgeneric_boredos.c @@ -93,18 +93,18 @@ int DG_GetKey(int* pressed, unsigned char* key) { else if (k == 18) dk = KEY_DOWNARROW; else if (k == 19) dk = KEY_LEFTARROW; else if (k == 20) dk = KEY_RIGHTARROW; - else if (k == 21) dk = KEY_FIRE; + else if (k == 161) dk = KEY_FIRE; else if (k == 22) dk = KEY_RALT; else if (k == 23) dk = KEY_CAPSLOCK; - else if (k == 24) dk = KEY_RSHIFT; - else if (k == 25) dk = KEY_LALT; + else if (k == 162) dk = KEY_RSHIFT; + else if (k == 163) dk = KEY_LALT; else if (k == 27) dk = KEY_ESCAPE; else if (k == '\b') dk = KEY_BACKSPACE; else if (k == '\t') dk = KEY_TAB; else if (k == 127) dk = KEY_DEL; - else if (k >= 31 && k <= 40) dk = KEY_F1 + (k - 31); - else if (k == 41) dk = KEY_F11; - else if (k == 42) dk = KEY_F12; + else if (k >= 141 && k <= 150) dk = KEY_F1 + (k - 141); + else if (k == 151) dk = KEY_F11; + else if (k == 152) dk = KEY_F12; else if (k == ' ') dk = KEY_USE; else if (k == '\n' || k == '\r') dk = KEY_ENTER; else if (k >= 'A' && k <= 'Z') dk = k + 32;