diff options
| -rw-r--r-- | src/core/frontend/applets/controller.cpp | 51 | ||||
| -rw-r--r-- | src/core/frontend/applets/controller.h | 8 | ||||
| -rw-r--r-- | src/core/hid/emulated_console.cpp | 2 | ||||
| -rw-r--r-- | src/core/hid/emulated_controller.cpp | 12 | ||||
| -rw-r--r-- | src/core/hid/emulated_controller.h | 1 | ||||
| -rw-r--r-- | src/core/hid/hid_core.cpp | 4 | ||||
| -rw-r--r-- | src/core/hid/hid_core.h | 3 | ||||
| -rw-r--r-- | src/core/hle/service/am/applets/applets.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 10 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.cpp | 3 | ||||
| -rw-r--r-- | src/input_common/drivers/udp_client.cpp | 2 | ||||
| -rw-r--r-- | src/input_common/drivers/udp_client.h | 4 | ||||
| -rw-r--r-- | src/input_common/helpers/stick_from_buttons.h | 1 | ||||
| -rw-r--r-- | src/input_common/main.cpp | 7 |
15 files changed, 56 insertions, 56 deletions
diff --git a/src/core/frontend/applets/controller.cpp b/src/core/frontend/applets/controller.cpp index ca1edce15..30500ef1e 100644 --- a/src/core/frontend/applets/controller.cpp +++ b/src/core/frontend/applets/controller.cpp | |||
| @@ -5,16 +5,16 @@ | |||
| 5 | #include "common/assert.h" | 5 | #include "common/assert.h" |
| 6 | #include "common/logging/log.h" | 6 | #include "common/logging/log.h" |
| 7 | #include "core/frontend/applets/controller.h" | 7 | #include "core/frontend/applets/controller.h" |
| 8 | #include "core/hle/service/hid/controllers/npad.h" | 8 | #include "core/hid/emulated_controller.h" |
| 9 | #include "core/hle/service/hid/hid.h" | 9 | #include "core/hid/hid_core.h" |
| 10 | #include "core/hle/service/sm/sm.h" | 10 | #include "core/hid/hid_types.h" |
| 11 | 11 | ||
| 12 | namespace Core::Frontend { | 12 | namespace Core::Frontend { |
| 13 | 13 | ||
| 14 | ControllerApplet::~ControllerApplet() = default; | 14 | ControllerApplet::~ControllerApplet() = default; |
| 15 | 15 | ||
| 16 | DefaultControllerApplet::DefaultControllerApplet(Service::SM::ServiceManager& service_manager_) | 16 | DefaultControllerApplet::DefaultControllerApplet(HID::HIDCore& hid_core_) |
| 17 | : service_manager{service_manager_} {} | 17 | : hid_core{hid_core_} {} |
| 18 | 18 | ||
| 19 | DefaultControllerApplet::~DefaultControllerApplet() = default; | 19 | DefaultControllerApplet::~DefaultControllerApplet() = default; |
| 20 | 20 | ||
| @@ -22,24 +22,20 @@ void DefaultControllerApplet::ReconfigureControllers(std::function<void()> callb | |||
| 22 | const ControllerParameters& parameters) const { | 22 | const ControllerParameters& parameters) const { |
| 23 | LOG_INFO(Service_HID, "called, deducing the best configuration based on the given parameters!"); | 23 | LOG_INFO(Service_HID, "called, deducing the best configuration based on the given parameters!"); |
| 24 | 24 | ||
| 25 | auto& npad = | ||
| 26 | service_manager.GetService<Service::HID::Hid>("hid") | ||
| 27 | ->GetAppletResource() | ||
| 28 | ->GetController<Service::HID::Controller_NPad>(Service::HID::HidController::NPad); | ||
| 29 | |||
| 30 | auto& players = Settings::values.players.GetValue(); | ||
| 31 | |||
| 32 | const std::size_t min_supported_players = | 25 | const std::size_t min_supported_players = |
| 33 | parameters.enable_single_mode ? 1 : parameters.min_players; | 26 | parameters.enable_single_mode ? 1 : parameters.min_players; |
| 34 | 27 | ||
| 35 | // Disconnect Handheld first. | 28 | // Disconnect Handheld first. |
| 36 | npad.DisconnectNpadAtIndex(8); | 29 | auto* handheld =hid_core.GetEmulatedController(Core::HID::NpadIdType::Handheld); |
| 30 | handheld->Disconnect(); | ||
| 37 | 31 | ||
| 38 | // Deduce the best configuration based on the input parameters. | 32 | // Deduce the best configuration based on the input parameters. |
| 39 | for (std::size_t index = 0; index < players.size() - 2; ++index) { | 33 | for (std::size_t index = 0; index < hid_core.available_controllers - 2; ++index) { |
| 34 | auto* controller = hid_core.GetEmulatedControllerByIndex(index); | ||
| 35 | |||
| 40 | // First, disconnect all controllers regardless of the value of keep_controllers_connected. | 36 | // First, disconnect all controllers regardless of the value of keep_controllers_connected. |
| 41 | // This makes it easy to connect the desired controllers. | 37 | // This makes it easy to connect the desired controllers. |
| 42 | npad.DisconnectNpadAtIndex(index); | 38 | controller->Disconnect(); |
| 43 | 39 | ||
| 44 | // Only connect the minimum number of required players. | 40 | // Only connect the minimum number of required players. |
| 45 | if (index >= min_supported_players) { | 41 | if (index >= min_supported_players) { |
| @@ -49,32 +45,27 @@ void DefaultControllerApplet::ReconfigureControllers(std::function<void()> callb | |||
| 49 | // Connect controllers based on the following priority list from highest to lowest priority: | 45 | // Connect controllers based on the following priority list from highest to lowest priority: |
| 50 | // Pro Controller -> Dual Joycons -> Left Joycon/Right Joycon -> Handheld | 46 | // Pro Controller -> Dual Joycons -> Left Joycon/Right Joycon -> Handheld |
| 51 | if (parameters.allow_pro_controller) { | 47 | if (parameters.allow_pro_controller) { |
| 52 | npad.AddNewControllerAt(Core::HID::EmulatedController::MapSettingsTypeToNPad( | 48 | controller->SetNpadType(Core::HID::NpadType::ProController); |
| 53 | Settings::ControllerType::ProController), | 49 | controller->Connect(); |
| 54 | index); | ||
| 55 | } else if (parameters.allow_dual_joycons) { | 50 | } else if (parameters.allow_dual_joycons) { |
| 56 | npad.AddNewControllerAt(Core::HID::EmulatedController::MapSettingsTypeToNPad( | 51 | controller->SetNpadType(Core::HID::NpadType::JoyconDual); |
| 57 | Settings::ControllerType::DualJoyconDetached), | 52 | controller->Connect(); |
| 58 | index); | ||
| 59 | } else if (parameters.allow_left_joycon && parameters.allow_right_joycon) { | 53 | } else if (parameters.allow_left_joycon && parameters.allow_right_joycon) { |
| 60 | // Assign left joycons to even player indices and right joycons to odd player indices. | 54 | // Assign left joycons to even player indices and right joycons to odd player indices. |
| 61 | // We do this since Captain Toad Treasure Tracker expects a left joycon for Player 1 and | 55 | // We do this since Captain Toad Treasure Tracker expects a left joycon for Player 1 and |
| 62 | // a right Joycon for Player 2 in 2 Player Assist mode. | 56 | // a right Joycon for Player 2 in 2 Player Assist mode. |
| 63 | if (index % 2 == 0) { | 57 | if (index % 2 == 0) { |
| 64 | npad.AddNewControllerAt(Core::HID::EmulatedController::MapSettingsTypeToNPad( | 58 | controller->SetNpadType(Core::HID::NpadType::JoyconLeft); |
| 65 | Settings::ControllerType::LeftJoycon), | 59 | controller->Connect(); |
| 66 | index); | ||
| 67 | } else { | 60 | } else { |
| 68 | npad.AddNewControllerAt(Core::HID::EmulatedController::MapSettingsTypeToNPad( | 61 | controller->SetNpadType(Core::HID::NpadType::JoyconRight); |
| 69 | Settings::ControllerType::RightJoycon), | 62 | controller->Connect(); |
| 70 | index); | ||
| 71 | } | 63 | } |
| 72 | } else if (index == 0 && parameters.enable_single_mode && parameters.allow_handheld && | 64 | } else if (index == 0 && parameters.enable_single_mode && parameters.allow_handheld && |
| 73 | !Settings::values.use_docked_mode.GetValue()) { | 65 | !Settings::values.use_docked_mode.GetValue()) { |
| 74 | // We should *never* reach here under any normal circumstances. | 66 | // We should *never* reach here under any normal circumstances. |
| 75 | npad.AddNewControllerAt(Core::HID::EmulatedController::MapSettingsTypeToNPad( | 67 | controller->SetNpadType(Core::HID::NpadType::Handheld); |
| 76 | Settings::ControllerType::Handheld), | 68 | controller->Connect(); |
| 77 | index); | ||
| 78 | } else { | 69 | } else { |
| 79 | UNREACHABLE_MSG("Unable to add a new controller based on the given parameters!"); | 70 | UNREACHABLE_MSG("Unable to add a new controller based on the given parameters!"); |
| 80 | } | 71 | } |
diff --git a/src/core/frontend/applets/controller.h b/src/core/frontend/applets/controller.h index b0626a0f9..014bc8901 100644 --- a/src/core/frontend/applets/controller.h +++ b/src/core/frontend/applets/controller.h | |||
| @@ -8,8 +8,8 @@ | |||
| 8 | 8 | ||
| 9 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
| 10 | 10 | ||
| 11 | namespace Service::SM { | 11 | namespace Core::HID { |
| 12 | class ServiceManager; | 12 | class HIDCore; |
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | namespace Core::Frontend { | 15 | namespace Core::Frontend { |
| @@ -44,14 +44,14 @@ public: | |||
| 44 | 44 | ||
| 45 | class DefaultControllerApplet final : public ControllerApplet { | 45 | class DefaultControllerApplet final : public ControllerApplet { |
| 46 | public: | 46 | public: |
| 47 | explicit DefaultControllerApplet(Service::SM::ServiceManager& service_manager_); | 47 | explicit DefaultControllerApplet(HID::HIDCore& hid_core_); |
| 48 | ~DefaultControllerApplet() override; | 48 | ~DefaultControllerApplet() override; |
| 49 | 49 | ||
| 50 | void ReconfigureControllers(std::function<void()> callback, | 50 | void ReconfigureControllers(std::function<void()> callback, |
| 51 | const ControllerParameters& parameters) const override; | 51 | const ControllerParameters& parameters) const override; |
| 52 | 52 | ||
| 53 | private: | 53 | private: |
| 54 | Service::SM::ServiceManager& service_manager; | 54 | HID::HIDCore& hid_core; |
| 55 | }; | 55 | }; |
| 56 | 56 | ||
| 57 | } // namespace Core::Frontend | 57 | } // namespace Core::Frontend |
diff --git a/src/core/hid/emulated_console.cpp b/src/core/hid/emulated_console.cpp index e82cf5990..540fd107b 100644 --- a/src/core/hid/emulated_console.cpp +++ b/src/core/hid/emulated_console.cpp | |||
| @@ -2,8 +2,6 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included | 3 | // Refer to the license.txt file included |
| 4 | 4 | ||
| 5 | #include <fmt/format.h> | ||
| 6 | |||
| 7 | #include "core/hid/emulated_console.h" | 5 | #include "core/hid/emulated_console.h" |
| 8 | #include "core/hid/input_converter.h" | 6 | #include "core/hid/input_converter.h" |
| 9 | 7 | ||
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp index 1ff3022c5..d59758e99 100644 --- a/src/core/hid/emulated_controller.cpp +++ b/src/core/hid/emulated_controller.cpp | |||
| @@ -2,8 +2,6 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included | 3 | // Refer to the license.txt file included |
| 4 | 4 | ||
| 5 | #include <fmt/format.h> | ||
| 6 | |||
| 7 | #include "core/hid/emulated_controller.h" | 5 | #include "core/hid/emulated_controller.h" |
| 8 | #include "core/hid/input_converter.h" | 6 | #include "core/hid/input_converter.h" |
| 9 | 7 | ||
| @@ -635,6 +633,9 @@ void EmulatedController::SetBattery(Input::CallbackStatus callback, std::size_t | |||
| 635 | } | 633 | } |
| 636 | 634 | ||
| 637 | bool EmulatedController::SetVibration(std::size_t device_index, VibrationValue vibration) { | 635 | bool EmulatedController::SetVibration(std::size_t device_index, VibrationValue vibration) { |
| 636 | if (device_index >= output_devices.size()) { | ||
| 637 | return false; | ||
| 638 | } | ||
| 638 | if (!output_devices[device_index]) { | 639 | if (!output_devices[device_index]) { |
| 639 | return false; | 640 | return false; |
| 640 | } | 641 | } |
| @@ -659,6 +660,9 @@ bool EmulatedController::SetVibration(std::size_t device_index, VibrationValue v | |||
| 659 | } | 660 | } |
| 660 | 661 | ||
| 661 | bool EmulatedController::TestVibration(std::size_t device_index) { | 662 | bool EmulatedController::TestVibration(std::size_t device_index) { |
| 663 | if (device_index >= output_devices.size()) { | ||
| 664 | return false; | ||
| 665 | } | ||
| 662 | if (!output_devices[device_index]) { | 666 | if (!output_devices[device_index]) { |
| 663 | return false; | 667 | return false; |
| 664 | } | 668 | } |
| @@ -733,7 +737,9 @@ bool EmulatedController::IsConnected(bool temporary) const { | |||
| 733 | } | 737 | } |
| 734 | 738 | ||
| 735 | bool EmulatedController::IsVibrationEnabled() const { | 739 | bool EmulatedController::IsVibrationEnabled() const { |
| 736 | return is_vibration_enabled; | 740 | const auto player_index = NpadIdTypeToIndex(npad_id_type); |
| 741 | const auto& player = Settings::values.players.GetValue()[player_index]; | ||
| 742 | return player.vibration_enabled; | ||
| 737 | } | 743 | } |
| 738 | 744 | ||
| 739 | NpadIdType EmulatedController::GetNpadIdType() const { | 745 | NpadIdType EmulatedController::GetNpadIdType() const { |
diff --git a/src/core/hid/emulated_controller.h b/src/core/hid/emulated_controller.h index f3ee70726..50f21ccd9 100644 --- a/src/core/hid/emulated_controller.h +++ b/src/core/hid/emulated_controller.h | |||
| @@ -337,7 +337,6 @@ private: | |||
| 337 | bool is_connected{false}; | 337 | bool is_connected{false}; |
| 338 | bool temporary_is_connected{false}; | 338 | bool temporary_is_connected{false}; |
| 339 | bool is_configuring{false}; | 339 | bool is_configuring{false}; |
| 340 | bool is_vibration_enabled{true}; | ||
| 341 | f32 motion_sensitivity{0.01f}; | 340 | f32 motion_sensitivity{0.01f}; |
| 342 | 341 | ||
| 343 | ButtonParams button_params; | 342 | ButtonParams button_params; |
diff --git a/src/core/hid/hid_core.cpp b/src/core/hid/hid_core.cpp index bd17081bd..cc1b3c295 100644 --- a/src/core/hid/hid_core.cpp +++ b/src/core/hid/hid_core.cpp | |||
| @@ -113,7 +113,7 @@ NpadStyleTag HIDCore::GetSupportedStyleTag() const { | |||
| 113 | 113 | ||
| 114 | s8 HIDCore::GetPlayerCount() const { | 114 | s8 HIDCore::GetPlayerCount() const { |
| 115 | s8 active_players = 0; | 115 | s8 active_players = 0; |
| 116 | for (std::size_t player_index = 0; player_index < 8; player_index++) { | 116 | for (std::size_t player_index = 0; player_index < available_controllers -2; player_index++) { |
| 117 | const auto* controller = GetEmulatedControllerByIndex(player_index); | 117 | const auto* controller = GetEmulatedControllerByIndex(player_index); |
| 118 | if (controller->IsConnected()) { | 118 | if (controller->IsConnected()) { |
| 119 | active_players++; | 119 | active_players++; |
| @@ -123,7 +123,7 @@ s8 HIDCore::GetPlayerCount() const { | |||
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | NpadIdType HIDCore::GetFirstNpadId() const { | 125 | NpadIdType HIDCore::GetFirstNpadId() const { |
| 126 | for (std::size_t player_index = 0; player_index < 10; player_index++) { | 126 | for (std::size_t player_index = 0; player_index < available_controllers; player_index++) { |
| 127 | const auto* controller = GetEmulatedControllerByIndex(player_index); | 127 | const auto* controller = GetEmulatedControllerByIndex(player_index); |
| 128 | if (controller->IsConnected()) { | 128 | if (controller->IsConnected()) { |
| 129 | return controller->GetNpadIdType(); | 129 | return controller->GetNpadIdType(); |
diff --git a/src/core/hid/hid_core.h b/src/core/hid/hid_core.h index 196466a72..a4a66a3a4 100644 --- a/src/core/hid/hid_core.h +++ b/src/core/hid/hid_core.h | |||
| @@ -47,6 +47,9 @@ public: | |||
| 47 | /// Removes all callbacks from input common | 47 | /// Removes all callbacks from input common |
| 48 | void UnloadInputDevices(); | 48 | void UnloadInputDevices(); |
| 49 | 49 | ||
| 50 | /// Number of emulated controllers | ||
| 51 | const std::size_t available_controllers{10}; | ||
| 52 | |||
| 50 | private: | 53 | private: |
| 51 | std::unique_ptr<EmulatedController> player_1; | 54 | std::unique_ptr<EmulatedController> player_1; |
| 52 | std::unique_ptr<EmulatedController> player_2; | 55 | std::unique_ptr<EmulatedController> player_2; |
diff --git a/src/core/hle/service/am/applets/applets.cpp b/src/core/hle/service/am/applets/applets.cpp index 7320b1c0f..134ac1ee2 100644 --- a/src/core/hle/service/am/applets/applets.cpp +++ b/src/core/hle/service/am/applets/applets.cpp | |||
| @@ -231,7 +231,7 @@ void AppletManager::SetDefaultAppletFrontendSet() { | |||
| 231 | void AppletManager::SetDefaultAppletsIfMissing() { | 231 | void AppletManager::SetDefaultAppletsIfMissing() { |
| 232 | if (frontend.controller == nullptr) { | 232 | if (frontend.controller == nullptr) { |
| 233 | frontend.controller = | 233 | frontend.controller = |
| 234 | std::make_unique<Core::Frontend::DefaultControllerApplet>(system.ServiceManager()); | 234 | std::make_unique<Core::Frontend::DefaultControllerApplet>(system.HIDCore()); |
| 235 | } | 235 | } |
| 236 | 236 | ||
| 237 | if (frontend.error == nullptr) { | 237 | if (frontend.error == nullptr) { |
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index 6b9d6d11c..62b324080 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -608,15 +608,15 @@ void Controller_NPad::OnMotionUpdate(const Core::Timing::CoreTiming& core_timing | |||
| 608 | sixaxis_fullkey_state.sampling_number = | 608 | sixaxis_fullkey_state.sampling_number = |
| 609 | npad.sixaxis_fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1; | 609 | npad.sixaxis_fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1; |
| 610 | sixaxis_handheld_state.sampling_number = | 610 | sixaxis_handheld_state.sampling_number = |
| 611 | npad.sixaxis_fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1; | 611 | npad.sixaxis_handheld_lifo.ReadCurrentEntry().state.sampling_number + 1; |
| 612 | sixaxis_dual_left_state.sampling_number = | 612 | sixaxis_dual_left_state.sampling_number = |
| 613 | npad.sixaxis_fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1; | 613 | npad.sixaxis_dual_left_lifo.ReadCurrentEntry().state.sampling_number + 1; |
| 614 | sixaxis_dual_right_state.sampling_number = | 614 | sixaxis_dual_right_state.sampling_number = |
| 615 | npad.sixaxis_fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1; | 615 | npad.sixaxis_dual_right_lifo.ReadCurrentEntry().state.sampling_number + 1; |
| 616 | sixaxis_left_lifo_state.sampling_number = | 616 | sixaxis_left_lifo_state.sampling_number = |
| 617 | npad.sixaxis_fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1; | 617 | npad.sixaxis_left_lifo.ReadCurrentEntry().state.sampling_number + 1; |
| 618 | sixaxis_right_lifo_state.sampling_number = | 618 | sixaxis_right_lifo_state.sampling_number = |
| 619 | npad.sixaxis_fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1; | 619 | npad.sixaxis_right_lifo.ReadCurrentEntry().state.sampling_number + 1; |
| 620 | 620 | ||
| 621 | npad.sixaxis_fullkey_lifo.WriteNextEntry(sixaxis_fullkey_state); | 621 | npad.sixaxis_fullkey_lifo.WriteNextEntry(sixaxis_fullkey_state); |
| 622 | npad.sixaxis_handheld_lifo.WriteNextEntry(sixaxis_handheld_state); | 622 | npad.sixaxis_handheld_lifo.WriteNextEntry(sixaxis_handheld_state); |
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index d805ccb97..1c6ea6f88 100644 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h | |||
| @@ -342,7 +342,7 @@ private: | |||
| 342 | INSERT_PADDING_BYTES(0x4); | 342 | INSERT_PADDING_BYTES(0x4); |
| 343 | }; | 343 | }; |
| 344 | 344 | ||
| 345 | // This is nn::hid::server::NpadGcTriggerState | 345 | // This is nn::hid::system::AppletFooterUiType |
| 346 | enum class AppletFooterUiType : u8 { | 346 | enum class AppletFooterUiType : u8 { |
| 347 | None = 0, | 347 | None = 0, |
| 348 | HandheldNone = 1, | 348 | HandheldNone = 1, |
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 5391334f4..ac48f96d3 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -8,7 +8,6 @@ | |||
| 8 | #include "common/settings.h" | 8 | #include "common/settings.h" |
| 9 | #include "core/core.h" | 9 | #include "core/core.h" |
| 10 | #include "core/core_timing.h" | 10 | #include "core/core_timing.h" |
| 11 | #include "core/hardware_properties.h" | ||
| 12 | #include "core/hle/ipc_helpers.h" | 11 | #include "core/hle/ipc_helpers.h" |
| 13 | #include "core/hle/kernel/k_readable_event.h" | 12 | #include "core/hle/kernel/k_readable_event.h" |
| 14 | #include "core/hle/kernel/k_shared_memory.h" | 13 | #include "core/hle/kernel/k_shared_memory.h" |
| @@ -34,7 +33,7 @@ | |||
| 34 | namespace Service::HID { | 33 | namespace Service::HID { |
| 35 | 34 | ||
| 36 | // Updating period for each HID device. | 35 | // Updating period for each HID device. |
| 37 | // Period time is obtained by measuring the number of samples in a second | 36 | // Period time is obtained by measuring the number of samples in a second on HW using a homebrew |
| 38 | constexpr auto pad_update_ns = std::chrono::nanoseconds{4 * 1000 * 1000}; // (4ms, 250Hz) | 37 | constexpr auto pad_update_ns = std::chrono::nanoseconds{4 * 1000 * 1000}; // (4ms, 250Hz) |
| 39 | constexpr auto motion_update_ns = std::chrono::nanoseconds{5 * 1000 * 1000}; // (5ms, 200Hz) | 38 | constexpr auto motion_update_ns = std::chrono::nanoseconds{5 * 1000 * 1000}; // (5ms, 200Hz) |
| 40 | constexpr std::size_t SHARED_MEMORY_SIZE = 0x40000; | 39 | constexpr std::size_t SHARED_MEMORY_SIZE = 0x40000; |
diff --git a/src/input_common/drivers/udp_client.cpp b/src/input_common/drivers/udp_client.cpp index f0c0a6b8b..192ab336b 100644 --- a/src/input_common/drivers/udp_client.cpp +++ b/src/input_common/drivers/udp_client.cpp | |||
| @@ -268,6 +268,8 @@ void UDPClient::OnPadData(Response::PadData data, std::size_t client) { | |||
| 268 | SetButton(identifier, touch_id, true); | 268 | SetButton(identifier, touch_id, true); |
| 269 | continue; | 269 | continue; |
| 270 | } | 270 | } |
| 271 | SetAxis(identifier, touch_id * 2, 0); | ||
| 272 | SetAxis(identifier, touch_id * 2 + 1, 0); | ||
| 271 | SetButton(identifier, touch_id, false); | 273 | SetButton(identifier, touch_id, false); |
| 272 | } | 274 | } |
| 273 | } | 275 | } |
diff --git a/src/input_common/drivers/udp_client.h b/src/input_common/drivers/udp_client.h index 58b2e921d..639325b17 100644 --- a/src/input_common/drivers/udp_client.h +++ b/src/input_common/drivers/udp_client.h | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | // Copyright 2021 yuzu Emulator Project | 1 | // Copyright 2018 Citra Emulator Project |
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
diff --git a/src/input_common/helpers/stick_from_buttons.h b/src/input_common/helpers/stick_from_buttons.h index 1d6e24c98..82dff5ca8 100644 --- a/src/input_common/helpers/stick_from_buttons.h +++ b/src/input_common/helpers/stick_from_buttons.h | |||
| @@ -1,4 +1,3 @@ | |||
| 1 | |||
| 2 | // Copyright 2017 Citra Emulator Project | 1 | // Copyright 2017 Citra Emulator Project |
| 3 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 4 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp index b048783c9..8f7ce59b7 100644 --- a/src/input_common/main.cpp +++ b/src/input_common/main.cpp | |||
| @@ -87,25 +87,30 @@ struct InputSubsystem::Impl { | |||
| 87 | 87 | ||
| 88 | void Shutdown() { | 88 | void Shutdown() { |
| 89 | Input::UnregisterFactory<Input::InputDevice>(keyboard->GetEngineName()); | 89 | Input::UnregisterFactory<Input::InputDevice>(keyboard->GetEngineName()); |
| 90 | Input::UnregisterFactory<Input::OutputDevice>(keyboard->GetEngineName()); | ||
| 90 | keyboard.reset(); | 91 | keyboard.reset(); |
| 91 | 92 | ||
| 92 | Input::UnregisterFactory<Input::InputDevice>(mouse->GetEngineName()); | 93 | Input::UnregisterFactory<Input::InputDevice>(mouse->GetEngineName()); |
| 94 | Input::UnregisterFactory<Input::OutputDevice>(mouse->GetEngineName()); | ||
| 93 | mouse.reset(); | 95 | mouse.reset(); |
| 94 | 96 | ||
| 95 | Input::UnregisterFactory<Input::InputDevice>(touch_screen->GetEngineName()); | 97 | Input::UnregisterFactory<Input::InputDevice>(touch_screen->GetEngineName()); |
| 96 | touch_screen.reset(); | 98 | touch_screen.reset(); |
| 97 | 99 | ||
| 98 | Input::UnregisterFactory<Input::InputDevice>(gcadapter->GetEngineName()); | 100 | Input::UnregisterFactory<Input::InputDevice>(gcadapter->GetEngineName()); |
| 101 | Input::UnregisterFactory<Input::OutputDevice>(gcadapter->GetEngineName()); | ||
| 99 | gcadapter.reset(); | 102 | gcadapter.reset(); |
| 100 | 103 | ||
| 101 | Input::UnregisterFactory<Input::InputDevice>(udp_client->GetEngineName()); | 104 | Input::UnregisterFactory<Input::InputDevice>(udp_client->GetEngineName()); |
| 102 | udp_client.reset(); | 105 | udp_client.reset(); |
| 103 | 106 | ||
| 104 | Input::UnregisterFactory<Input::InputDevice>(tas_input->GetEngineName()); | 107 | Input::UnregisterFactory<Input::InputDevice>(tas_input->GetEngineName()); |
| 108 | Input::UnregisterFactory<Input::OutputDevice>(tas_input->GetEngineName()); | ||
| 105 | tas_input.reset(); | 109 | tas_input.reset(); |
| 106 | 110 | ||
| 107 | #ifdef HAVE_SDL2 | 111 | #ifdef HAVE_SDL2 |
| 108 | Input::UnregisterFactory<Input::InputDevice>(sdl->GetEngineName()); | 112 | Input::UnregisterFactory<Input::InputDevice>(sdl->GetEngineName()); |
| 113 | Input::UnregisterFactory<Input::OutputDevice>(sdl->GetEngineName()); | ||
| 109 | sdl.reset(); | 114 | sdl.reset(); |
| 110 | #endif | 115 | #endif |
| 111 | 116 | ||
| @@ -124,8 +129,6 @@ struct InputSubsystem::Impl { | |||
| 124 | devices.insert(devices.end(), mouse_devices.begin(), mouse_devices.end()); | 129 | devices.insert(devices.end(), mouse_devices.begin(), mouse_devices.end()); |
| 125 | auto gcadapter_devices = gcadapter->GetInputDevices(); | 130 | auto gcadapter_devices = gcadapter->GetInputDevices(); |
| 126 | devices.insert(devices.end(), gcadapter_devices.begin(), gcadapter_devices.end()); | 131 | devices.insert(devices.end(), gcadapter_devices.begin(), gcadapter_devices.end()); |
| 127 | auto tas_input_devices = tas_input->GetInputDevices(); | ||
| 128 | devices.insert(devices.end(), tas_input_devices.begin(), tas_input_devices.end()); | ||
| 129 | #ifdef HAVE_SDL2 | 132 | #ifdef HAVE_SDL2 |
| 130 | auto sdl_devices = sdl->GetInputDevices(); | 133 | auto sdl_devices = sdl->GetInputDevices(); |
| 131 | devices.insert(devices.end(), sdl_devices.begin(), sdl_devices.end()); | 134 | devices.insert(devices.end(), sdl_devices.begin(), sdl_devices.end()); |