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> controller_navigation{true, "controller_navigation"};
BasicSetting<bool> enable_sdl_joycons{false, "enable_sdl_joycons"};
Setting<bool> vibration_enabled{true, "vibration_enabled"};
Setting<bool> enable_accurate_vibrations{false, "enable_accurate_vibrations"};
+6 -2
View File
@@ -5,14 +5,18 @@
#include <fmt/format.h>
#include "common/param_package.h"
#include "common/settings_input.h"
#include "common/settings.h"
#include "common/thread.h"
#include "input_common/drivers/joycon.h"
namespace InputCommon {
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();
if (init_res == 0) {
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_ALLOW_BACKGROUND_EVENTS, "1");
// Use hidapi driver for joycons. This will allow joycons to be detected as a GameController and
// not a generic one
SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS, "1");
if (Settings::values.enable_sdl_joycons) {
// Use hidapi driver for joycons. This will allow joycons to be detected as a GameController and
// 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
// driver on Linux.
+2
View File
@@ -398,6 +398,7 @@ void Config::ReadControlValues() {
#else
Settings::values.enable_raw_input = false;
#endif
ReadBasicSetting(Settings::values.enable_sdl_joycons);
ReadBasicSetting(Settings::values.emulate_analog_keyboard);
Settings::values.mouse_panning = false;
ReadBasicSetting(Settings::values.mouse_panning_sensitivity);
@@ -1042,6 +1043,7 @@ void Config::SaveControlValues() {
WriteGlobalSetting(Settings::values.enable_accurate_vibrations);
WriteGlobalSetting(Settings::values.motion_enabled);
WriteBasicSetting(Settings::values.enable_raw_input);
WriteBasicSetting(Settings::values.enable_sdl_joycons);
WriteBasicSetting(Settings::values.keyboard_enabled);
WriteBasicSetting(Settings::values.emulate_analog_keyboard);
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.controller_navigation = ui->controller_navigation->isChecked();
Settings::values.enable_ring_controller = ui->enable_ring_controller->isChecked();
Settings::values.enable_sdl_joycons = ui->enable_sdl_joycons->isChecked();
}
void ConfigureInputAdvanced::LoadConfiguration() {
@@ -169,6 +170,7 @@ void ConfigureInputAdvanced::LoadConfiguration() {
ui->enable_udp_controller->setChecked(Settings::values.enable_udp_controller.GetValue());
ui->controller_navigation->setChecked(Settings::values.controller_navigation.GetValue());
ui->enable_ring_controller->setChecked(Settings::values.enable_ring_controller.GetValue());
ui->enable_sdl_joycons->setChecked(Settings::values.enable_sdl_joycons.GetValue());
UpdateUIEnabled();
}
@@ -2682,6 +2682,22 @@
</widget>
</item>
<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">
<property name="minimumSize">
<size>
@@ -2694,7 +2710,7 @@
</property>
</widget>
</item>
<item row="5" column="2">
<item row="7" column="2">
<widget class="QSpinBox" name="mouse_panning_sensitivity">
<property name="toolTip">
<string>Mouse sensitivity</string>
@@ -2716,14 +2732,14 @@
</property>
</widget>
</item>
<item row="6" column="0">
<item row="7" column="0">
<widget class="QLabel" name="motion_touch">
<property name="text">
<string>Motion / Touch</string>
</property>
</widget>
</item>
<item row="6" column="2">
<item row="7" column="2">
<widget class="QPushButton" name="buttonMotionTouch">
<property name="text">
<string>Configure</string>