SDL key scancode fixes (7DRL 2026 hotfix)

This commit is contained in:
John McCardle 2026-03-07 10:08:59 -05:00
commit cdae3b3ac9

View file

@ -870,14 +870,50 @@ int sdlScancodeToSfKey(int sdlScancode) {
case SDL_SCANCODE_RSHIFT: return Keyboard::RShift; case SDL_SCANCODE_RSHIFT: return Keyboard::RShift;
case SDL_SCANCODE_RALT: return Keyboard::RAlt; case SDL_SCANCODE_RALT: return Keyboard::RAlt;
case SDL_SCANCODE_RGUI: return Keyboard::RSystem; case SDL_SCANCODE_RGUI: return Keyboard::RSystem;
case SDL_SCANCODE_MENU: return Keyboard::Menu;
// Punctuation and symbols
case SDL_SCANCODE_LEFTBRACKET: return Keyboard::LBracket;
case SDL_SCANCODE_RIGHTBRACKET: return Keyboard::RBracket;
case SDL_SCANCODE_SEMICOLON: return Keyboard::Semicolon;
case SDL_SCANCODE_COMMA: return Keyboard::Comma;
case SDL_SCANCODE_PERIOD: return Keyboard::Period;
case SDL_SCANCODE_APOSTROPHE: return Keyboard::Apostrophe;
case SDL_SCANCODE_SLASH: return Keyboard::Slash;
case SDL_SCANCODE_BACKSLASH: return Keyboard::Backslash;
case SDL_SCANCODE_GRAVE: return Keyboard::Grave;
case SDL_SCANCODE_EQUALS: return Keyboard::Equal;
case SDL_SCANCODE_MINUS: return Keyboard::Hyphen;
case SDL_SCANCODE_SPACE: return Keyboard::Space; case SDL_SCANCODE_SPACE: return Keyboard::Space;
case SDL_SCANCODE_RETURN: return Keyboard::Enter; case SDL_SCANCODE_RETURN: return Keyboard::Enter;
case SDL_SCANCODE_BACKSPACE: return Keyboard::Backspace; case SDL_SCANCODE_BACKSPACE: return Keyboard::Backspace;
case SDL_SCANCODE_TAB: return Keyboard::Tab; case SDL_SCANCODE_TAB: return Keyboard::Tab;
// Navigation
case SDL_SCANCODE_PAGEUP: return Keyboard::PageUp;
case SDL_SCANCODE_PAGEDOWN: return Keyboard::PageDown;
case SDL_SCANCODE_END: return Keyboard::End;
case SDL_SCANCODE_HOME: return Keyboard::Home;
case SDL_SCANCODE_INSERT: return Keyboard::Insert;
case SDL_SCANCODE_DELETE: return Keyboard::Delete;
case SDL_SCANCODE_LEFT: return Keyboard::Left; case SDL_SCANCODE_LEFT: return Keyboard::Left;
case SDL_SCANCODE_RIGHT: return Keyboard::Right; case SDL_SCANCODE_RIGHT: return Keyboard::Right;
case SDL_SCANCODE_UP: return Keyboard::Up; case SDL_SCANCODE_UP: return Keyboard::Up;
case SDL_SCANCODE_DOWN: return Keyboard::Down; case SDL_SCANCODE_DOWN: return Keyboard::Down;
// Numpad
case SDL_SCANCODE_KP_0: return Keyboard::Numpad0;
case SDL_SCANCODE_KP_1: return Keyboard::Numpad1;
case SDL_SCANCODE_KP_2: return Keyboard::Numpad2;
case SDL_SCANCODE_KP_3: return Keyboard::Numpad3;
case SDL_SCANCODE_KP_4: return Keyboard::Numpad4;
case SDL_SCANCODE_KP_5: return Keyboard::Numpad5;
case SDL_SCANCODE_KP_6: return Keyboard::Numpad6;
case SDL_SCANCODE_KP_7: return Keyboard::Numpad7;
case SDL_SCANCODE_KP_8: return Keyboard::Numpad8;
case SDL_SCANCODE_KP_9: return Keyboard::Numpad9;
case SDL_SCANCODE_KP_PLUS: return Keyboard::Add;
case SDL_SCANCODE_KP_MINUS: return Keyboard::Subtract;
case SDL_SCANCODE_KP_MULTIPLY: return Keyboard::Multiply;
case SDL_SCANCODE_KP_DIVIDE: return Keyboard::Divide;
// Function keys
case SDL_SCANCODE_F1: return Keyboard::F1; case SDL_SCANCODE_F1: return Keyboard::F1;
case SDL_SCANCODE_F2: return Keyboard::F2; case SDL_SCANCODE_F2: return Keyboard::F2;
case SDL_SCANCODE_F3: return Keyboard::F3; case SDL_SCANCODE_F3: return Keyboard::F3;
@ -890,20 +926,117 @@ int sdlScancodeToSfKey(int sdlScancode) {
case SDL_SCANCODE_F10: return Keyboard::F10; case SDL_SCANCODE_F10: return Keyboard::F10;
case SDL_SCANCODE_F11: return Keyboard::F11; case SDL_SCANCODE_F11: return Keyboard::F11;
case SDL_SCANCODE_F12: return Keyboard::F12; case SDL_SCANCODE_F12: return Keyboard::F12;
case SDL_SCANCODE_F13: return Keyboard::F13;
case SDL_SCANCODE_F14: return Keyboard::F14;
case SDL_SCANCODE_F15: return Keyboard::F15;
case SDL_SCANCODE_PAUSE: return Keyboard::Pause;
default: return Keyboard::Unknown; default: return Keyboard::Unknown;
} }
} }
int sfKeyToSdlScancode(int sfKey) { int sfKeyToSdlScancode(int sfKey) {
// Reverse mapping (simplified)
switch (sfKey) { switch (sfKey) {
case Keyboard::A: return SDL_SCANCODE_A; case Keyboard::A: return SDL_SCANCODE_A;
case Keyboard::W: return SDL_SCANCODE_W; case Keyboard::B: return SDL_SCANCODE_B;
case Keyboard::S: return SDL_SCANCODE_S; case Keyboard::C: return SDL_SCANCODE_C;
case Keyboard::D: return SDL_SCANCODE_D; case Keyboard::D: return SDL_SCANCODE_D;
case Keyboard::Space: return SDL_SCANCODE_SPACE; case Keyboard::E: return SDL_SCANCODE_E;
case Keyboard::F: return SDL_SCANCODE_F;
case Keyboard::G: return SDL_SCANCODE_G;
case Keyboard::H: return SDL_SCANCODE_H;
case Keyboard::I: return SDL_SCANCODE_I;
case Keyboard::J: return SDL_SCANCODE_J;
case Keyboard::K: return SDL_SCANCODE_K;
case Keyboard::L: return SDL_SCANCODE_L;
case Keyboard::M: return SDL_SCANCODE_M;
case Keyboard::N: return SDL_SCANCODE_N;
case Keyboard::O: return SDL_SCANCODE_O;
case Keyboard::P: return SDL_SCANCODE_P;
case Keyboard::Q: return SDL_SCANCODE_Q;
case Keyboard::R: return SDL_SCANCODE_R;
case Keyboard::S: return SDL_SCANCODE_S;
case Keyboard::T: return SDL_SCANCODE_T;
case Keyboard::U: return SDL_SCANCODE_U;
case Keyboard::V: return SDL_SCANCODE_V;
case Keyboard::W: return SDL_SCANCODE_W;
case Keyboard::X: return SDL_SCANCODE_X;
case Keyboard::Y: return SDL_SCANCODE_Y;
case Keyboard::Z: return SDL_SCANCODE_Z;
case Keyboard::Num0: return SDL_SCANCODE_0;
case Keyboard::Num1: return SDL_SCANCODE_1;
case Keyboard::Num2: return SDL_SCANCODE_2;
case Keyboard::Num3: return SDL_SCANCODE_3;
case Keyboard::Num4: return SDL_SCANCODE_4;
case Keyboard::Num5: return SDL_SCANCODE_5;
case Keyboard::Num6: return SDL_SCANCODE_6;
case Keyboard::Num7: return SDL_SCANCODE_7;
case Keyboard::Num8: return SDL_SCANCODE_8;
case Keyboard::Num9: return SDL_SCANCODE_9;
case Keyboard::Escape: return SDL_SCANCODE_ESCAPE; case Keyboard::Escape: return SDL_SCANCODE_ESCAPE;
// Add more as needed case Keyboard::LControl: return SDL_SCANCODE_LCTRL;
case Keyboard::LShift: return SDL_SCANCODE_LSHIFT;
case Keyboard::LAlt: return SDL_SCANCODE_LALT;
case Keyboard::LSystem: return SDL_SCANCODE_LGUI;
case Keyboard::RControl: return SDL_SCANCODE_RCTRL;
case Keyboard::RShift: return SDL_SCANCODE_RSHIFT;
case Keyboard::RAlt: return SDL_SCANCODE_RALT;
case Keyboard::RSystem: return SDL_SCANCODE_RGUI;
case Keyboard::Menu: return SDL_SCANCODE_MENU;
case Keyboard::LBracket: return SDL_SCANCODE_LEFTBRACKET;
case Keyboard::RBracket: return SDL_SCANCODE_RIGHTBRACKET;
case Keyboard::Semicolon: return SDL_SCANCODE_SEMICOLON;
case Keyboard::Comma: return SDL_SCANCODE_COMMA;
case Keyboard::Period: return SDL_SCANCODE_PERIOD;
case Keyboard::Apostrophe: return SDL_SCANCODE_APOSTROPHE;
case Keyboard::Slash: return SDL_SCANCODE_SLASH;
case Keyboard::Backslash: return SDL_SCANCODE_BACKSLASH;
case Keyboard::Grave: return SDL_SCANCODE_GRAVE;
case Keyboard::Equal: return SDL_SCANCODE_EQUALS;
case Keyboard::Hyphen: return SDL_SCANCODE_MINUS;
case Keyboard::Space: return SDL_SCANCODE_SPACE;
case Keyboard::Enter: return SDL_SCANCODE_RETURN;
case Keyboard::Backspace: return SDL_SCANCODE_BACKSPACE;
case Keyboard::Tab: return SDL_SCANCODE_TAB;
case Keyboard::PageUp: return SDL_SCANCODE_PAGEUP;
case Keyboard::PageDown: return SDL_SCANCODE_PAGEDOWN;
case Keyboard::End: return SDL_SCANCODE_END;
case Keyboard::Home: return SDL_SCANCODE_HOME;
case Keyboard::Insert: return SDL_SCANCODE_INSERT;
case Keyboard::Delete: return SDL_SCANCODE_DELETE;
case Keyboard::Left: return SDL_SCANCODE_LEFT;
case Keyboard::Right: return SDL_SCANCODE_RIGHT;
case Keyboard::Up: return SDL_SCANCODE_UP;
case Keyboard::Down: return SDL_SCANCODE_DOWN;
case Keyboard::Numpad0: return SDL_SCANCODE_KP_0;
case Keyboard::Numpad1: return SDL_SCANCODE_KP_1;
case Keyboard::Numpad2: return SDL_SCANCODE_KP_2;
case Keyboard::Numpad3: return SDL_SCANCODE_KP_3;
case Keyboard::Numpad4: return SDL_SCANCODE_KP_4;
case Keyboard::Numpad5: return SDL_SCANCODE_KP_5;
case Keyboard::Numpad6: return SDL_SCANCODE_KP_6;
case Keyboard::Numpad7: return SDL_SCANCODE_KP_7;
case Keyboard::Numpad8: return SDL_SCANCODE_KP_8;
case Keyboard::Numpad9: return SDL_SCANCODE_KP_9;
case Keyboard::Add: return SDL_SCANCODE_KP_PLUS;
case Keyboard::Subtract: return SDL_SCANCODE_KP_MINUS;
case Keyboard::Multiply: return SDL_SCANCODE_KP_MULTIPLY;
case Keyboard::Divide: return SDL_SCANCODE_KP_DIVIDE;
case Keyboard::F1: return SDL_SCANCODE_F1;
case Keyboard::F2: return SDL_SCANCODE_F2;
case Keyboard::F3: return SDL_SCANCODE_F3;
case Keyboard::F4: return SDL_SCANCODE_F4;
case Keyboard::F5: return SDL_SCANCODE_F5;
case Keyboard::F6: return SDL_SCANCODE_F6;
case Keyboard::F7: return SDL_SCANCODE_F7;
case Keyboard::F8: return SDL_SCANCODE_F8;
case Keyboard::F9: return SDL_SCANCODE_F9;
case Keyboard::F10: return SDL_SCANCODE_F10;
case Keyboard::F11: return SDL_SCANCODE_F11;
case Keyboard::F12: return SDL_SCANCODE_F12;
case Keyboard::F13: return SDL_SCANCODE_F13;
case Keyboard::F14: return SDL_SCANCODE_F14;
case Keyboard::F15: return SDL_SCANCODE_F15;
case Keyboard::Pause: return SDL_SCANCODE_PAUSE;
default: return SDL_SCANCODE_UNKNOWN; default: return SDL_SCANCODE_UNKNOWN;
} }
} }