diff options
Diffstat (limited to 'src/input_common/input_engine.h')
| -rw-r--r-- | src/input_common/input_engine.h | 64 |
1 files changed, 44 insertions, 20 deletions
diff --git a/src/input_common/input_engine.h b/src/input_common/input_engine.h index c6c027aef..cfbdb26bd 100644 --- a/src/input_common/input_engine.h +++ b/src/input_common/input_engine.h | |||
| @@ -1,6 +1,5 @@ | |||
| 1 | // Copyright 2021 yuzu Emulator Project | 1 | // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project |
| 2 | // Licensed under GPLv2 or any later version | 2 | // SPDX-License-Identifier: GPL-2.0-or-later |
| 3 | // Refer to the license.txt file included | ||
| 4 | 3 | ||
| 5 | #pragma once | 4 | #pragma once |
| 6 | 5 | ||
| @@ -34,24 +33,16 @@ struct BasicMotion { | |||
| 34 | u64 delta_timestamp{}; | 33 | u64 delta_timestamp{}; |
| 35 | }; | 34 | }; |
| 36 | 35 | ||
| 37 | // Stages of a battery charge | ||
| 38 | enum class BatteryLevel { | ||
| 39 | Empty, | ||
| 40 | Critical, | ||
| 41 | Low, | ||
| 42 | Medium, | ||
| 43 | Full, | ||
| 44 | Charging, | ||
| 45 | }; | ||
| 46 | |||
| 47 | // Types of input that are stored in the engine | 36 | // Types of input that are stored in the engine |
| 48 | enum class EngineInputType { | 37 | enum class EngineInputType { |
| 49 | None, | 38 | None, |
| 39 | Analog, | ||
| 40 | Battery, | ||
| 50 | Button, | 41 | Button, |
| 42 | Camera, | ||
| 51 | HatButton, | 43 | HatButton, |
| 52 | Analog, | ||
| 53 | Motion, | 44 | Motion, |
| 54 | Battery, | 45 | Nfc, |
| 55 | }; | 46 | }; |
| 56 | 47 | ||
| 57 | namespace std { | 48 | namespace std { |
| @@ -126,10 +117,29 @@ public: | |||
| 126 | // Sets polling mode to a controller | 117 | // Sets polling mode to a controller |
| 127 | virtual Common::Input::PollingError SetPollingMode( | 118 | virtual Common::Input::PollingError SetPollingMode( |
| 128 | [[maybe_unused]] const PadIdentifier& identifier, | 119 | [[maybe_unused]] const PadIdentifier& identifier, |
| 129 | [[maybe_unused]] const Common::Input::PollingMode vibration) { | 120 | [[maybe_unused]] const Common::Input::PollingMode polling_mode) { |
| 130 | return Common::Input::PollingError::NotSupported; | 121 | return Common::Input::PollingError::NotSupported; |
| 131 | } | 122 | } |
| 132 | 123 | ||
| 124 | // Sets camera format to a controller | ||
| 125 | virtual Common::Input::CameraError SetCameraFormat( | ||
| 126 | [[maybe_unused]] const PadIdentifier& identifier, | ||
| 127 | [[maybe_unused]] Common::Input::CameraFormat camera_format) { | ||
| 128 | return Common::Input::CameraError::NotSupported; | ||
| 129 | } | ||
| 130 | |||
| 131 | // Request nfc data from a controller | ||
| 132 | virtual Common::Input::NfcState SupportsNfc( | ||
| 133 | [[maybe_unused]] const PadIdentifier& identifier) const { | ||
| 134 | return Common::Input::NfcState::NotSupported; | ||
| 135 | } | ||
| 136 | |||
| 137 | // Writes data to an nfc tag | ||
| 138 | virtual Common::Input::NfcState WriteNfcData([[maybe_unused]] const PadIdentifier& identifier, | ||
| 139 | [[maybe_unused]] const std::vector<u8>& data) { | ||
| 140 | return Common::Input::NfcState::NotSupported; | ||
| 141 | } | ||
| 142 | |||
| 133 | // Returns the engine name | 143 | // Returns the engine name |
| 134 | [[nodiscard]] const std::string& GetEngineName() const; | 144 | [[nodiscard]] const std::string& GetEngineName() const; |
| 135 | 145 | ||
| @@ -167,6 +177,11 @@ public: | |||
| 167 | return 0; | 177 | return 0; |
| 168 | } | 178 | } |
| 169 | 179 | ||
| 180 | /// Returns true if axis of a stick aren't mapped in the correct direction | ||
| 181 | virtual bool IsStickInverted([[maybe_unused]] const Common::ParamPackage& params) { | ||
| 182 | return false; | ||
| 183 | } | ||
| 184 | |||
| 170 | void PreSetController(const PadIdentifier& identifier); | 185 | void PreSetController(const PadIdentifier& identifier); |
| 171 | void PreSetButton(const PadIdentifier& identifier, int button); | 186 | void PreSetButton(const PadIdentifier& identifier, int button); |
| 172 | void PreSetHatButton(const PadIdentifier& identifier, int button); | 187 | void PreSetHatButton(const PadIdentifier& identifier, int button); |
| @@ -178,8 +193,10 @@ public: | |||
| 178 | bool GetButton(const PadIdentifier& identifier, int button) const; | 193 | bool GetButton(const PadIdentifier& identifier, int button) const; |
| 179 | bool GetHatButton(const PadIdentifier& identifier, int button, u8 direction) const; | 194 | bool GetHatButton(const PadIdentifier& identifier, int button, u8 direction) const; |
| 180 | f32 GetAxis(const PadIdentifier& identifier, int axis) const; | 195 | f32 GetAxis(const PadIdentifier& identifier, int axis) const; |
| 181 | BatteryLevel GetBattery(const PadIdentifier& identifier) const; | 196 | Common::Input::BatteryLevel GetBattery(const PadIdentifier& identifier) const; |
| 182 | BasicMotion GetMotion(const PadIdentifier& identifier, int motion) const; | 197 | BasicMotion GetMotion(const PadIdentifier& identifier, int motion) const; |
| 198 | Common::Input::CameraStatus GetCamera(const PadIdentifier& identifier) const; | ||
| 199 | Common::Input::NfcStatus GetNfc(const PadIdentifier& identifier) const; | ||
| 183 | 200 | ||
| 184 | int SetCallback(InputIdentifier input_identifier); | 201 | int SetCallback(InputIdentifier input_identifier); |
| 185 | void SetMappingCallback(MappingCallback callback); | 202 | void SetMappingCallback(MappingCallback callback); |
| @@ -189,8 +206,10 @@ protected: | |||
| 189 | void SetButton(const PadIdentifier& identifier, int button, bool value); | 206 | void SetButton(const PadIdentifier& identifier, int button, bool value); |
| 190 | void SetHatButton(const PadIdentifier& identifier, int button, u8 value); | 207 | void SetHatButton(const PadIdentifier& identifier, int button, u8 value); |
| 191 | void SetAxis(const PadIdentifier& identifier, int axis, f32 value); | 208 | void SetAxis(const PadIdentifier& identifier, int axis, f32 value); |
| 192 | void SetBattery(const PadIdentifier& identifier, BatteryLevel value); | 209 | void SetBattery(const PadIdentifier& identifier, Common::Input::BatteryLevel value); |
| 193 | void SetMotion(const PadIdentifier& identifier, int motion, const BasicMotion& value); | 210 | void SetMotion(const PadIdentifier& identifier, int motion, const BasicMotion& value); |
| 211 | void SetCamera(const PadIdentifier& identifier, const Common::Input::CameraStatus& value); | ||
| 212 | void SetNfc(const PadIdentifier& identifier, const Common::Input::NfcStatus& value); | ||
| 194 | 213 | ||
| 195 | virtual std::string GetHatButtonName([[maybe_unused]] u8 direction_value) const { | 214 | virtual std::string GetHatButtonName([[maybe_unused]] u8 direction_value) const { |
| 196 | return "Unknown"; | 215 | return "Unknown"; |
| @@ -202,15 +221,20 @@ private: | |||
| 202 | std::unordered_map<int, u8> hat_buttons; | 221 | std::unordered_map<int, u8> hat_buttons; |
| 203 | std::unordered_map<int, float> axes; | 222 | std::unordered_map<int, float> axes; |
| 204 | std::unordered_map<int, BasicMotion> motions; | 223 | std::unordered_map<int, BasicMotion> motions; |
| 205 | BatteryLevel battery{}; | 224 | Common::Input::BatteryLevel battery{}; |
| 225 | Common::Input::CameraStatus camera{}; | ||
| 226 | Common::Input::NfcStatus nfc{}; | ||
| 206 | }; | 227 | }; |
| 207 | 228 | ||
| 208 | void TriggerOnButtonChange(const PadIdentifier& identifier, int button, bool value); | 229 | void TriggerOnButtonChange(const PadIdentifier& identifier, int button, bool value); |
| 209 | void TriggerOnHatButtonChange(const PadIdentifier& identifier, int button, u8 value); | 230 | void TriggerOnHatButtonChange(const PadIdentifier& identifier, int button, u8 value); |
| 210 | void TriggerOnAxisChange(const PadIdentifier& identifier, int axis, f32 value); | 231 | void TriggerOnAxisChange(const PadIdentifier& identifier, int axis, f32 value); |
| 211 | void TriggerOnBatteryChange(const PadIdentifier& identifier, BatteryLevel value); | 232 | void TriggerOnBatteryChange(const PadIdentifier& identifier, Common::Input::BatteryLevel value); |
| 212 | void TriggerOnMotionChange(const PadIdentifier& identifier, int motion, | 233 | void TriggerOnMotionChange(const PadIdentifier& identifier, int motion, |
| 213 | const BasicMotion& value); | 234 | const BasicMotion& value); |
| 235 | void TriggerOnCameraChange(const PadIdentifier& identifier, | ||
| 236 | const Common::Input::CameraStatus& value); | ||
| 237 | void TriggerOnNfcChange(const PadIdentifier& identifier, const Common::Input::NfcStatus& value); | ||
| 214 | 238 | ||
| 215 | bool IsInputIdentifierEqual(const InputIdentifier& input_identifier, | 239 | bool IsInputIdentifierEqual(const InputIdentifier& input_identifier, |
| 216 | const PadIdentifier& identifier, EngineInputType type, | 240 | const PadIdentifier& identifier, EngineInputType type, |