diff options
author | bunnei <bunneidev@gmail.com> | 2018-01-16 10:13:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-16 10:13:39 -0500 |
commit | d81879186674ed3732ff3539937a9ac0fb45b585 (patch) | |
tree | 4ced33464372737e8a98ee37432f1e389f8d325f /src/input_common/main.h | |
parent | 3b28d382d041f1caebc30957dffb1e4a4bb6452e (diff) | |
parent | eaff98dbb3da3c7524a504abb1cdd5daa3480dda (diff) |
Merge pull request #24 from nkatz565/nk-inputs
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 |