summaryrefslogtreecommitdiff
path: root/src/input_common/input_engine.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/input_common/input_engine.h')
-rw-r--r--src/input_common/input_engine.h64
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
38enum 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
48enum class EngineInputType { 37enum 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
57namespace std { 48namespace 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,