diff options
Diffstat (limited to 'src/yuzu/configuration/configure_input.h')
-rw-r--r-- | src/yuzu/configuration/configure_input.h | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/yuzu/configuration/configure_input.h b/src/yuzu/configuration/configure_input.h index c950fbcb4..a0bef86d5 100644 --- a/src/yuzu/configuration/configure_input.h +++ b/src/yuzu/configuration/configure_input.h @@ -8,11 +8,13 @@ #include <functional> #include <memory> #include <string> +#include <unordered_map> #include <QKeyEvent> #include <QWidget> #include <boost/optional.hpp> #include "common/param_package.h" #include "core/settings.h" +#include "input_common/main.h" #include "ui_configure_input.h" class QPushButton; @@ -35,10 +37,11 @@ public: private: std::unique_ptr<Ui::ConfigureInput> ui; - std::unique_ptr<QTimer> timer; + std::unique_ptr<QTimer> timeout_timer; + std::unique_ptr<QTimer> poll_timer; /// This will be the the setting function when an input is awaiting configuration. - boost::optional<std::function<void(int)>> key_setter; + boost::optional<std::function<void(const Common::ParamPackage&)>> input_setter; std::array<Common::ParamPackage, Settings::NativeButton::NumButtons> buttons_param; std::array<Common::ParamPackage, Settings::NativeAnalog::NumAnalogs> analogs_param; @@ -48,13 +51,23 @@ private: /// Each button input is represented by a QPushButton. std::array<QPushButton*, Settings::NativeButton::NumButtons> button_map; - /// Each analog input is represented by five QPushButtons which represents up, down, left, right - /// and modifier + /// A group of five QPushButtons represent one analog input. The buttons each represent up, + /// down, left, right, and modifier, respectively. std::array<std::array<QPushButton*, ANALOG_SUB_BUTTONS_NUM>, Settings::NativeAnalog::NumAnalogs> - analog_map; + analog_map_buttons; + + /// Analog inputs are also represented each with a single button, used to configure with an + /// actual analog stick + std::array<QPushButton*, Settings::NativeAnalog::NumAnalogs> analog_map_stick; static const std::array<std::string, ANALOG_SUB_BUTTONS_NUM> analog_sub_buttons; + std::vector<std::unique_ptr<InputCommon::Polling::DevicePoller>> device_pollers; + + /// 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. @@ -63,7 +76,13 @@ private: void updateButtonLabels(); /// Called when the button was pressed. - void handleClick(QPushButton* button, std::function<void(int)> new_key_setter); + void handleClick(QPushButton* button, + std::function<void(const Common::ParamPackage&)> 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; }; |