diff options
| -rw-r--r-- | src/input_common/settings.h | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player.cpp | 37 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player.h | 9 |
3 files changed, 23 insertions, 25 deletions
diff --git a/src/input_common/settings.h b/src/input_common/settings.h index ab0b95cf1..f52d28540 100644 --- a/src/input_common/settings.h +++ b/src/input_common/settings.h | |||
| @@ -331,8 +331,6 @@ struct PlayerInput { | |||
| 331 | ButtonsRaw buttons; | 331 | ButtonsRaw buttons; |
| 332 | AnalogsRaw analogs; | 332 | AnalogsRaw analogs; |
| 333 | MotionRaw motions; | 333 | MotionRaw motions; |
| 334 | std::string lstick_mod; | ||
| 335 | std::string rstick_mod; | ||
| 336 | 334 | ||
| 337 | u32 body_color_left; | 335 | u32 body_color_left; |
| 338 | u32 body_color_right; | 336 | u32 body_color_right; |
diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 698cb1940..f58ca29d7 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp | |||
| @@ -256,11 +256,6 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i | |||
| 256 | ui->buttonSL, ui->buttonSR, ui->buttonHome, ui->buttonScreenshot, | 256 | ui->buttonSL, ui->buttonSR, ui->buttonHome, ui->buttonScreenshot, |
| 257 | }; | 257 | }; |
| 258 | 258 | ||
| 259 | mod_buttons = { | ||
| 260 | ui->buttonLStickMod, | ||
| 261 | ui->buttonRStickMod, | ||
| 262 | }; | ||
| 263 | |||
| 264 | analog_map_buttons = {{ | 259 | analog_map_buttons = {{ |
| 265 | { | 260 | { |
| 266 | ui->buttonLStickUp, | 261 | ui->buttonLStickUp, |
| @@ -284,6 +279,7 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i | |||
| 284 | analog_map_deadzone_label = {ui->labelLStickDeadzone, ui->labelRStickDeadzone}; | 279 | analog_map_deadzone_label = {ui->labelLStickDeadzone, ui->labelRStickDeadzone}; |
| 285 | analog_map_deadzone_slider = {ui->sliderLStickDeadzone, ui->sliderRStickDeadzone}; | 280 | analog_map_deadzone_slider = {ui->sliderLStickDeadzone, ui->sliderRStickDeadzone}; |
| 286 | analog_map_modifier_groupbox = {ui->buttonLStickModGroup, ui->buttonRStickModGroup}; | 281 | analog_map_modifier_groupbox = {ui->buttonLStickModGroup, ui->buttonRStickModGroup}; |
| 282 | analog_map_modifier_button = {ui->buttonLStickMod, ui->buttonRStickMod}; | ||
| 287 | analog_map_modifier_label = {ui->labelLStickModifierRange, ui->labelRStickModifierRange}; | 283 | analog_map_modifier_label = {ui->labelLStickModifierRange, ui->labelRStickModifierRange}; |
| 288 | analog_map_modifier_slider = {ui->sliderLStickModifierRange, ui->sliderRStickModifierRange}; | 284 | analog_map_modifier_slider = {ui->sliderLStickModifierRange, ui->sliderRStickModifierRange}; |
| 289 | analog_map_range_groupbox = {ui->buttonLStickRangeGroup, ui->buttonRStickRangeGroup}; | 285 | analog_map_range_groupbox = {ui->buttonLStickRangeGroup, ui->buttonRStickRangeGroup}; |
| @@ -394,20 +390,26 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i | |||
| 394 | } | 390 | } |
| 395 | 391 | ||
| 396 | // Handle clicks for the modifier buttons as well. | 392 | // Handle clicks for the modifier buttons as well. |
| 397 | ConfigureButtonClick(mod_buttons[analog_id], &stick_mod_param[analog_id], | 393 | connect(analog_map_modifier_button[analog_id], &QPushButton::clicked, [=, this] { |
| 398 | Config::default_stick_mod[analog_id], | 394 | HandleClick( |
| 399 | InputCommon::Polling::DeviceType::Button); | 395 | analog_map_modifier_button[analog_id], |
| 396 | [=, this](const Common::ParamPackage& params) { | ||
| 397 | analogs_param[analog_id].Set("modifier", params.Serialize()); | ||
| 398 | }, | ||
| 399 | InputCommon::Polling::DeviceType::Button); | ||
| 400 | }); | ||
| 400 | 401 | ||
| 401 | mod_buttons[analog_id]->setContextMenuPolicy(Qt::CustomContextMenu); | 402 | analog_map_modifier_button[analog_id]->setContextMenuPolicy(Qt::CustomContextMenu); |
| 402 | 403 | ||
| 403 | connect(mod_buttons[analog_id], &QPushButton::customContextMenuRequested, | 404 | connect(analog_map_modifier_button[analog_id], &QPushButton::customContextMenuRequested, |
| 404 | [=, this](const QPoint& menu_location) { | 405 | [=, this](const QPoint& menu_location) { |
| 405 | QMenu context_menu; | 406 | QMenu context_menu; |
| 406 | context_menu.addAction(tr("Clear"), [&] { | 407 | context_menu.addAction(tr("Clear"), [&] { |
| 407 | stick_mod_param[analog_id].Clear(); | 408 | analogs_param[analog_id].Set("modifier", ""); |
| 408 | mod_buttons[analog_id]->setText(tr("[not set]")); | 409 | analog_map_modifier_button[analog_id]->setText(tr("[not set]")); |
| 409 | }); | 410 | }); |
| 410 | context_menu.exec(mod_buttons[analog_id]->mapToGlobal(menu_location)); | 411 | context_menu.exec( |
| 412 | analog_map_modifier_button[analog_id]->mapToGlobal(menu_location)); | ||
| 411 | }); | 413 | }); |
| 412 | 414 | ||
| 413 | connect(analog_map_range_spinbox[analog_id], qOverload<int>(&QSpinBox::valueChanged), | 415 | connect(analog_map_range_spinbox[analog_id], qOverload<int>(&QSpinBox::valueChanged), |
| @@ -636,8 +638,8 @@ void ConfigureInputPlayer::RestoreDefaults() { | |||
| 636 | SetAnalogParam(params, analogs_param[analog_id], analog_sub_buttons[sub_button_id]); | 638 | SetAnalogParam(params, analogs_param[analog_id], analog_sub_buttons[sub_button_id]); |
| 637 | } | 639 | } |
| 638 | 640 | ||
| 639 | stick_mod_param[analog_id] = Common::ParamPackage( | 641 | analogs_param[analog_id].Set( |
| 640 | InputCommon::GenerateKeyboardParam(Config::default_stick_mod[analog_id])); | 642 | "modifier", InputCommon::GenerateKeyboardParam(Config::default_stick_mod[analog_id])); |
| 641 | } | 643 | } |
| 642 | 644 | ||
| 643 | for (int motion_id = 0; motion_id < Settings::NativeMotion::NumMotions; ++motion_id) { | 645 | for (int motion_id = 0; motion_id < Settings::NativeMotion::NumMotions; ++motion_id) { |
| @@ -669,8 +671,6 @@ void ConfigureInputPlayer::ClearAll() { | |||
| 669 | 671 | ||
| 670 | analogs_param[analog_id].Clear(); | 672 | analogs_param[analog_id].Clear(); |
| 671 | } | 673 | } |
| 672 | |||
| 673 | stick_mod_param[analog_id].Clear(); | ||
| 674 | } | 674 | } |
| 675 | 675 | ||
| 676 | for (int motion_id = 0; motion_id < Settings::NativeMotion::NumMotions; ++motion_id) { | 676 | for (int motion_id = 0; motion_id < Settings::NativeMotion::NumMotions; ++motion_id) { |
| @@ -707,7 +707,8 @@ void ConfigureInputPlayer::UpdateUI() { | |||
| 707 | AnalogToText(analogs_param[analog_id], analog_sub_buttons[sub_button_id])); | 707 | AnalogToText(analogs_param[analog_id], analog_sub_buttons[sub_button_id])); |
| 708 | } | 708 | } |
| 709 | 709 | ||
| 710 | mod_buttons[analog_id]->setText(ButtonToText(stick_mod_param[analog_id])); | 710 | analog_map_modifier_button[analog_id]->setText( |
| 711 | ButtonToText(Common::ParamPackage{analogs_param[analog_id].Get("modifier", "")})); | ||
| 711 | 712 | ||
| 712 | const auto deadzone_label = analog_map_deadzone_label[analog_id]; | 713 | const auto deadzone_label = analog_map_deadzone_label[analog_id]; |
| 713 | const auto deadzone_slider = analog_map_deadzone_slider[analog_id]; | 714 | const auto deadzone_slider = analog_map_deadzone_slider[analog_id]; |
diff --git a/src/yuzu/configuration/configure_input_player.h b/src/yuzu/configuration/configure_input_player.h index ce443dec5..c19aefffa 100644 --- a/src/yuzu/configuration/configure_input_player.h +++ b/src/yuzu/configuration/configure_input_player.h | |||
| @@ -131,26 +131,25 @@ private: | |||
| 131 | 131 | ||
| 132 | std::array<Common::ParamPackage, Settings::NativeButton::NumButtons> buttons_param; | 132 | std::array<Common::ParamPackage, Settings::NativeButton::NumButtons> buttons_param; |
| 133 | std::array<Common::ParamPackage, Settings::NativeAnalog::NumAnalogs> analogs_param; | 133 | std::array<Common::ParamPackage, Settings::NativeAnalog::NumAnalogs> analogs_param; |
| 134 | std::array<Common::ParamPackage, Settings::NativeAnalog::NumAnalogs> stick_mod_param; | ||
| 135 | std::array<Common::ParamPackage, Settings::NativeMotion::NumMotions> motions_param; | 134 | std::array<Common::ParamPackage, Settings::NativeMotion::NumMotions> motions_param; |
| 136 | 135 | ||
| 137 | static constexpr int ANALOG_SUB_BUTTONS_NUM = 4; | 136 | static constexpr int ANALOG_SUB_BUTTONS_NUM = 4; |
| 138 | 137 | ||
| 139 | /// Each button input is represented by a QPushButton. | 138 | /// Each button input is represented by a QPushButton. |
| 140 | std::array<QPushButton*, Settings::NativeButton::NumButtons> button_map; | 139 | std::array<QPushButton*, Settings::NativeButton::NumButtons> button_map; |
| 141 | /// Each motion input is represented by a QPushButton. | ||
| 142 | std::array<QPushButton*, Settings::NativeMotion::NumMotions> motion_map; | ||
| 143 | /// Extra buttons for the modifiers. | ||
| 144 | std::array<QPushButton*, Settings::NativeAnalog::NumAnalogs> mod_buttons; | ||
| 145 | 140 | ||
| 146 | /// A group of four QPushButtons represent one analog input. The buttons each represent up, | 141 | /// A group of four QPushButtons represent one analog input. The buttons each represent up, |
| 147 | /// down, left, right, respectively. | 142 | /// down, left, right, respectively. |
| 148 | std::array<std::array<QPushButton*, ANALOG_SUB_BUTTONS_NUM>, Settings::NativeAnalog::NumAnalogs> | 143 | std::array<std::array<QPushButton*, ANALOG_SUB_BUTTONS_NUM>, Settings::NativeAnalog::NumAnalogs> |
| 149 | analog_map_buttons; | 144 | analog_map_buttons; |
| 150 | 145 | ||
| 146 | /// Each motion input is represented by a QPushButton. | ||
| 147 | std::array<QPushButton*, Settings::NativeMotion::NumMotions> motion_map; | ||
| 148 | |||
| 151 | std::array<QLabel*, Settings::NativeAnalog::NumAnalogs> analog_map_deadzone_label; | 149 | std::array<QLabel*, Settings::NativeAnalog::NumAnalogs> analog_map_deadzone_label; |
| 152 | std::array<QSlider*, Settings::NativeAnalog::NumAnalogs> analog_map_deadzone_slider; | 150 | std::array<QSlider*, Settings::NativeAnalog::NumAnalogs> analog_map_deadzone_slider; |
| 153 | std::array<QGroupBox*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_groupbox; | 151 | std::array<QGroupBox*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_groupbox; |
| 152 | std::array<QPushButton*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_button; | ||
| 154 | std::array<QLabel*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_label; | 153 | std::array<QLabel*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_label; |
| 155 | std::array<QSlider*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_slider; | 154 | std::array<QSlider*, Settings::NativeAnalog::NumAnalogs> analog_map_modifier_slider; |
| 156 | std::array<QGroupBox*, Settings::NativeAnalog::NumAnalogs> analog_map_range_groupbox; | 155 | std::array<QGroupBox*, Settings::NativeAnalog::NumAnalogs> analog_map_range_groupbox; |