settings: Add Enable SDL Joycon setting

This commit is contained in:
Narr the Reg
2021-12-02 11:09:44 -06:00
committed by german77
parent d27a4b3e07
commit 7c6d2a3068
6 changed files with 35 additions and 8 deletions
+1
View File
@@ -559,6 +559,7 @@ struct Values {
BasicSetting<bool> enable_raw_input{false, "enable_raw_input"}; BasicSetting<bool> enable_raw_input{false, "enable_raw_input"};
BasicSetting<bool> controller_navigation{true, "controller_navigation"}; BasicSetting<bool> controller_navigation{true, "controller_navigation"};
BasicSetting<bool> enable_sdl_joycons{false, "enable_sdl_joycons"};
Setting<bool> vibration_enabled{true, "vibration_enabled"}; Setting<bool> vibration_enabled{true, "vibration_enabled"};
Setting<bool> enable_accurate_vibrations{false, "enable_accurate_vibrations"}; Setting<bool> enable_accurate_vibrations{false, "enable_accurate_vibrations"};
+6 -2
View File
@@ -5,14 +5,18 @@
#include <fmt/format.h> #include <fmt/format.h>
#include "common/param_package.h" #include "common/param_package.h"
#include "common/settings_input.h" #include "common/settings.h"
#include "common/thread.h" #include "common/thread.h"
#include "input_common/drivers/joycon.h" #include "input_common/drivers/joycon.h"
namespace InputCommon { namespace InputCommon {
Joycons::Joycons(const std::string& input_engine_) : InputEngine(input_engine_) { Joycons::Joycons(const std::string& input_engine_) : InputEngine(input_engine_) {
LOG_INFO(Input, "JC Adapter Initialization started"); if (Settings::values.enable_sdl_joycons) {
// Avoid conflicting with SDL driver
return;
}
LOG_INFO(Input, "Joycon driver Initialization started");
const int init_res = SDL_hid_init(); const int init_res = SDL_hid_init();
if (init_res == 0) { if (init_res == 0) {
Setup(); Setup();
+5 -3
View File
@@ -410,9 +410,11 @@ SDLDriver::SDLDriver(std::string input_engine_) : InputEngine(std::move(input_en
SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE, "1");
SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1");
// Use hidapi driver for joycons. This will allow joycons to be detected as a GameController and if (Settings::values.enable_sdl_joycons) {
// not a generic one // Use hidapi driver for joycons. This will allow joycons to be detected as a GameController and
SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS, "1"); // not a generic one
SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS, "1");
}
// 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.
+2
View File
@@ -398,6 +398,7 @@ void Config::ReadControlValues() {
#else #else
Settings::values.enable_raw_input = false; Settings::values.enable_raw_input = false;
#endif #endif
ReadBasicSetting(Settings::values.enable_sdl_joycons);
ReadBasicSetting(Settings::values.emulate_analog_keyboard); ReadBasicSetting(Settings::values.emulate_analog_keyboard);
Settings::values.mouse_panning = false; Settings::values.mouse_panning = false;
ReadBasicSetting(Settings::values.mouse_panning_sensitivity); ReadBasicSetting(Settings::values.mouse_panning_sensitivity);
@@ -1042,6 +1043,7 @@ void Config::SaveControlValues() {
WriteGlobalSetting(Settings::values.enable_accurate_vibrations); WriteGlobalSetting(Settings::values.enable_accurate_vibrations);
WriteGlobalSetting(Settings::values.motion_enabled); WriteGlobalSetting(Settings::values.motion_enabled);
WriteBasicSetting(Settings::values.enable_raw_input); WriteBasicSetting(Settings::values.enable_raw_input);
WriteBasicSetting(Settings::values.enable_sdl_joycons);
WriteBasicSetting(Settings::values.keyboard_enabled); WriteBasicSetting(Settings::values.keyboard_enabled);
WriteBasicSetting(Settings::values.emulate_analog_keyboard); WriteBasicSetting(Settings::values.emulate_analog_keyboard);
WriteBasicSetting(Settings::values.mouse_panning_sensitivity); WriteBasicSetting(Settings::values.mouse_panning_sensitivity);
@@ -136,6 +136,7 @@ void ConfigureInputAdvanced::ApplyConfiguration() {
Settings::values.enable_udp_controller = ui->enable_udp_controller->isChecked(); Settings::values.enable_udp_controller = ui->enable_udp_controller->isChecked();
Settings::values.controller_navigation = ui->controller_navigation->isChecked(); Settings::values.controller_navigation = ui->controller_navigation->isChecked();
Settings::values.enable_ring_controller = ui->enable_ring_controller->isChecked(); Settings::values.enable_ring_controller = ui->enable_ring_controller->isChecked();
Settings::values.enable_sdl_joycons = ui->enable_sdl_joycons->isChecked();
} }
void ConfigureInputAdvanced::LoadConfiguration() { void ConfigureInputAdvanced::LoadConfiguration() {
@@ -169,6 +170,7 @@ void ConfigureInputAdvanced::LoadConfiguration() {
ui->enable_udp_controller->setChecked(Settings::values.enable_udp_controller.GetValue()); ui->enable_udp_controller->setChecked(Settings::values.enable_udp_controller.GetValue());
ui->controller_navigation->setChecked(Settings::values.controller_navigation.GetValue()); ui->controller_navigation->setChecked(Settings::values.controller_navigation.GetValue());
ui->enable_ring_controller->setChecked(Settings::values.enable_ring_controller.GetValue()); ui->enable_ring_controller->setChecked(Settings::values.enable_ring_controller.GetValue());
ui->enable_sdl_joycons->setChecked(Settings::values.enable_sdl_joycons.GetValue());
UpdateUIEnabled(); UpdateUIEnabled();
} }
@@ -2682,6 +2682,22 @@
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="5" column="0">
<widget class="QCheckBox" name="enable_sdl_joycons">
<property name="toolTip">
<string>Requires restarting yuzu</string>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Enable SDL Joycons</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="mouse_panning"> <widget class="QCheckBox" name="mouse_panning">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
@@ -2694,7 +2710,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="2"> <item row="7" column="2">
<widget class="QSpinBox" name="mouse_panning_sensitivity"> <widget class="QSpinBox" name="mouse_panning_sensitivity">
<property name="toolTip"> <property name="toolTip">
<string>Mouse sensitivity</string> <string>Mouse sensitivity</string>
@@ -2716,14 +2732,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0"> <item row="7" column="0">
<widget class="QLabel" name="motion_touch"> <widget class="QLabel" name="motion_touch">
<property name="text"> <property name="text">
<string>Motion / Touch</string> <string>Motion / Touch</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="2"> <item row="7" column="2">
<widget class="QPushButton" name="buttonMotionTouch"> <widget class="QPushButton" name="buttonMotionTouch">
<property name="text"> <property name="text">
<string>Configure</string> <string>Configure</string>