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-16 02:02:30 +0100 |
commit | eaff98dbb3da3c7524a504abb1cdd5daa3480dda (patch) | |
tree | 4e5d28ed590b01d001c065e6ac08f2df6daabf75 /src/input_common/main.h | |
parent | pctl: Clang format. (diff) | |
download | yuzu-eaff98dbb3da3c7524a504abb1cdd5daa3480dda.tar yuzu-eaff98dbb3da3c7524a504abb1cdd5daa3480dda.tar.gz yuzu-eaff98dbb3da3c7524a504abb1cdd5daa3480dda.tar.bz2 yuzu-eaff98dbb3da3c7524a504abb1cdd5daa3480dda.tar.lz yuzu-eaff98dbb3da3c7524a504abb1cdd5daa3480dda.tar.xz yuzu-eaff98dbb3da3c7524a504abb1cdd5daa3480dda.tar.zst yuzu-eaff98dbb3da3c7524a504abb1cdd5daa3480dda.zip |
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 |