From eb75efc90389a24734b9c7e5ca81562571904c28 Mon Sep 17 00:00:00 2001 From: nickci2002 Date: Mon, 16 Jun 2025 18:23:36 -0400 Subject: [PATCH] Fixing my pull request branch --- src/input/input_handler.cpp | 17 +++-- src/input/input_handler.h | 129 ++++++++++++++++++++++-------------- 2 files changed, 91 insertions(+), 55 deletions(-) diff --git a/src/input/input_handler.cpp b/src/input/input_handler.cpp index 3e2d66a6b..785e96d41 100644 --- a/src/input/input_handler.cpp +++ b/src/input/input_handler.cpp @@ -176,7 +176,7 @@ InputBinding GetBindingFromString(std::string& line) { if (string_to_keyboard_key_map.find(t) != string_to_keyboard_key_map.end()) { input = InputID(InputType::KeyboardMouse, string_to_keyboard_key_map.at(t)); } else if (string_to_axis_map.find(t) != string_to_axis_map.end()) { - input = InputID(InputType::Axis, (u32)string_to_axis_map.at(t).axis); + input = InputID(InputType::Axis, string_to_axis_map.at(t).axis); } else if (string_to_cbutton_map.find(t) != string_to_cbutton_map.end()) { input = InputID(InputType::Controller, string_to_cbutton_map.at(t)); } else { @@ -411,7 +411,7 @@ void ParseInputConfig(const std::string game_id = "") { u32 GetMouseWheelEvent(const SDL_Event& event) { if (event.type != SDL_EVENT_MOUSE_WHEEL && event.type != SDL_EVENT_MOUSE_WHEEL_OFF) { LOG_WARNING(Input, "Something went wrong with wheel input parsing!"); - return (u32)-1; + return UINT32_MAX; } if (event.wheel.y > 0) { return SDL_MOUSE_WHEEL_UP; @@ -422,7 +422,7 @@ u32 GetMouseWheelEvent(const SDL_Event& event) { } else if (event.wheel.x < 0) { return SDL_MOUSE_WHEEL_LEFT; } - return (u32)-1; + return UINT32_MAX; } InputEvent InputBinding::GetInputEventFromSDLEvent(const SDL_Event& e) { @@ -432,16 +432,19 @@ InputEvent InputBinding::GetInputEventFromSDLEvent(const SDL_Event& e) { return InputEvent(InputType::KeyboardMouse, e.key.key, e.key.down, 0); case SDL_EVENT_MOUSE_BUTTON_DOWN: case SDL_EVENT_MOUSE_BUTTON_UP: - return InputEvent(InputType::KeyboardMouse, (u32)e.button.button, e.button.down, 0); + return InputEvent(InputType::KeyboardMouse, static_cast(e.button.button), + e.button.down, 0); case SDL_EVENT_MOUSE_WHEEL: case SDL_EVENT_MOUSE_WHEEL_OFF: return InputEvent(InputType::KeyboardMouse, GetMouseWheelEvent(e), e.type == SDL_EVENT_MOUSE_WHEEL, 0); case SDL_EVENT_GAMEPAD_BUTTON_DOWN: case SDL_EVENT_GAMEPAD_BUTTON_UP: - return InputEvent(InputType::Controller, (u32)e.gbutton.button, e.gbutton.down, 0); + return InputEvent(InputType::Controller, static_cast(e.gbutton.button), + e.gbutton.down, 0); case SDL_EVENT_GAMEPAD_AXIS_MOTION: - return InputEvent(InputType::Axis, (u32)e.gaxis.axis, true, e.gaxis.value / 256); + return InputEvent(InputType::Axis, static_cast(e.gaxis.axis), + true, e.gaxis.value / 256); default: return InputEvent(); } @@ -570,7 +573,7 @@ void ControllerOutput::FinalizeUpdate() { bool UpdatePressedKeys(InputEvent event) { // Skip invalid inputs InputID input = event.input; - if (input.sdl_id == (u32)-1) { + if (input.sdl_id == UINT32_MAX) { return false; } if (input.type == InputType::Axis) { diff --git a/src/input/input_handler.h b/src/input/input_handler.h index 0178e7937..94b43c77c 100644 --- a/src/input/input_handler.h +++ b/src/input/input_handler.h @@ -49,7 +49,7 @@ class InputID { public: InputType type; u32 sdl_id; - InputID(InputType d = InputType::Count, u32 i = (u32)-1) : type(d), sdl_id(i) {} + InputID(InputType d = InputType::Count, u32 i = UINT32_MAX) : type(d), sdl_id(i) {} bool operator==(const InputID& o) const { return type == o.type && sdl_id == o.sdl_id; } @@ -63,7 +63,7 @@ public: return *this != InputID(); } std::string ToString() { - return fmt::format("({}: {:x})", input_type_names[(u8)type], sdl_id); + return fmt::format("({}: {:x})", input_type_names[static_cast(type)], sdl_id); } }; @@ -124,6 +124,7 @@ const std::map string_to_axis_map = { {"axis_right_y", {SDL_GAMEPAD_AXIS_RIGHTY, 127}}, }; const std::map string_to_keyboard_key_map = { + // alphanumeric {"a", SDLK_A}, {"b", SDLK_B}, {"c", SDLK_C}, @@ -160,6 +161,73 @@ const std::map string_to_keyboard_key_map = { {"7", SDLK_7}, {"8", SDLK_8}, {"9", SDLK_9}, + + // symbols + {"`", SDLK_GRAVE}, + {"~", SDLK_TILDE}, + {"!", SDLK_EXCLAIM}, + {"@", SDLK_AT}, + {"#", SDLK_HASH}, + {"$", SDLK_DOLLAR}, + {"%", SDLK_PERCENT}, + {"^", SDLK_CARET}, + {"&", SDLK_AMPERSAND}, + {"*", SDLK_ASTERISK}, + {"(", SDLK_LEFTPAREN}, + {")", SDLK_RIGHTPAREN}, + {"-", SDLK_MINUS}, + {"_", SDLK_UNDERSCORE}, + {"=", SDLK_EQUALS}, + {"+", SDLK_PLUS}, + {"[", SDLK_LEFTBRACKET}, + {"]", SDLK_RIGHTBRACKET}, + {"{", SDLK_LEFTBRACE}, + {"}", SDLK_RIGHTBRACE}, + {"\\", SDLK_BACKSLASH}, + {"|", SDLK_PIPE}, + {";", SDLK_SEMICOLON}, + {":", SDLK_COLON}, + {"'", SDLK_APOSTROPHE}, + {"\"", SDLK_DBLAPOSTROPHE}, + {",", SDLK_COMMA}, + {"<", SDLK_LESS}, + {".", SDLK_PERIOD}, + {">", SDLK_GREATER}, + {"/", SDLK_SLASH}, + {"?", SDLK_QUESTION}, + + // special keys + {"escape", SDLK_ESCAPE}, + {"printscreen", SDLK_PRINTSCREEN}, + {"scrolllock", SDLK_SCROLLLOCK}, + {"pausebreak", SDLK_PAUSE}, + {"backspace", SDLK_BACKSPACE}, + {"delete", SDLK_DELETE}, + {"insert", SDLK_INSERT}, + {"home", SDLK_HOME}, + {"end", SDLK_END}, + {"pgup", SDLK_PAGEUP}, + {"pgdown", SDLK_PAGEDOWN}, + {"tab", SDLK_TAB}, + {"capslock", SDLK_CAPSLOCK}, + {"enter", SDLK_RETURN}, + {"lshift", SDLK_LSHIFT}, + {"rshift", SDLK_RSHIFT}, + {"lctrl", SDLK_LCTRL}, + {"rctrl", SDLK_RCTRL}, + {"lalt", SDLK_LALT}, + {"ralt", SDLK_RALT}, + {"lmeta", SDLK_LGUI}, + {"rmeta", SDLK_RGUI}, + {"lwin", SDLK_LGUI}, + {"rwin", SDLK_RGUI}, + {"space", SDLK_SPACE}, + {"up", SDLK_UP}, + {"down", SDLK_DOWN}, + {"left", SDLK_LEFT}, + {"right", SDLK_RIGHT}, + + // keypad {"kp0", SDLK_KP_0}, {"kp1", SDLK_KP_1}, {"kp2", SDLK_KP_2}, @@ -170,43 +238,16 @@ const std::map string_to_keyboard_key_map = { {"kp7", SDLK_KP_7}, {"kp8", SDLK_KP_8}, {"kp9", SDLK_KP_9}, - {"comma", SDLK_COMMA}, - {"period", SDLK_PERIOD}, - {"question", SDLK_QUESTION}, - {"semicolon", SDLK_SEMICOLON}, - {"minus", SDLK_MINUS}, - {"underscore", SDLK_UNDERSCORE}, - {"lparenthesis", SDLK_LEFTPAREN}, - {"rparenthesis", SDLK_RIGHTPAREN}, - {"lbracket", SDLK_LEFTBRACKET}, - {"rbracket", SDLK_RIGHTBRACKET}, - {"lbrace", SDLK_LEFTBRACE}, - {"rbrace", SDLK_RIGHTBRACE}, - {"backslash", SDLK_BACKSLASH}, - {"dash", SDLK_SLASH}, - {"enter", SDLK_RETURN}, - {"space", SDLK_SPACE}, - {"tab", SDLK_TAB}, - {"backspace", SDLK_BACKSPACE}, - {"escape", SDLK_ESCAPE}, - {"left", SDLK_LEFT}, - {"right", SDLK_RIGHT}, - {"up", SDLK_UP}, - {"down", SDLK_DOWN}, - {"lctrl", SDLK_LCTRL}, - {"rctrl", SDLK_RCTRL}, - {"lshift", SDLK_LSHIFT}, - {"rshift", SDLK_RSHIFT}, - {"lalt", SDLK_LALT}, - {"ralt", SDLK_RALT}, - {"lmeta", SDLK_LGUI}, - {"rmeta", SDLK_RGUI}, - {"lwin", SDLK_LGUI}, - {"rwin", SDLK_RGUI}, - {"home", SDLK_HOME}, - {"end", SDLK_END}, - {"pgup", SDLK_PAGEUP}, - {"pgdown", SDLK_PAGEDOWN}, + {"kp .", SDLK_KP_PERIOD}, + {"kp ,", SDLK_KP_COMMA}, + {"kp /", SDLK_KP_DIVIDE}, + {"kp *", SDLK_KP_MULTIPLY}, + {"kp -", SDLK_KP_MINUS}, + {"kp +", SDLK_KP_PLUS}, + {"kp =", SDLK_KP_EQUALS}, + {"kp enter", SDLK_KP_ENTER}, + + // mouse {"leftbutton", SDL_BUTTON_LEFT}, {"rightbutton", SDL_BUTTON_RIGHT}, {"middlebutton", SDL_BUTTON_MIDDLE}, @@ -216,15 +257,6 @@ const std::map string_to_keyboard_key_map = { {"mousewheeldown", SDL_MOUSE_WHEEL_DOWN}, {"mousewheelleft", SDL_MOUSE_WHEEL_LEFT}, {"mousewheelright", SDL_MOUSE_WHEEL_RIGHT}, - {"kpperiod", SDLK_KP_PERIOD}, - {"kpcomma", SDLK_KP_COMMA}, - {"kpdivide", SDLK_KP_DIVIDE}, - {"kpmultiply", SDLK_KP_MULTIPLY}, - {"kpminus", SDLK_KP_MINUS}, - {"kpplus", SDLK_KP_PLUS}, - {"kpenter", SDLK_KP_ENTER}, - {"kpequals", SDLK_KP_EQUALS}, - {"capslock", SDLK_CAPSLOCK}, }; void ParseInputConfig(const std::string game_id); @@ -320,6 +352,7 @@ public: // returns an InputEvent based on the event type (keyboard, mouse buttons/wheel, or controller) static InputEvent GetInputEventFromSDLEvent(const SDL_Event& e); }; + class ControllerOutput { static GameController* controller;