summaryrefslogtreecommitdiffstats
path: root/src/yuzu/debugger/controller.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu/debugger/controller.h')
-rw-r--r--src/yuzu/debugger/controller.h38
1 files changed, 22 insertions, 16 deletions
diff --git a/src/yuzu/debugger/controller.h b/src/yuzu/debugger/controller.h
index 7742db58b..52cea3326 100644
--- a/src/yuzu/debugger/controller.h
+++ b/src/yuzu/debugger/controller.h
@@ -4,9 +4,7 @@
#pragma once
-#include <QFileSystemWatcher>
#include <QWidget>
-#include "common/settings.h"
class QAction;
class QHideEvent;
@@ -17,35 +15,43 @@ namespace InputCommon {
class InputSubsystem;
}
-struct ControllerInput {
- std::array<std::pair<float, float>, Settings::NativeAnalog::NUM_STICKS_HID> axis_values{};
- std::array<bool, Settings::NativeButton::NumButtons> button_values{};
- bool changed{};
-};
-
-struct ControllerCallback {
- std::function<void(ControllerInput)> input;
-};
+namespace Core::HID {
+class HIDCore;
+class EmulatedController;
+enum class ControllerTriggerType;
+} // namespace Core::HID
class ControllerDialog : public QWidget {
Q_OBJECT
public:
- explicit ControllerDialog(QWidget* parent = nullptr,
- InputCommon::InputSubsystem* input_subsystem_ = nullptr);
+ explicit ControllerDialog(Core::HID::HIDCore& hid_core_,
+ std::shared_ptr<InputCommon::InputSubsystem> input_subsystem_,
+ QWidget* parent = nullptr);
/// Returns a QAction that can be used to toggle visibility of this dialog.
QAction* toggleViewAction();
+
+ /// Reloads the widget to apply any changes in the configuration
void refreshConfiguration();
+ /// Disables events from the emulated controller
+ void UnloadController();
+
protected:
void showEvent(QShowEvent* ev) override;
void hideEvent(QHideEvent* ev) override;
private:
- void InputController(ControllerInput input);
+ /// Redirects input from the widget to the TAS driver
+ void ControllerUpdate(Core::HID::ControllerTriggerType type);
+
+ int callback_key;
+ bool is_controller_set{};
+ Core::HID::EmulatedController* controller;
+
QAction* toggle_view_action = nullptr;
- QFileSystemWatcher* watcher = nullptr;
PlayerControlPreview* widget;
- InputCommon::InputSubsystem* input_subsystem;
+ Core::HID::HIDCore& hid_core;
+ std::shared_ptr<InputCommon::InputSubsystem> input_subsystem;
};