diff options
Diffstat (limited to 'src/yuzu')
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.ui | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_advanced.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_advanced.ui | 19 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player.cpp | 59 | ||||
| -rw-r--r-- | src/yuzu/hotkeys.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/util/controller_navigation.cpp | 3 | 
7 files changed, 62 insertions, 29 deletions
| diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 7e8f92840..2c8c10c50 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -393,6 +393,8 @@ void Config::ReadControlValues() {      ReadGlobalSetting(Settings::values.enable_accurate_vibrations);      ReadGlobalSetting(Settings::values.motion_enabled); +    ReadBasicSetting(Settings::values.controller_navigation); +      qt_config->endGroup();  } @@ -1001,6 +1003,7 @@ void Config::SaveControlValues() {      WriteBasicSetting(Settings::values.keyboard_enabled);      WriteBasicSetting(Settings::values.emulate_analog_keyboard);      WriteBasicSetting(Settings::values.mouse_panning_sensitivity); +    WriteBasicSetting(Settings::values.controller_navigation);      WriteBasicSetting(Settings::values.tas_enable);      WriteBasicSetting(Settings::values.tas_loop); diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index 9241678e4..74f0e0b79 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui @@ -429,7 +429,7 @@               </item>               <item>                <property name="text"> -               <string>AMD FidelityFX™️ Super Resolution [Vulkan Only]</string> +               <string>AMD FidelityFX™️ Super Resolution (Vulkan Only)</string>                </property>               </item>              </widget> diff --git a/src/yuzu/configuration/configure_input_advanced.cpp b/src/yuzu/configuration/configure_input_advanced.cpp index 65c8e59ac..20fc2599d 100644 --- a/src/yuzu/configuration/configure_input_advanced.cpp +++ b/src/yuzu/configuration/configure_input_advanced.cpp @@ -131,6 +131,7 @@ void ConfigureInputAdvanced::ApplyConfiguration() {      Settings::values.touchscreen.enabled = ui->touchscreen_enabled->isChecked();      Settings::values.enable_raw_input = ui->enable_raw_input->isChecked();      Settings::values.enable_udp_controller = ui->enable_udp_controller->isChecked(); +    Settings::values.controller_navigation = ui->controller_navigation->isChecked();  }  void ConfigureInputAdvanced::LoadConfiguration() { @@ -162,6 +163,7 @@ void ConfigureInputAdvanced::LoadConfiguration() {      ui->touchscreen_enabled->setChecked(Settings::values.touchscreen.enabled);      ui->enable_raw_input->setChecked(Settings::values.enable_raw_input.GetValue());      ui->enable_udp_controller->setChecked(Settings::values.enable_udp_controller.GetValue()); +    ui->controller_navigation->setChecked(Settings::values.controller_navigation.GetValue());      UpdateUIEnabled();  } diff --git a/src/yuzu/configuration/configure_input_advanced.ui b/src/yuzu/configuration/configure_input_advanced.ui index df0e4d602..66f2075f2 100644 --- a/src/yuzu/configuration/configure_input_advanced.ui +++ b/src/yuzu/configuration/configure_input_advanced.ui @@ -2655,6 +2655,19 @@                       </widget>                     </item>                     <item row="4" column="0"> +                     <widget class="QCheckBox" name="controller_navigation"> +                       <property name="minimumSize"> +                         <size> +                           <width>0</width> +                           <height>23</height> +                         </size> +                       </property> +                       <property name="text"> +                         <string>Controller navigation</string> +                       </property> +                     </widget> +                   </item> +                   <item row="5" column="0">                       <widget class="QCheckBox" name="mouse_panning">                         <property name="minimumSize">                           <size> @@ -2667,7 +2680,7 @@                         </property>                       </widget>                     </item> -                   <item row="4" column="2"> +                   <item row="5" column="2">                       <widget class="QSpinBox" name="mouse_panning_sensitivity">                         <property name="toolTip">                           <string>Mouse sensitivity</string> @@ -2689,14 +2702,14 @@                         </property>                       </widget>                     </item> -                   <item row="5" column="0"> +                   <item row="6" column="0">                       <widget class="QLabel" name="motion_touch">                         <property name="text">                           <string>Motion / Touch</string>                         </property>                       </widget>                     </item> -                   <item row="5" column="2"> +                   <item row="6" column="2">                       <widget class="QPushButton" name="buttonMotionTouch">                         <property name="text">                           <string>Configure</string> diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index d2132b408..7029287a9 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -147,7 +147,7 @@ QString ConfigureInputPlayer::ButtonToText(const Common::ParamPackage& param) {      // Retrieve the names from Qt      if (param.Get("engine", "") == "keyboard") {          const QString button_str = GetKeyName(param.Get("code", 0)); -        return QObject::tr("%1%2").arg(toggle, button_str); +        return QObject::tr("%1%2%3").arg(toggle, inverted, button_str);      }      if (common_button_name == Common::Input::ButtonNames::Invalid) { @@ -341,7 +341,7 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i                          emulated_controller->SetButtonParam(button_id, {});                          button_map[button_id]->setText(tr("[not set]"));                      }); -                    if (param.Has("button") || param.Has("hat")) { +                    if (param.Has("code") || param.Has("button") || param.Has("hat")) {                          context_menu.addAction(tr("Toggle button"), [&] {                              const bool toggle_value = !param.Get("toggle", false);                              param.Set("toggle", toggle_value); @@ -349,8 +349,8 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i                              emulated_controller->SetButtonParam(button_id, param);                          });                          context_menu.addAction(tr("Invert button"), [&] { -                            const bool toggle_value = !param.Get("inverted", false); -                            param.Set("inverted", toggle_value); +                            const bool invert_value = !param.Get("inverted", false); +                            param.Set("inverted", invert_value);                              button_map[button_id]->setText(ButtonToText(param));                              emulated_controller->SetButtonParam(button_id, param);                          }); @@ -510,28 +510,37 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i          analog_map_modifier_button[analog_id]->setContextMenuPolicy(Qt::CustomContextMenu); -        connect(analog_map_modifier_button[analog_id], &QPushButton::customContextMenuRequested, -                [=, this](const QPoint& menu_location) { -                    QMenu context_menu; -                    Common::ParamPackage param = emulated_controller->GetStickParam(analog_id); -                    context_menu.addAction(tr("Clear"), [&] { -                        param.Set("modifier", ""); -                        analog_map_modifier_button[analog_id]->setText(tr("[not set]")); -                        emulated_controller->SetStickParam(analog_id, param); -                    }); -                    context_menu.addAction(tr("Toggle button"), [&] { -                        Common::ParamPackage modifier_param = -                            Common::ParamPackage{param.Get("modifier", "")}; -                        const bool toggle_value = !modifier_param.Get("toggle", false); -                        modifier_param.Set("toggle", toggle_value); -                        param.Set("modifier", modifier_param.Serialize()); -                        analog_map_modifier_button[analog_id]->setText( -                            ButtonToText(modifier_param)); -                        emulated_controller->SetStickParam(analog_id, param); -                    }); -                    context_menu.exec( -                        analog_map_modifier_button[analog_id]->mapToGlobal(menu_location)); +        connect( +            analog_map_modifier_button[analog_id], &QPushButton::customContextMenuRequested, +            [=, this](const QPoint& menu_location) { +                QMenu context_menu; +                Common::ParamPackage param = emulated_controller->GetStickParam(analog_id); +                context_menu.addAction(tr("Clear"), [&] { +                    param.Set("modifier", ""); +                    analog_map_modifier_button[analog_id]->setText(tr("[not set]")); +                    emulated_controller->SetStickParam(analog_id, param); +                }); +                context_menu.addAction(tr("Toggle button"), [&] { +                    Common::ParamPackage modifier_param = +                        Common::ParamPackage{param.Get("modifier", "")}; +                    const bool toggle_value = !modifier_param.Get("toggle", false); +                    modifier_param.Set("toggle", toggle_value); +                    param.Set("modifier", modifier_param.Serialize()); +                    analog_map_modifier_button[analog_id]->setText(ButtonToText(modifier_param)); +                    emulated_controller->SetStickParam(analog_id, param);                  }); +                context_menu.addAction(tr("Invert button"), [&] { +                    Common::ParamPackage modifier_param = +                        Common::ParamPackage{param.Get("modifier", "")}; +                    const bool invert_value = !modifier_param.Get("inverted", false); +                    modifier_param.Set("inverted", invert_value); +                    param.Set("modifier", modifier_param.Serialize()); +                    analog_map_modifier_button[analog_id]->setText(ButtonToText(modifier_param)); +                    emulated_controller->SetStickParam(analog_id, param); +                }); +                context_menu.exec( +                    analog_map_modifier_button[analog_id]->mapToGlobal(menu_location)); +            });          connect(analog_map_range_spinbox[analog_id], qOverload<int>(&QSpinBox::valueChanged),                  [=, this] { diff --git a/src/yuzu/hotkeys.cpp b/src/yuzu/hotkeys.cpp index d96497c4e..6ed9611c7 100644 --- a/src/yuzu/hotkeys.cpp +++ b/src/yuzu/hotkeys.cpp @@ -190,6 +190,9 @@ void ControllerShortcut::ControllerUpdateEvent(Core::HID::ControllerTriggerType      if (type != Core::HID::ControllerTriggerType::Button) {          return;      } +    if (!Settings::values.controller_navigation) { +        return; +    }      if (button_sequence.npad.raw == Core::HID::NpadButton::None &&          button_sequence.capture.raw == 0 && button_sequence.home.raw == 0) {          return; diff --git a/src/yuzu/util/controller_navigation.cpp b/src/yuzu/util/controller_navigation.cpp index 86fb28b9f..c2b13123d 100644 --- a/src/yuzu/util/controller_navigation.cpp +++ b/src/yuzu/util/controller_navigation.cpp @@ -40,6 +40,9 @@ void ControllerNavigation::TriggerButton(Settings::NativeButton::Values native_b  void ControllerNavigation::ControllerUpdateEvent(Core::HID::ControllerTriggerType type) {      std::lock_guard lock{mutex}; +    if (!Settings::values.controller_navigation) { +        return; +    }      if (type == Core::HID::ControllerTriggerType::Button) {          ControllerUpdateButton();          return; | 
