| | |
| | |
| |
|
| | #pragma once |
| |
|
| | #include <memory> |
| | #include <string> |
| | #include <unordered_map> |
| | #include <vector> |
| |
|
| | namespace Common { |
| | class ParamPackage; |
| | } |
| |
|
| | namespace Common::Input { |
| | enum class ButtonNames; |
| | } |
| |
|
| | namespace Settings::NativeAnalog { |
| | enum Values : int; |
| | } |
| |
|
| | namespace Settings::NativeButton { |
| | enum Values : int; |
| | } |
| |
|
| | namespace Settings::NativeMotion { |
| | enum Values : int; |
| | } |
| |
|
| | namespace InputCommon { |
| | class Android; |
| | class Camera; |
| | class Keyboard; |
| | class Mouse; |
| | class TouchScreen; |
| | class VirtualAmiibo; |
| | class VirtualGamepad; |
| | struct MappingData; |
| | } |
| |
|
| | namespace InputCommon::TasInput { |
| | class Tas; |
| | } |
| |
|
| | namespace InputCommon { |
| | namespace Polling { |
| | |
| | enum class InputType { None, Button, Stick, Motion, Touch }; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | using AnalogMapping = std::unordered_map<Settings::NativeAnalog::Values, Common::ParamPackage>; |
| | using ButtonMapping = std::unordered_map<Settings::NativeButton::Values, Common::ParamPackage>; |
| | using MotionMapping = std::unordered_map<Settings::NativeMotion::Values, Common::ParamPackage>; |
| |
|
| | class InputSubsystem { |
| | public: |
| | explicit InputSubsystem(); |
| | ~InputSubsystem(); |
| |
|
| | InputSubsystem(const InputSubsystem&) = delete; |
| | InputSubsystem& operator=(const InputSubsystem&) = delete; |
| |
|
| | InputSubsystem(InputSubsystem&&) = delete; |
| | InputSubsystem& operator=(InputSubsystem&&) = delete; |
| |
|
| | |
| | void Initialize(); |
| |
|
| | |
| | void Shutdown(); |
| |
|
| | |
| | [[nodiscard]] Keyboard* GetKeyboard(); |
| |
|
| | |
| | [[nodiscard]] const Keyboard* GetKeyboard() const; |
| |
|
| | |
| | [[nodiscard]] Mouse* GetMouse(); |
| |
|
| | |
| | [[nodiscard]] const Mouse* GetMouse() const; |
| |
|
| | |
| | [[nodiscard]] TouchScreen* GetTouchScreen(); |
| |
|
| | |
| | [[nodiscard]] const TouchScreen* GetTouchScreen() const; |
| |
|
| | |
| | [[nodiscard]] TasInput::Tas* GetTas(); |
| |
|
| | |
| | [[nodiscard]] const TasInput::Tas* GetTas() const; |
| |
|
| | |
| | [[nodiscard]] Camera* GetCamera(); |
| |
|
| | |
| | [[nodiscard]] const Camera* GetCamera() const; |
| |
|
| | |
| | [[nodiscard]] Android* GetAndroid(); |
| |
|
| | |
| | [[nodiscard]] const Android* GetAndroid() const; |
| |
|
| | |
| | [[nodiscard]] VirtualAmiibo* GetVirtualAmiibo(); |
| |
|
| | |
| | [[nodiscard]] const VirtualAmiibo* GetVirtualAmiibo() const; |
| |
|
| | |
| | [[nodiscard]] VirtualGamepad* GetVirtualGamepad(); |
| |
|
| | |
| | [[nodiscard]] const VirtualGamepad* GetVirtualGamepad() const; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | [[nodiscard]] std::vector<Common::ParamPackage> GetInputDevices() const; |
| |
|
| | |
| | [[nodiscard]] AnalogMapping GetAnalogMappingForDevice(const Common::ParamPackage& device) const; |
| |
|
| | |
| | [[nodiscard]] ButtonMapping GetButtonMappingForDevice(const Common::ParamPackage& device) const; |
| |
|
| | |
| | [[nodiscard]] MotionMapping GetMotionMappingForDevice(const Common::ParamPackage& device) const; |
| |
|
| | |
| | [[nodiscard]] Common::Input::ButtonNames GetButtonName( |
| | const Common::ParamPackage& params) const; |
| |
|
| | |
| | [[nodiscard]] bool IsController(const Common::ParamPackage& params) const; |
| |
|
| | |
| | [[nodiscard]] bool IsStickInverted(const Common::ParamPackage& device) const; |
| |
|
| | |
| | void ReloadInputDevices(); |
| |
|
| | |
| | void BeginMapping(Polling::InputType type); |
| |
|
| | |
| | [[nodiscard]] Common::ParamPackage GetNextInput() const; |
| |
|
| | |
| | void StopMapping() const; |
| |
|
| | |
| | void PumpEvents() const; |
| |
|
| | private: |
| | struct Impl; |
| | std::unique_ptr<Impl> impl; |
| | }; |
| |
|
| | |
| | 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); |
| | } |
| |
|