summaryrefslogtreecommitdiffstats
path: root/src/input_common/main.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/input_common/main.h')
-rw-r--r--src/input_common/main.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/input_common/main.h b/src/input_common/main.h
index 5604f0fa8..77a0ce90b 100644
--- a/src/input_common/main.h
+++ b/src/input_common/main.h
@@ -4,7 +4,13 @@
#pragma once
+#include <memory>
#include <string>
+#include <vector>
+
+namespace Common {
+class ParamPackage;
+}
namespace InputCommon {
@@ -31,4 +37,30 @@ std::string GenerateKeyboardParam(int key_code);
std::string GenerateAnalogParamFromKeys(int key_up, int key_down, int key_left, int key_right,
int key_modifier, float modifier_scale);
+namespace Polling {
+
+enum class DeviceType { Button, Analog };
+
+/**
+ * A class that can be used to get inputs from an input device like controllers without having to
+ * poll the device's status yourself
+ */
+class DevicePoller {
+public:
+ virtual ~DevicePoller() = default;
+ /// Setup and start polling for inputs, should be called before GetNextInput
+ virtual void Start() = 0;
+ /// Stop polling
+ virtual void Stop() = 0;
+ /**
+ * Every call to this function returns the next input recorded since calling Start
+ * @return A ParamPackage of the recorded input, which can be used to create an InputDevice.
+ * If there has been no input, the package is empty
+ */
+ virtual Common::ParamPackage GetNextInput() = 0;
+};
+
+// Get all DevicePoller from all backends for a specific device type
+std::vector<std::unique_ptr<DevicePoller>> GetPollers(DeviceType type);
+} // namespace Polling
} // namespace InputCommon