input_common: set SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS
to 0
This allows to share the mappings between Nintendo and non-Nintendo controllers.
Breaks the controller configuration for existing users who are using a Nintendo controller.
(Documentation of the hint 92b3c53c92/include/SDL_hints.h (L512-L532)
)
This commit is contained in:
parent
d6a9ed32e6
commit
aa882cdaa8
@ -523,6 +523,8 @@ SDLDriver::SDLDriver(std::string input_engine_) : InputEngine(std::move(input_en
|
|||||||
}
|
}
|
||||||
|
|
||||||
SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED, "1");
|
SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED, "1");
|
||||||
|
// Share the same button mapping with non-Nintendo controllers
|
||||||
|
SDL_SetHint(SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS, "0");
|
||||||
|
|
||||||
// Disable hidapi driver for xbox. Already default on Windows, this causes conflict with native
|
// Disable hidapi driver for xbox. Already default on Windows, this causes conflict with native
|
||||||
// driver on Linux.
|
// driver on Linux.
|
||||||
@ -800,16 +802,9 @@ ButtonMapping SDLDriver::GetButtonMappingForDevice(const Common::ParamPackage& p
|
|||||||
|
|
||||||
// This list is missing ZL/ZR since those are not considered buttons in SDL GameController.
|
// This list is missing ZL/ZR since those are not considered buttons in SDL GameController.
|
||||||
// We will add those afterwards
|
// We will add those afterwards
|
||||||
// This list also excludes Screenshot since there's not really a mapping for that
|
|
||||||
ButtonBindings switch_to_sdl_button;
|
ButtonBindings switch_to_sdl_button;
|
||||||
|
|
||||||
if (SDL_GameControllerGetType(controller) == SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO ||
|
switch_to_sdl_button = GetDefaultButtonBinding(joystick);
|
||||||
SDL_GameControllerGetType(controller) == SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT ||
|
|
||||||
SDL_GameControllerGetType(controller) == SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT) {
|
|
||||||
switch_to_sdl_button = GetNintendoButtonBinding(joystick);
|
|
||||||
} else {
|
|
||||||
switch_to_sdl_button = GetDefaultButtonBinding();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add the missing bindings for ZL/ZR
|
// Add the missing bindings for ZL/ZR
|
||||||
static constexpr ZButtonBindings switch_to_sdl_axis{{
|
static constexpr ZButtonBindings switch_to_sdl_axis{{
|
||||||
@ -830,32 +825,9 @@ ButtonMapping SDLDriver::GetButtonMappingForDevice(const Common::ParamPackage& p
|
|||||||
return GetSingleControllerMapping(joystick, switch_to_sdl_button, switch_to_sdl_axis);
|
return GetSingleControllerMapping(joystick, switch_to_sdl_button, switch_to_sdl_axis);
|
||||||
}
|
}
|
||||||
|
|
||||||
ButtonBindings SDLDriver::GetDefaultButtonBinding() const {
|
ButtonBindings SDLDriver::GetDefaultButtonBinding(
|
||||||
return {
|
|
||||||
std::pair{Settings::NativeButton::A, SDL_CONTROLLER_BUTTON_B},
|
|
||||||
{Settings::NativeButton::B, SDL_CONTROLLER_BUTTON_A},
|
|
||||||
{Settings::NativeButton::X, SDL_CONTROLLER_BUTTON_Y},
|
|
||||||
{Settings::NativeButton::Y, SDL_CONTROLLER_BUTTON_X},
|
|
||||||
{Settings::NativeButton::LStick, SDL_CONTROLLER_BUTTON_LEFTSTICK},
|
|
||||||
{Settings::NativeButton::RStick, SDL_CONTROLLER_BUTTON_RIGHTSTICK},
|
|
||||||
{Settings::NativeButton::L, SDL_CONTROLLER_BUTTON_LEFTSHOULDER},
|
|
||||||
{Settings::NativeButton::R, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER},
|
|
||||||
{Settings::NativeButton::Plus, SDL_CONTROLLER_BUTTON_START},
|
|
||||||
{Settings::NativeButton::Minus, SDL_CONTROLLER_BUTTON_BACK},
|
|
||||||
{Settings::NativeButton::DLeft, SDL_CONTROLLER_BUTTON_DPAD_LEFT},
|
|
||||||
{Settings::NativeButton::DUp, SDL_CONTROLLER_BUTTON_DPAD_UP},
|
|
||||||
{Settings::NativeButton::DRight, SDL_CONTROLLER_BUTTON_DPAD_RIGHT},
|
|
||||||
{Settings::NativeButton::DDown, SDL_CONTROLLER_BUTTON_DPAD_DOWN},
|
|
||||||
{Settings::NativeButton::SL, SDL_CONTROLLER_BUTTON_LEFTSHOULDER},
|
|
||||||
{Settings::NativeButton::SR, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER},
|
|
||||||
{Settings::NativeButton::Home, SDL_CONTROLLER_BUTTON_GUIDE},
|
|
||||||
{Settings::NativeButton::Screenshot, SDL_CONTROLLER_BUTTON_MISC1},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
ButtonBindings SDLDriver::GetNintendoButtonBinding(
|
|
||||||
const std::shared_ptr<SDLJoystick>& joystick) const {
|
const std::shared_ptr<SDLJoystick>& joystick) const {
|
||||||
// Default SL/SR mapping for pro controllers
|
// Default SL/SR mapping for other controllers
|
||||||
auto sl_button = SDL_CONTROLLER_BUTTON_LEFTSHOULDER;
|
auto sl_button = SDL_CONTROLLER_BUTTON_LEFTSHOULDER;
|
||||||
auto sr_button = SDL_CONTROLLER_BUTTON_RIGHTSHOULDER;
|
auto sr_button = SDL_CONTROLLER_BUTTON_RIGHTSHOULDER;
|
||||||
|
|
||||||
@ -869,10 +841,10 @@ ButtonBindings SDLDriver::GetNintendoButtonBinding(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
std::pair{Settings::NativeButton::A, SDL_CONTROLLER_BUTTON_A},
|
std::pair{Settings::NativeButton::A, SDL_CONTROLLER_BUTTON_B},
|
||||||
{Settings::NativeButton::B, SDL_CONTROLLER_BUTTON_B},
|
{Settings::NativeButton::B, SDL_CONTROLLER_BUTTON_A},
|
||||||
{Settings::NativeButton::X, SDL_CONTROLLER_BUTTON_X},
|
{Settings::NativeButton::X, SDL_CONTROLLER_BUTTON_Y},
|
||||||
{Settings::NativeButton::Y, SDL_CONTROLLER_BUTTON_Y},
|
{Settings::NativeButton::Y, SDL_CONTROLLER_BUTTON_X},
|
||||||
{Settings::NativeButton::LStick, SDL_CONTROLLER_BUTTON_LEFTSTICK},
|
{Settings::NativeButton::LStick, SDL_CONTROLLER_BUTTON_LEFTSTICK},
|
||||||
{Settings::NativeButton::RStick, SDL_CONTROLLER_BUTTON_RIGHTSTICK},
|
{Settings::NativeButton::RStick, SDL_CONTROLLER_BUTTON_RIGHTSTICK},
|
||||||
{Settings::NativeButton::L, SDL_CONTROLLER_BUTTON_LEFTSHOULDER},
|
{Settings::NativeButton::L, SDL_CONTROLLER_BUTTON_LEFTSHOULDER},
|
||||||
|
@ -100,11 +100,8 @@ private:
|
|||||||
int axis_y, float offset_x,
|
int axis_y, float offset_x,
|
||||||
float offset_y) const;
|
float offset_y) const;
|
||||||
|
|
||||||
/// Returns the default button bindings list for generic controllers
|
/// Returns the default button bindings list
|
||||||
ButtonBindings GetDefaultButtonBinding() const;
|
ButtonBindings GetDefaultButtonBinding(const std::shared_ptr<SDLJoystick>& joystick) const;
|
||||||
|
|
||||||
/// Returns the default button bindings list for nintendo controllers
|
|
||||||
ButtonBindings GetNintendoButtonBinding(const std::shared_ptr<SDLJoystick>& joystick) const;
|
|
||||||
|
|
||||||
/// Returns the button mappings from a single controller
|
/// Returns the button mappings from a single controller
|
||||||
ButtonMapping GetSingleControllerMapping(const std::shared_ptr<SDLJoystick>& joystick,
|
ButtonMapping GetSingleControllerMapping(const std::shared_ptr<SDLJoystick>& joystick,
|
||||||
|
Loading…
Reference in New Issue
Block a user