diff --git a/src/input/keymap.c b/src/input/keymap.c index d5081ac..3a5cf8e 100644 --- a/src/input/keymap.c +++ b/src/input/keymap.c @@ -439,9 +439,28 @@ int keymap_legacy_key(uint16_t keycode, uint32_t codepoint) { case KEY_ARROW_LEFT: return 19; case KEY_ARROW_RIGHT: return 20; + case KEY_LEFT_CTRL: + case KEY_RIGHT_CTRL: return 21; + case KEY_LEFT_SHIFT: + case KEY_RIGHT_SHIFT: return 24; + case KEY_LEFT_ALT: return 25; 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; + default: return 0; } } \ No newline at end of file diff --git a/src/userland/games/doom/doomgeneric_boredos.c b/src/userland/games/doom/doomgeneric_boredos.c index 5140233..db47c9b 100644 --- a/src/userland/games/doom/doomgeneric_boredos.c +++ b/src/userland/games/doom/doomgeneric_boredos.c @@ -96,7 +96,15 @@ int DG_GetKey(int* pressed, unsigned char* key) { else if (k == 21) 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 == 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 == ' ') dk = KEY_USE; else if (k == '\n' || k == '\r') dk = KEY_ENTER; else if (k >= 'A' && k <= 'Z') dk = k + 32;