diff options
author | Morph <39850852+Morph1984@users.noreply.github.com> | 2020-08-27 19:27:03 +0200 |
---|---|---|
committer | Morph <39850852+Morph1984@users.noreply.github.com> | 2020-09-04 21:38:33 +0200 |
commit | 0e33b19ae0292dd7b99241bc4e6fc8936bd89e5c (patch) | |
tree | 4d335edb664e7d53a818ccd575aa495f807e6921 /src/core/hle/service/hid/controllers | |
parent | Merge pull request #4596 from FearlessTobi/port-5495 (diff) | |
download | yuzu-0e33b19ae0292dd7b99241bc4e6fc8936bd89e5c.tar yuzu-0e33b19ae0292dd7b99241bc4e6fc8936bd89e5c.tar.gz yuzu-0e33b19ae0292dd7b99241bc4e6fc8936bd89e5c.tar.bz2 yuzu-0e33b19ae0292dd7b99241bc4e6fc8936bd89e5c.tar.lz yuzu-0e33b19ae0292dd7b99241bc4e6fc8936bd89e5c.tar.xz yuzu-0e33b19ae0292dd7b99241bc4e6fc8936bd89e5c.tar.zst yuzu-0e33b19ae0292dd7b99241bc4e6fc8936bd89e5c.zip |
Diffstat (limited to 'src/core/hle/service/hid/controllers')
-rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 16 | ||||
-rw-r--r-- | src/core/hle/service/hid/controllers/npad.h | 1 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index 45fde8df2..e742497e1 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp @@ -574,6 +574,22 @@ Controller_NPad::GyroscopeZeroDriftMode Controller_NPad::GetGyroscopeZeroDriftMo return gyroscope_zero_drift_mode; } +void Controller_NPad::MergeSingleJoyAsDualJoy(u32 npad_id_1, u32 npad_id_2) { + const auto npad_index_1 = NPadIdToIndex(npad_id_1); + const auto npad_index_2 = NPadIdToIndex(npad_id_2); + + // If the controllers at both npad indices form a pair of left and right joycons, merge them. + // Otherwise, do nothing. + if ((connected_controllers[npad_index_1].type == NPadControllerType::JoyLeft && + connected_controllers[npad_index_2].type == NPadControllerType::JoyRight) || + (connected_controllers[npad_index_2].type == NPadControllerType::JoyLeft && + connected_controllers[npad_index_1].type == NPadControllerType::JoyRight)) { + // Disconnect the joycon at the second id and connect the dual joycon at the first index. + DisconnectNPad(npad_id_2); + AddNewControllerAt(NPadControllerType::JoyDual, npad_index_1); + } +} + void Controller_NPad::StartLRAssignmentMode() { // Nothing internally is used for lr assignment mode. Since we have the ability to set the // controller types from boot, it doesn't really matter about showing a selection screen diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index 75ce5b731..ad25c6fbf 100644 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h @@ -134,6 +134,7 @@ public: void ConnectAllDisconnectedControllers(); void ClearAllControllers(); + void MergeSingleJoyAsDualJoy(u32 npad_id_1, u32 npad_id_2); void StartLRAssignmentMode(); void StopLRAssignmentMode(); bool SwapNpadAssignment(u32 npad_id_1, u32 npad_id_2); |