diff options
| author | muemart <muemart@users.noreply.github.com> | 2017-12-06 05:26:29 +0100 |
|---|---|---|
| committer | noah katz <n-katz@hotmail.com> | 2018-01-15 20:02:30 -0500 |
| commit | eaff98dbb3da3c7524a504abb1cdd5daa3480dda (patch) | |
| tree | 4e5d28ed590b01d001c065e6ac08f2df6daabf75 /src/input_common/main.h | |
| parent | 1a3b3e91005725102bafbdac03836687d85dae73 (diff) | |
Adding meumart's Citra SDL Joystick support. Citra PR #3116
Diffstat (limited to 'src/input_common/main.h')
| -rw-r--r-- | src/input_common/main.h | 32 |
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 |
