diff --git a/src/platform/SDL2Renderer.cpp b/src/platform/SDL2Renderer.cpp index b94604a..834324f 100644 --- a/src/platform/SDL2Renderer.cpp +++ b/src/platform/SDL2Renderer.cpp @@ -870,14 +870,50 @@ int sdlScancodeToSfKey(int sdlScancode) { case SDL_SCANCODE_RSHIFT: return Keyboard::RShift; case SDL_SCANCODE_RALT: return Keyboard::RAlt; 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_RETURN: return Keyboard::Enter; case SDL_SCANCODE_BACKSPACE: return Keyboard::Backspace; 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_RIGHT: return Keyboard::Right; case SDL_SCANCODE_UP: return Keyboard::Up; 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_F2: return Keyboard::F2; 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_F11: return Keyboard::F11; 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; } } int sfKeyToSdlScancode(int sfKey) { - // Reverse mapping (simplified) switch (sfKey) { case Keyboard::A: return SDL_SCANCODE_A; - case Keyboard::W: return SDL_SCANCODE_W; - case Keyboard::S: return SDL_SCANCODE_S; + case Keyboard::B: return SDL_SCANCODE_B; + case Keyboard::C: return SDL_SCANCODE_C; 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; - // 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; } }