summaryrefslogtreecommitdiffstats
path: root/src/input_common/drivers/sdl_driver.cpp
diff options
context:
space:
mode:
authorNarr the Reg <juangerman-13@hotmail.com>2022-03-04 18:47:13 +0100
committerNarr the Reg <juangerman-13@hotmail.com>2022-03-22 02:39:33 +0100
commitee532e5c01f97f30078202ae87a5b2a71e9ce1e4 (patch)
tree55e544838b029e4a78a61e38cb085f5668400837 /src/input_common/drivers/sdl_driver.cpp
parentMerge pull request #8048 from ameerj/include-purge (diff)
downloadyuzu-ee532e5c01f97f30078202ae87a5b2a71e9ce1e4.tar
yuzu-ee532e5c01f97f30078202ae87a5b2a71e9ce1e4.tar.gz
yuzu-ee532e5c01f97f30078202ae87a5b2a71e9ce1e4.tar.bz2
yuzu-ee532e5c01f97f30078202ae87a5b2a71e9ce1e4.tar.lz
yuzu-ee532e5c01f97f30078202ae87a5b2a71e9ce1e4.tar.xz
yuzu-ee532e5c01f97f30078202ae87a5b2a71e9ce1e4.tar.zst
yuzu-ee532e5c01f97f30078202ae87a5b2a71e9ce1e4.zip
Diffstat (limited to '')
-rw-r--r--src/input_common/drivers/sdl_driver.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp
index c17ea305e..64edf53e4 100644
--- a/src/input_common/drivers/sdl_driver.cpp
+++ b/src/input_common/drivers/sdl_driver.cpp
@@ -934,4 +934,37 @@ u8 SDLDriver::GetHatButtonId(const std::string& direction_name) const {
return direction;
}
+bool SDLDriver::IsStickInverted(const Common::ParamPackage& params) {
+ if (!params.Has("guid") || !params.Has("port")) {
+ return false;
+ }
+ const auto joystick = GetSDLJoystickByGUID(params.Get("guid", ""), params.Get("port", 0));
+ if (joystick == nullptr) {
+ return false;
+ }
+ auto* controller = joystick->GetSDLGameController();
+ if (controller == nullptr) {
+ return false;
+ }
+
+ const auto& axis_x = params.Get("axis_x", 0);
+ const auto& axis_y = params.Get("axis_y", 0);
+ const auto& binding_left_x =
+ SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_LEFTX);
+ const auto& binding_right_x =
+ SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_RIGHTX);
+ const auto& binding_left_y =
+ SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_LEFTY);
+ const auto& binding_right_y =
+ SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_RIGHTY);
+
+ if (axis_x != binding_left_y.value.axis && axis_x != binding_right_y.value.axis) {
+ return false;
+ }
+ if (axis_y != binding_left_x.value.axis && axis_y != binding_right_x.value.axis) {
+ return false;
+ }
+ return true;
+}
+
} // namespace InputCommon