aboutsummaryrefslogtreecommitdiff
path: root/src/input_common/main.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-04-21 22:21:59 -0700
committerGitHub <noreply@github.com>2022-04-21 22:21:59 -0700
commite72179e9fd61113d31d7b446c7c6c04d0e8bcdde (patch)
treeee42eede68cb935595769104e0b94d55b1530141 /src/input_common/main.cpp
parentc0f328e7d45d0cb060414e92772a309361937cc7 (diff)
parentf27e097244516f8f66aa5ee87979eb6eabadb0af (diff)
Merge pull request #7978 from german77/sideway
input_common: Map sticks correctly when mapped sideways
Diffstat (limited to 'src/input_common/main.cpp')
-rw-r--r--src/input_common/main.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp
index 28769c6d88..21834fb6b3 100644
--- a/src/input_common/main.cpp
+++ b/src/input_common/main.cpp
@@ -241,6 +241,28 @@ struct InputSubsystem::Impl {
return Common::Input::ButtonNames::Invalid;
}
+ bool IsStickInverted(const Common::ParamPackage& params) {
+ const std::string engine = params.Get("engine", "");
+ if (engine == mouse->GetEngineName()) {
+ return mouse->IsStickInverted(params);
+ }
+ if (engine == gcadapter->GetEngineName()) {
+ return gcadapter->IsStickInverted(params);
+ }
+ if (engine == udp_client->GetEngineName()) {
+ return udp_client->IsStickInverted(params);
+ }
+ if (engine == tas_input->GetEngineName()) {
+ return tas_input->IsStickInverted(params);
+ }
+#ifdef HAVE_SDL2
+ if (engine == sdl->GetEngineName()) {
+ return sdl->IsStickInverted(params);
+ }
+#endif
+ return false;
+ }
+
bool IsController(const Common::ParamPackage& params) {
const std::string engine = params.Get("engine", "");
if (engine == mouse->GetEngineName()) {
@@ -384,6 +406,13 @@ bool InputSubsystem::IsController(const Common::ParamPackage& params) const {
return impl->IsController(params);
}
+bool InputSubsystem::IsStickInverted(const Common::ParamPackage& params) const {
+ if (params.Has("axis_x") && params.Has("axis_y")) {
+ return impl->IsStickInverted(params);
+ }
+ return false;
+}
+
void InputSubsystem::ReloadInputDevices() {
impl->udp_client.get()->ReloadSockets();
}