From 2e1dd9c64939a1af43d0a77c63340e88d19f7e61 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Thu, 1 Nov 2018 22:07:46 -0400 Subject: qt: Add UI to configure mouse buttons Supports setting the five mouse buttons to any valid controller button/keyboard key (Left, Right, Middle, Foward, Back) --- src/yuzu/configuration/configure_mouse_advanced.h | 67 +++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/yuzu/configuration/configure_mouse_advanced.h (limited to 'src/yuzu/configuration/configure_mouse_advanced.h') diff --git a/src/yuzu/configuration/configure_mouse_advanced.h b/src/yuzu/configuration/configure_mouse_advanced.h new file mode 100644 index 000000000..f897d9044 --- /dev/null +++ b/src/yuzu/configuration/configure_mouse_advanced.h @@ -0,0 +1,67 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include +#include +#include +#include "core/settings.h" + +class QCheckBox; +class QPushButton; +class QTimer; + +namespace Ui { +class ConfigureMouseAdvanced; +} + +class ConfigureMouseAdvanced : public QDialog { + Q_OBJECT + +public: + explicit ConfigureMouseAdvanced(QWidget* parent); + + void applyConfiguration(); + +private: + std::unique_ptr ui; + + /// This will be the the setting function when an input is awaiting configuration. + boost::optional> input_setter; + + std::array button_map; + std::array buttons_param; + + std::vector> device_pollers; + + std::unique_ptr timeout_timer; + std::unique_ptr poll_timer; + + /// A flag to indicate if keyboard keys are okay when configuring an input. If this is false, + /// keyboard events are ignored. + bool want_keyboard_keys = false; + + /// Load configuration settings. + void loadConfiguration(); + /// Restore all buttons to their default values. + void restoreDefaults(); + /// Clear all input configuration + void ClearAll(); + + /// Update UI to reflect current configuration. + void updateButtonLabels(); + + /// Called when the button was pressed. + void handleClick(QPushButton* button, + std::function new_input_setter, + InputCommon::Polling::DeviceType type); + + /// Finish polling and configure input using the input_setter + void setPollingResult(const Common::ParamPackage& params, bool abort); + + /// Handle key press events. + void keyPressEvent(QKeyEvent* event) override; +}; -- cgit v1.2.3 From 3a6cd5b3c8dec11cc88c6aebdc4773233f615c91 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Sat, 3 Nov 2018 12:55:39 -0400 Subject: hid: Use player-defined controller type as PREFERRED_CONTROLLER --- src/yuzu/configuration/configure_mouse_advanced.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/yuzu/configuration/configure_mouse_advanced.h') diff --git a/src/yuzu/configuration/configure_mouse_advanced.h b/src/yuzu/configuration/configure_mouse_advanced.h index f897d9044..983ac4158 100644 --- a/src/yuzu/configuration/configure_mouse_advanced.h +++ b/src/yuzu/configuration/configure_mouse_advanced.h @@ -5,9 +5,9 @@ #pragma once #include +#include #include #include -#include #include "core/settings.h" class QCheckBox; @@ -30,7 +30,7 @@ private: std::unique_ptr ui; /// This will be the the setting function when an input is awaiting configuration. - boost::optional> input_setter; + std::optional> input_setter; std::array button_map; std::array buttons_param; -- cgit v1.2.3 From e58c951a59d7f3851fd3a71ae6f99933fba8cdbb Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Sun, 4 Nov 2018 10:18:59 -0500 Subject: configure_input: Make None a controller option instead of checkbox --- src/yuzu/configuration/configure_mouse_advanced.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/yuzu/configuration/configure_mouse_advanced.h') diff --git a/src/yuzu/configuration/configure_mouse_advanced.h b/src/yuzu/configuration/configure_mouse_advanced.h index 983ac4158..218df2bda 100644 --- a/src/yuzu/configuration/configure_mouse_advanced.h +++ b/src/yuzu/configuration/configure_mouse_advanced.h @@ -23,6 +23,7 @@ class ConfigureMouseAdvanced : public QDialog { public: explicit ConfigureMouseAdvanced(QWidget* parent); + ~ConfigureMouseAdvanced() override; void applyConfiguration(); -- cgit v1.2.3