From b40aefb39ea8b4259acdbe0616790c2234d9b9ef Mon Sep 17 00:00:00 2001 From: german77 Date: Sun, 8 Jan 2023 21:37:13 -0600 Subject: [PATCH] input_common: Drop Pro controller support from custom driver --- src/input_common/drivers/joycon.cpp | 36 ---------------------- src/input_common/drivers/joycon.h | 1 - src/input_common/drivers/sdl_driver.cpp | 6 ++-- src/input_common/helpers/joycon_driver.cpp | 4 +-- 4 files changed, 4 insertions(+), 43 deletions(-) diff --git a/src/input_common/drivers/joycon.cpp b/src/input_common/drivers/joycon.cpp index 6c03e0953..fff886ca8 100644 --- a/src/input_common/drivers/joycon.cpp +++ b/src/input_common/drivers/joycon.cpp @@ -44,12 +44,6 @@ void Joycons::Reset() { } device->Stop(); } - for (const auto& device : pro_joycons) { - if (!device) { - continue; - } - device->Stop(); - } SDL_hid_exit(); } @@ -65,11 +59,6 @@ void Joycons::Setup() { PreSetController(GetIdentifier(port, Joycon::ControllerType::Right)); device = std::make_shared(port++); } - port = 0; - for (auto& device : pro_joycons) { - PreSetController(GetIdentifier(port, Joycon::ControllerType::Pro)); - device = std::make_shared(port++); - } if (!scan_thread_running) { scan_thread = std::jthread([this](std::stop_token stop_token) { ScanThread(stop_token); }); @@ -141,14 +130,6 @@ bool Joycons::IsDeviceNew(SDL_hid_device_info* device_info) const { } } break; - case Joycon::ControllerType::Pro: - case Joycon::ControllerType::Grip: - for (const auto& device : pro_joycons) { - if (is_handle_identical(device)) { - return false; - } - } - break; default: return false; } @@ -219,13 +200,6 @@ std::shared_ptr Joycons::GetNextFreeHandle( } } } - if (type == Joycon::ControllerType::Pro || type == Joycon::ControllerType::Grip) { - for (const auto& device : pro_joycons) { - if (!device->IsConnected()) { - return device; - } - } - } return nullptr; } @@ -431,13 +405,6 @@ std::shared_ptr Joycons::GetHandle(PadIdentifier identifie } } } - if (type == Joycon::ControllerType::Pro || type == Joycon::ControllerType::Grip) { - for (const auto& device : pro_joycons) { - if (is_handle_active(device)) { - return device; - } - } - } return nullptr; } @@ -475,9 +442,6 @@ std::vector Joycons::GetInputDevices() const { for (const auto& controller : right_joycons) { add_entry(controller); } - for (const auto& controller : pro_joycons) { - add_entry(controller); - } // List dual joycon pairs for (std::size_t i = 0; i < MaxSupportedControllers; i++) { diff --git a/src/input_common/drivers/joycon.h b/src/input_common/drivers/joycon.h index f180b7478..f5cc787db 100644 --- a/src/input_common/drivers/joycon.h +++ b/src/input_common/drivers/joycon.h @@ -104,7 +104,6 @@ private: // Joycon types are split by type to ease supporting dualjoycon configurations std::array, MaxSupportedControllers> left_joycons{}; std::array, MaxSupportedControllers> right_joycons{}; - std::array, MaxSupportedControllers> pro_joycons{}; }; } // namespace InputCommon diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp index 51a9d8962..e915ec090 100644 --- a/src/input_common/drivers/sdl_driver.cpp +++ b/src/input_common/drivers/sdl_driver.cpp @@ -319,7 +319,8 @@ void SDLDriver::InitJoystick(int joystick_index) { const auto guid = GetGUID(sdl_joystick); if (Settings::values.enable_joycon_driver) { - if (guid.uuid[5] == 0x05 && guid.uuid[4] == 0x7e) { + if (guid.uuid[5] == 0x05 && guid.uuid[4] == 0x7e && + (guid.uuid[8] == 0x06 || guid.uuid[8] == 0x07)) { LOG_ERROR(Input, "Device black listed {}", joystick_index); SDL_JoystickClose(sdl_joystick); return; @@ -451,11 +452,10 @@ SDLDriver::SDLDriver(std::string input_engine_) : InputEngine(std::move(input_en // Disable hidapi drivers for switch controllers when the custom joycon driver is enabled if (Settings::values.enable_joycon_driver) { SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS, "0"); - SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_SWITCH, "0"); } else { SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS, "1"); - SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_SWITCH, "1"); } + SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_SWITCH, "1"); // Disable hidapi driver for xbox. Already default on Windows, this causes conflict with native // driver on Linux. diff --git a/src/input_common/helpers/joycon_driver.cpp b/src/input_common/helpers/joycon_driver.cpp index e8aef028a..552572343 100644 --- a/src/input_common/helpers/joycon_driver.cpp +++ b/src/input_common/helpers/joycon_driver.cpp @@ -540,11 +540,9 @@ void JoyconDriver::SetCallbacks(const JoyconCallbacks& callbacks) { DriverResult JoyconDriver::GetDeviceType(SDL_hid_device_info* device_info, ControllerType& controller_type) { - static constexpr std::array, 4> supported_devices{ + static constexpr std::array, 2> supported_devices{ std::pair{0x2006, ControllerType::Left}, {0x2007, ControllerType::Right}, - {0x2009, ControllerType::Pro}, - {0x200E, ControllerType::Grip}, }; constexpr u16 nintendo_vendor_id = 0x057e;