summaryrefslogtreecommitdiffstats
path: root/src/core/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/frontend')
-rw-r--r--src/core/frontend/input.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/core/frontend/input.h b/src/core/frontend/input.h
index 0c5d2b3b0..7a047803e 100644
--- a/src/core/frontend/input.h
+++ b/src/core/frontend/input.h
@@ -27,6 +27,10 @@ struct AnalogProperties {
float range;
float threshold;
};
+template <typename StatusType>
+struct InputCallback {
+ std::function<void(StatusType)> on_change;
+};
/// An abstract class template for an input device (a button, an analog input, etc.).
template <typename StatusType>
@@ -50,6 +54,17 @@ public:
[[maybe_unused]] f32 freq_high) const {
return {};
}
+ void SetCallback(InputCallback<StatusType> callback_) {
+ callback = std::move(callback_);
+ }
+ void TriggerOnChange() {
+ if (callback.on_change) {
+ callback.on_change(GetStatus());
+ }
+ }
+
+private:
+ InputCallback<StatusType> callback;
};
/// An abstract class template for a factory that can create input devices.