SDL3pp
A slim C++ wrapper for SDL3
Loading...
Searching...
No Matches
SDL3pp_gamepad.h
1#ifndef SDL3PP_GAMEPAD_H_
2#define SDL3PP_GAMEPAD_H_
3
4#include <SDL3/SDL_gamepad.h>
5#include "SDL3pp_error.h"
6#include "SDL3pp_guid.h"
7#include "SDL3pp_iostream.h"
8#include "SDL3pp_joystick.h"
9#include "SDL3pp_power.h"
10#include "SDL3pp_properties.h"
11#include "SDL3pp_sensor.h"
12#include "SDL3pp_stdinc.h"
13
14namespace SDL {
15
70// Forward decl
71struct Gamepad;
72
74using GamepadRaw = SDL_Gamepad*;
75
76// Forward decl
77struct GamepadRef;
78
81{
83
86 : value(value)
87 {
88 }
89
91 constexpr GamepadParam(std::nullptr_t _ = nullptr)
92 : value(nullptr)
93 {
94 }
95
97 constexpr explicit operator bool() const { return !!value; }
98
100 constexpr auto operator<=>(const GamepadParam& other) const = default;
101
103 constexpr operator GamepadRaw() const { return value; }
104};
105
115using GamepadType = SDL_GamepadType;
116
118 SDL_GAMEPAD_TYPE_UNKNOWN;
119
121 SDL_GAMEPAD_TYPE_STANDARD;
122
124 SDL_GAMEPAD_TYPE_XBOX360;
125
127 SDL_GAMEPAD_TYPE_XBOXONE;
128
130 SDL_GAMEPAD_TYPE_PS3;
131
133 SDL_GAMEPAD_TYPE_PS4;
134
136 SDL_GAMEPAD_TYPE_PS5;
137
139 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_PRO;
140
142 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT;
143
145 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT;
146
148 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR;
149
151 SDL_GAMEPAD_TYPE_COUNT;
152
176using GamepadButton = SDL_GamepadButton;
177
179 SDL_GAMEPAD_BUTTON_INVALID;
180
182 SDL_GAMEPAD_BUTTON_SOUTH;
183
185 SDL_GAMEPAD_BUTTON_EAST;
186
188 SDL_GAMEPAD_BUTTON_WEST;
189
191 SDL_GAMEPAD_BUTTON_NORTH;
192
194 SDL_GAMEPAD_BUTTON_BACK;
195
197 SDL_GAMEPAD_BUTTON_GUIDE;
198
200 SDL_GAMEPAD_BUTTON_START;
201
203 SDL_GAMEPAD_BUTTON_LEFT_STICK;
204
206 SDL_GAMEPAD_BUTTON_RIGHT_STICK;
207
209 SDL_GAMEPAD_BUTTON_LEFT_SHOULDER;
210
212 SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER;
213
215 SDL_GAMEPAD_BUTTON_DPAD_UP;
216
218 SDL_GAMEPAD_BUTTON_DPAD_DOWN;
219
221 SDL_GAMEPAD_BUTTON_DPAD_LEFT;
222
224 SDL_GAMEPAD_BUTTON_DPAD_RIGHT;
225
231constexpr GamepadButton GAMEPAD_BUTTON_MISC1 = SDL_GAMEPAD_BUTTON_MISC1;
232
237 SDL_GAMEPAD_BUTTON_RIGHT_PADDLE1;
238
241 SDL_GAMEPAD_BUTTON_LEFT_PADDLE1;
242
247 SDL_GAMEPAD_BUTTON_RIGHT_PADDLE2;
248
253 SDL_GAMEPAD_BUTTON_LEFT_PADDLE2;
254
256 SDL_GAMEPAD_BUTTON_TOUCHPAD;
257
259 SDL_GAMEPAD_BUTTON_MISC2;
260
262 SDL_GAMEPAD_BUTTON_MISC3;
263
265 SDL_GAMEPAD_BUTTON_MISC4;
266
268 SDL_GAMEPAD_BUTTON_MISC5;
269
271 SDL_GAMEPAD_BUTTON_MISC6;
272
274 SDL_GAMEPAD_BUTTON_COUNT;
275
287using GamepadButtonLabel = SDL_GamepadButtonLabel;
288
290 SDL_GAMEPAD_BUTTON_LABEL_UNKNOWN;
291
293 SDL_GAMEPAD_BUTTON_LABEL_A;
294
296 SDL_GAMEPAD_BUTTON_LABEL_B;
297
299 SDL_GAMEPAD_BUTTON_LABEL_X;
300
302 SDL_GAMEPAD_BUTTON_LABEL_Y;
303
305 SDL_GAMEPAD_BUTTON_LABEL_CROSS;
306
308 SDL_GAMEPAD_BUTTON_LABEL_CIRCLE;
309
311 SDL_GAMEPAD_BUTTON_LABEL_SQUARE;
312
314 SDL_GAMEPAD_BUTTON_LABEL_TRIANGLE;
315
330using GamepadAxis = SDL_GamepadAxis;
331
333 SDL_GAMEPAD_AXIS_INVALID;
334
336 SDL_GAMEPAD_AXIS_LEFTX;
337
339 SDL_GAMEPAD_AXIS_LEFTY;
340
342 SDL_GAMEPAD_AXIS_RIGHTX;
343
345 SDL_GAMEPAD_AXIS_RIGHTY;
346
348 SDL_GAMEPAD_AXIS_LEFT_TRIGGER;
349
351 SDL_GAMEPAD_AXIS_RIGHT_TRIGGER;
352
354 SDL_GAMEPAD_AXIS_COUNT;
355
366using GamepadBindingType = SDL_GamepadBindingType;
367
369 SDL_GAMEPAD_BINDTYPE_NONE;
370
372 SDL_GAMEPAD_BINDTYPE_BUTTON;
373
375 SDL_GAMEPAD_BINDTYPE_AXIS;
376
378 SDL_GAMEPAD_BINDTYPE_HAT;
379
395using GamepadBinding = SDL_GamepadBinding;
396
405{
406 GamepadRaw m_resource = nullptr;
407
408public:
410 constexpr Gamepad() = default;
411
419 constexpr explicit Gamepad(const GamepadRaw resource)
420 : m_resource(resource)
421 {
422 }
423
425 constexpr Gamepad(const Gamepad& other) = delete;
426
428 constexpr Gamepad(Gamepad&& other)
429 : Gamepad(other.release())
430 {
431 }
432
433 constexpr Gamepad(const GamepadRef& other) = delete;
434
435 constexpr Gamepad(GamepadRef&& other) = delete;
436
449 Gamepad(JoystickID instance_id)
450 : m_resource(SDL_OpenGamepad(instance_id))
451 {
452 }
453
455 ~Gamepad() { SDL_CloseGamepad(m_resource); }
456
459 {
460 std::swap(m_resource, other.m_resource);
461 return *this;
462 }
463
465 constexpr GamepadRaw get() const { return m_resource; }
466
468 constexpr GamepadRaw release()
469 {
470 auto r = m_resource;
471 m_resource = nullptr;
472 return r;
473 }
474
476 constexpr auto operator<=>(const Gamepad& other) const = default;
477
479 constexpr bool operator==(std::nullptr_t _) const { return !m_resource; }
480
482 constexpr explicit operator bool() const { return !!m_resource; }
483
485 constexpr operator GamepadParam() const { return {m_resource}; }
486
496 void Close();
497
514 char* GetMapping();
515
541
552
564 const char* GetName();
565
577 const char* GetPath();
578
590
602
614 int GetPlayerIndex();
615
627 void SetPlayerIndex(int player_index);
628
641
654
667
678
689 const char* GetSerial();
690
702
712
730 PowerState GetPowerInfo(int* percent);
731
741 bool Connected();
742
761
773 SDL_GamepadBinding** GetBindings(int* count);
774
789 bool HasAxis(GamepadAxis axis);
790
813
827 bool HasButton(GamepadButton button);
828
840 bool GetButton(GamepadButton button);
841
853
863 int GetNumTouchpads();
864
877 int GetNumTouchpadFingers(int touchpad);
878
897 void GetTouchpadFinger(int touchpad,
898 int finger,
899 bool* down,
900 float* x,
901 float* y,
902 float* pressure);
903
916 bool HasSensor(SensorType type);
917
930 void SetSensorEnabled(SensorType type, bool enabled);
931
942 bool SensorEnabled(SensorType type);
943
952 float GetSensorDataRate(SensorType type);
953
967 void GetSensorData(SensorType type, float* data, int num_values);
968
987 void Rumble(Uint16 low_frequency_rumble,
988 Uint16 high_frequency_rumble,
989 Uint32 duration_ms);
990
1015 void RumbleTriggers(Uint16 left_rumble,
1016 Uint16 right_rumble,
1017 Uint32 duration_ms);
1018
1035 void SetLED(Uint8 red, Uint8 green, Uint8 blue);
1036
1046 void SendEffect(const void* data, int size);
1047
1060
1071 const char* GetAppleSFSymbolsNameForAxis(GamepadAxis axis);
1072};
1073
1076{
1085 : Gamepad(resource.value)
1086 {
1087 }
1088
1091 : Gamepad(other.get())
1092 {
1093 }
1094
1097};
1098
1142{
1143 return SDL_AddGamepadMapping(mapping);
1144}
1145
1184inline int AddGamepadMappingsFromIO(IOStreamParam src, bool closeio)
1185{
1186 return SDL_AddGamepadMappingsFromIO(src, closeio);
1187}
1188
1222{
1223 return SDL_AddGamepadMappingsFromFile(file);
1224}
1225
1235inline void ReloadGamepadMappings() { CheckError(SDL_ReloadGamepadMappings()); }
1236
1249inline char** GetGamepadMappings(int* count)
1250{
1251 return SDL_GetGamepadMappings(count);
1252}
1253
1268{
1269 return SDL_GetGamepadMappingForGUID(guid);
1270}
1271
1289inline char* GetGamepadMapping(GamepadParam gamepad)
1290{
1291 return SDL_GetGamepadMapping(gamepad);
1292}
1293
1295{
1296 return SDL::GetGamepadMapping(m_resource);
1297}
1298
1314inline void SetGamepadMapping(JoystickID instance_id, StringParam mapping)
1315{
1316 CheckError(SDL_SetGamepadMapping(instance_id, mapping));
1317}
1318
1328inline bool HasGamepad() { return SDL_HasGamepad(); }
1329
1343{
1344 int count;
1345 auto r = reinterpret_cast<JoystickID*>(SDL_GetGamepads(&count));
1346 return OwnArray<JoystickID>(r, count);
1347}
1348
1361inline bool IsGamepad(JoystickID instance_id)
1362{
1363 return SDL_IsGamepad(instance_id);
1364}
1365
1380inline const char* GetGamepadNameForID(JoystickID instance_id)
1381{
1382 return SDL_GetGamepadNameForID(instance_id);
1383}
1384
1399inline const char* GetGamepadPathForID(JoystickID instance_id)
1400{
1401 return SDL_GetGamepadPathForID(instance_id);
1402}
1403
1418{
1419 return SDL_GetGamepadPlayerIndexForID(instance_id);
1420}
1421
1437{
1438 return SDL_GetGamepadGUIDForID(instance_id);
1439}
1440
1457{
1458 return SDL_GetGamepadVendorForID(instance_id);
1459}
1460
1477{
1478 return SDL_GetGamepadProductForID(instance_id);
1479}
1480
1497{
1498 return SDL_GetGamepadProductVersionForID(instance_id);
1499}
1500
1516{
1517 return SDL_GetGamepadTypeForID(instance_id);
1518}
1519
1535{
1536 return SDL_GetRealGamepadTypeForID(instance_id);
1537}
1538
1553inline char* GetGamepadMappingForID(JoystickID instance_id)
1554{
1555 return SDL_GetGamepadMappingForID(instance_id);
1556}
1557
1570inline Gamepad OpenGamepad(JoystickID instance_id)
1571{
1572 return Gamepad(instance_id);
1573}
1574
1586{
1587 return {CheckError(SDL_GetGamepadFromID(instance_id))};
1588}
1589
1602{
1603 return {SDL_GetGamepadFromPlayerIndex(player_index)};
1604}
1605
1632{
1633 return {CheckError(SDL_GetGamepadProperties(gamepad))};
1634}
1635
1637{
1638 return SDL::GetGamepadProperties(m_resource);
1639}
1640
1641namespace prop::GamepadCap {
1642
1643constexpr auto MONO_LED_BOOLEAN = SDL_PROP_GAMEPAD_CAP_MONO_LED_BOOLEAN;
1644
1645constexpr auto RGB_LED_BOOLEAN = SDL_PROP_GAMEPAD_CAP_RGB_LED_BOOLEAN;
1646
1647constexpr auto PLAYER_LED_BOOLEAN = SDL_PROP_GAMEPAD_CAP_PLAYER_LED_BOOLEAN;
1648
1649constexpr auto RUMBLE_BOOLEAN = SDL_PROP_GAMEPAD_CAP_RUMBLE_BOOLEAN;
1650
1651constexpr auto TRIGGER_RUMBLE_BOOLEAN =
1652 SDL_PROP_GAMEPAD_CAP_TRIGGER_RUMBLE_BOOLEAN;
1653
1654} // namespace prop::GamepadCap
1655
1667{
1668 return CheckError(SDL_GetGamepadID(gamepad));
1669}
1670
1671inline JoystickID Gamepad::GetID() { return SDL::GetGamepadID(m_resource); }
1672
1685inline const char* GetGamepadName(GamepadParam gamepad)
1686{
1687 return SDL_GetGamepadName(gamepad);
1688}
1689
1690inline const char* Gamepad::GetName()
1691{
1692 return SDL::GetGamepadName(m_resource);
1693}
1694
1707inline const char* GetGamepadPath(GamepadParam gamepad)
1708{
1709 return SDL_GetGamepadPath(gamepad);
1710}
1711
1712inline const char* Gamepad::GetPath()
1713{
1714 return SDL::GetGamepadPath(m_resource);
1715}
1716
1729{
1730 return SDL_GetGamepadType(gamepad);
1731}
1732
1734{
1735 return SDL::GetGamepadType(m_resource);
1736}
1737
1750{
1751 return SDL_GetRealGamepadType(gamepad);
1752}
1753
1755{
1756 return SDL::GetRealGamepadType(m_resource);
1757}
1758
1772{
1773 return SDL_GetGamepadPlayerIndex(gamepad);
1774}
1775
1777{
1778 return SDL::GetGamepadPlayerIndex(m_resource);
1779}
1780
1793inline void SetGamepadPlayerIndex(GamepadParam gamepad, int player_index)
1794{
1795 CheckError(SDL_SetGamepadPlayerIndex(gamepad, player_index));
1796}
1797
1798inline void Gamepad::SetPlayerIndex(int player_index)
1799{
1800 SDL::SetGamepadPlayerIndex(m_resource, player_index);
1801}
1802
1816{
1817 return SDL_GetGamepadVendor(gamepad);
1818}
1819
1820inline Uint16 Gamepad::GetVendor() { return SDL::GetGamepadVendor(m_resource); }
1821
1835{
1836 return SDL_GetGamepadProduct(gamepad);
1837}
1838
1840{
1841 return SDL::GetGamepadProduct(m_resource);
1842}
1843
1857{
1858 return SDL_GetGamepadProductVersion(gamepad);
1859}
1860
1862{
1863 return SDL::GetGamepadProductVersion(m_resource);
1864}
1865
1877{
1878 return SDL_GetGamepadFirmwareVersion(gamepad);
1879}
1880
1882{
1883 return SDL::GetGamepadFirmwareVersion(m_resource);
1884}
1885
1896inline const char* GetGamepadSerial(GamepadParam gamepad)
1897{
1898 return SDL_GetGamepadSerial(gamepad);
1899}
1900
1901inline const char* Gamepad::GetSerial()
1902{
1903 return SDL::GetGamepadSerial(m_resource);
1904}
1905
1918{
1919 return SDL_GetGamepadSteamHandle(gamepad);
1920}
1921
1923{
1924 return SDL::GetGamepadSteamHandle(m_resource);
1925}
1926
1937{
1938 return CheckError(SDL_GetGamepadConnectionState(gamepad));
1939}
1940
1942{
1943 return SDL::GetGamepadConnectionState(m_resource);
1944}
1945
1964inline PowerState GetGamepadPowerInfo(GamepadParam gamepad, int* percent)
1965{
1966 return SDL_GetGamepadPowerInfo(gamepad, percent);
1967}
1968
1970{
1971 return SDL::GetGamepadPowerInfo(m_resource, percent);
1972}
1973
1984inline bool GamepadConnected(GamepadParam gamepad)
1985{
1986 return SDL_GamepadConnected(gamepad);
1987}
1988
1989inline bool Gamepad::Connected() { return SDL::GamepadConnected(m_resource); }
1990
2010{
2011 return {SDL_GetGamepadJoystick(gamepad)};
2012}
2013
2015{
2016 return SDL::GetGamepadJoystick(m_resource);
2017}
2018
2032inline void SetGamepadEventsEnabled(bool enabled)
2033{
2034 SDL_SetGamepadEventsEnabled(enabled);
2035}
2036
2049inline bool GamepadEventsEnabled() { return SDL_GamepadEventsEnabled(); }
2050
2063inline SDL_GamepadBinding** GetGamepadBindings(GamepadParam gamepad, int* count)
2064{
2065 return SDL_GetGamepadBindings(gamepad, count);
2066}
2067
2068inline SDL_GamepadBinding** Gamepad::GetBindings(int* count)
2069{
2070 return SDL::GetGamepadBindings(m_resource, count);
2071}
2072
2082inline void UpdateGamepads() { SDL_UpdateGamepads(); }
2083
2101{
2102 return SDL_GetGamepadTypeFromString(str);
2103}
2104
2117inline const char* GetGamepadStringForType(GamepadType type)
2118{
2119 return SDL_GetGamepadStringForType(type);
2120}
2121
2143{
2144 return SDL_GetGamepadAxisFromString(str);
2145}
2146
2159inline const char* GetGamepadStringForAxis(GamepadAxis axis)
2160{
2161 return SDL_GetGamepadStringForAxis(axis);
2162}
2163
2179inline bool GamepadHasAxis(GamepadParam gamepad, GamepadAxis axis)
2180{
2181 return SDL_GamepadHasAxis(gamepad, axis);
2182}
2183
2185{
2186 return SDL::GamepadHasAxis(m_resource, axis);
2187}
2188
2212{
2213 return CheckError(SDL_GetGamepadAxis(gamepad, axis));
2214}
2215
2217{
2218 return SDL::GetGamepadAxis(m_resource, axis);
2219}
2220
2238{
2239 return SDL_GetGamepadButtonFromString(str);
2240}
2241
2255{
2256 return SDL_GetGamepadStringForButton(button);
2257}
2258
2273inline bool GamepadHasButton(GamepadParam gamepad, GamepadButton button)
2274{
2275 return SDL_GamepadHasButton(gamepad, button);
2276}
2277
2279{
2280 return SDL::GamepadHasButton(m_resource, button);
2281}
2282
2295inline bool GetGamepadButton(GamepadParam gamepad, GamepadButton button)
2296{
2297 return SDL_GetGamepadButton(gamepad, button);
2298}
2299
2301{
2302 return SDL::GetGamepadButton(m_resource, button);
2303}
2304
2317 GamepadButton button)
2318{
2319 return SDL_GetGamepadButtonLabelForType(type, button);
2320}
2321
2334 GamepadButton button)
2335{
2336 return SDL_GetGamepadButtonLabel(gamepad, button);
2337}
2338
2340{
2341 return SDL::GetGamepadButtonLabel(m_resource, button);
2342}
2343
2355{
2356 return SDL_GetNumGamepadTouchpads(gamepad);
2357}
2358
2360{
2361 return SDL::GetNumGamepadTouchpads(m_resource);
2362}
2363
2377inline int GetNumGamepadTouchpadFingers(GamepadParam gamepad, int touchpad)
2378{
2379 return SDL_GetNumGamepadTouchpadFingers(gamepad, touchpad);
2380}
2381
2382inline int Gamepad::GetNumTouchpadFingers(int touchpad)
2383{
2384 return SDL::GetNumGamepadTouchpadFingers(m_resource, touchpad);
2385}
2386
2407 int touchpad,
2408 int finger,
2409 bool* down,
2410 float* x,
2411 float* y,
2412 float* pressure)
2413{
2414 CheckError(SDL_GetGamepadTouchpadFinger(
2415 gamepad, touchpad, finger, down, x, y, pressure));
2416}
2417
2418inline void Gamepad::GetTouchpadFinger(int touchpad,
2419 int finger,
2420 bool* down,
2421 float* x,
2422 float* y,
2423 float* pressure)
2424{
2426 m_resource, touchpad, finger, down, x, y, pressure);
2427}
2428
2442inline bool GamepadHasSensor(GamepadParam gamepad, SensorType type)
2443{
2444 return SDL_GamepadHasSensor(gamepad, type);
2445}
2446
2448{
2449 return SDL::GamepadHasSensor(m_resource, type);
2450}
2451
2466 SensorType type,
2467 bool enabled)
2468{
2469 CheckError(SDL_SetGamepadSensorEnabled(gamepad, type, enabled));
2470}
2471
2472inline void Gamepad::SetSensorEnabled(SensorType type, bool enabled)
2473{
2474 SDL::SetGamepadSensorEnabled(m_resource, type, enabled);
2475}
2476
2489{
2490 return SDL_GamepadSensorEnabled(gamepad, type);
2491}
2492
2494{
2495 return SDL::GamepadSensorEnabled(m_resource, type);
2496}
2497
2508{
2509 return SDL_GetGamepadSensorDataRate(gamepad, type);
2510}
2511
2513{
2514 return SDL::GetGamepadSensorDataRate(m_resource, type);
2515}
2516
2532 SensorType type,
2533 float* data,
2534 int num_values)
2535{
2536 CheckError(SDL_GetGamepadSensorData(gamepad, type, data, num_values));
2537}
2538
2539inline void Gamepad::GetSensorData(SensorType type, float* data, int num_values)
2540{
2541 SDL::GetGamepadSensorData(m_resource, type, data, num_values);
2542}
2543
2563inline void RumbleGamepad(GamepadParam gamepad,
2564 Uint16 low_frequency_rumble,
2565 Uint16 high_frequency_rumble,
2566 Uint32 duration_ms)
2567{
2568 CheckError(SDL_RumbleGamepad(
2569 gamepad, low_frequency_rumble, high_frequency_rumble, duration_ms));
2570}
2571
2572inline void Gamepad::Rumble(Uint16 low_frequency_rumble,
2573 Uint16 high_frequency_rumble,
2574 Uint32 duration_ms)
2575{
2577 m_resource, low_frequency_rumble, high_frequency_rumble, duration_ms);
2578}
2579
2606 Uint16 left_rumble,
2607 Uint16 right_rumble,
2608 Uint32 duration_ms)
2609{
2610 CheckError(
2611 SDL_RumbleGamepadTriggers(gamepad, left_rumble, right_rumble, duration_ms));
2612}
2613
2614inline void Gamepad::RumbleTriggers(Uint16 left_rumble,
2615 Uint16 right_rumble,
2616 Uint32 duration_ms)
2617{
2619 m_resource, left_rumble, right_rumble, duration_ms);
2620}
2621
2639inline void SetGamepadLED(GamepadParam gamepad,
2640 Uint8 red,
2641 Uint8 green,
2642 Uint8 blue)
2643{
2644 CheckError(SDL_SetGamepadLED(gamepad, red, green, blue));
2645}
2646
2647inline void Gamepad::SetLED(Uint8 red, Uint8 green, Uint8 blue)
2648{
2649 SDL::SetGamepadLED(m_resource, red, green, blue);
2650}
2651
2662inline void SendGamepadEffect(GamepadParam gamepad, const void* data, int size)
2663{
2664 CheckError(SDL_SendGamepadEffect(gamepad, data, size));
2665}
2666
2667inline void Gamepad::SendEffect(const void* data, int size)
2668{
2669 SDL::SendGamepadEffect(m_resource, data, size);
2670}
2671
2682inline void CloseGamepad(GamepadRaw gamepad) { SDL_CloseGamepad(gamepad); }
2683
2685
2699 GamepadButton button)
2700{
2701 return SDL_GetGamepadAppleSFSymbolsNameForButton(gamepad, button);
2702}
2703
2705{
2706 return SDL::GetGamepadAppleSFSymbolsNameForButton(m_resource, button);
2707}
2708
2721 GamepadAxis axis)
2722{
2723 return SDL_GetGamepadAppleSFSymbolsNameForAxis(gamepad, axis);
2724}
2725
2727{
2728 return SDL::GetGamepadAppleSFSymbolsNameForAxis(m_resource, axis);
2729}
2730
2732
2733} // namespace SDL
2734
2735#endif /* SDL3PP_GAMEPAD_H_ */
The structure used to identify an SDL gamepad.
Definition: SDL3pp_gamepad.h:405
Gamepad(JoystickID instance_id)
Open a gamepad for use.
Definition: SDL3pp_gamepad.h:449
constexpr Gamepad()=default
Default ctor.
constexpr GamepadRaw release()
Retrieves underlying GamepadRaw and clear this.
Definition: SDL3pp_gamepad.h:468
constexpr GamepadRaw get() const
Retrieves underlying GamepadRaw.
Definition: SDL3pp_gamepad.h:465
constexpr bool operator==(std::nullptr_t _) const
Comparison.
Definition: SDL3pp_gamepad.h:479
constexpr Gamepad(Gamepad &&other)
Move constructor.
Definition: SDL3pp_gamepad.h:428
~Gamepad()
Destructor.
Definition: SDL3pp_gamepad.h:455
Gamepad & operator=(Gamepad other)
Assignment operator.
Definition: SDL3pp_gamepad.h:458
constexpr Gamepad(const Gamepad &other)=delete
Copy constructor.
constexpr Gamepad(const GamepadRaw resource)
Constructs from GamepadParam.
Definition: SDL3pp_gamepad.h:419
constexpr auto operator<=>(const Gamepad &other) const =default
Comparison.
This is a unique ID for a joystick for the time it is connected to the system, and is never reused fo...
Definition: SDL3pp_joystick.h:146
Base class for SDL memory allocated array wrap.
Definition: SDL3pp_ownPtr.h:44
Helpers to use C++ strings parameters.
Definition: SDL3pp_strings.h:43
constexpr void CheckError(bool result)
Check and throw if returned value from SDL is an error.
Definition: SDL3pp_error.h:198
void GetSensorData(SensorType type, float *data, int num_values)
Get the current state of a gamepad sensor.
Definition: SDL3pp_gamepad.h:2539
const char * GetAppleSFSymbolsNameForAxis(GamepadAxis axis)
Return the sfSymbolsName for a given axis on a gamepad on Apple platforms.
Definition: SDL3pp_gamepad.h:2726
void SetSensorEnabled(SensorType type, bool enabled)
Set whether data reporting for a gamepad sensor is enabled.
Definition: SDL3pp_gamepad.h:2472
constexpr GamepadButton GAMEPAD_BUTTON_MISC6
Additional button.
Definition: SDL3pp_gamepad.h:270
SDL_GamepadType GamepadType
Standard gamepad types.
Definition: SDL3pp_gamepad.h:115
constexpr GamepadBindingType GAMEPAD_BINDTYPE_AXIS
GAMEPAD_BINDTYPE_AXIS.
Definition: SDL3pp_gamepad.h:374
int AddGamepadMappingsFromFile(StringParam file)
Load a set of gamepad mappings from a file.
Definition: SDL3pp_gamepad.h:1221
bool HasButton(GamepadButton button)
Query whether a gamepad has a given button.
Definition: SDL3pp_gamepad.h:2278
constexpr GamepadType GAMEPAD_TYPE_NINTENDO_SWITCH_PRO
GAMEPAD_TYPE_NINTENDO_SWITCH_PRO.
Definition: SDL3pp_gamepad.h:138
constexpr GamepadType GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT
GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT.
Definition: SDL3pp_gamepad.h:141
void Rumble(Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms)
Start a rumble effect on a gamepad.
Definition: SDL3pp_gamepad.h:2572
char * GetGamepadMapping(GamepadParam gamepad)
Get the current mapping of a gamepad.
Definition: SDL3pp_gamepad.h:1289
int GetNumGamepadTouchpads(GamepadParam gamepad)
Get the number of touchpads on a gamepad.
Definition: SDL3pp_gamepad.h:2354
Uint16 GetProductVersion()
Get the product version of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1861
GamepadType GetGamepadType(GamepadParam gamepad)
Get the type of an opened gamepad.
Definition: SDL3pp_gamepad.h:1728
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_SQUARE
GAMEPAD_BUTTON_LABEL_SQUARE.
Definition: SDL3pp_gamepad.h:310
constexpr GamepadAxis GAMEPAD_AXIS_RIGHTX
GAMEPAD_AXIS_RIGHTX.
Definition: SDL3pp_gamepad.h:341
JoystickID GetGamepadID(GamepadParam gamepad)
Get the instance ID of an opened gamepad.
Definition: SDL3pp_gamepad.h:1666
const char * GetGamepadName(GamepadParam gamepad)
Get the implementation-dependent name for an opened gamepad.
Definition: SDL3pp_gamepad.h:1685
constexpr GamepadButton GAMEPAD_BUTTON_MISC4
Additional button.
Definition: SDL3pp_gamepad.h:264
GamepadRef GetGamepadFromPlayerIndex(int player_index)
Get the Gamepad associated with a player index.
Definition: SDL3pp_gamepad.h:1601
constexpr GamepadAxis GAMEPAD_AXIS_LEFTY
GAMEPAD_AXIS_LEFTY.
Definition: SDL3pp_gamepad.h:338
GamepadAxis GetGamepadAxisFromString(StringParam str)
Convert a string into GamepadAxis enum.
Definition: SDL3pp_gamepad.h:2142
constexpr GamepadButton GAMEPAD_BUTTON_LEFT_PADDLE2
Lower or secondary paddle, under your left hand (e.g.
Definition: SDL3pp_gamepad.h:252
const char * GetAppleSFSymbolsNameForButton(GamepadButton button)
Return the sfSymbolsName for a given button on a gamepad on Apple platforms.
Definition: SDL3pp_gamepad.h:2704
GamepadButton GetGamepadButtonFromString(StringParam str)
Convert a string into an GamepadButton enum.
Definition: SDL3pp_gamepad.h:2237
GamepadRef GetGamepadFromID(JoystickID instance_id)
Get the Gamepad associated with a joystick instance ID, if it has been opened.
Definition: SDL3pp_gamepad.h:1585
constexpr GamepadBindingType GAMEPAD_BINDTYPE_BUTTON
GAMEPAD_BINDTYPE_BUTTON.
Definition: SDL3pp_gamepad.h:371
Uint16 GetVendor()
Get the USB vendor ID of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1820
GamepadButtonLabel GetGamepadButtonLabel(GamepadParam gamepad, GamepadButton button)
Get the label of a button on a gamepad.
Definition: SDL3pp_gamepad.h:2333
GamepadType GetType()
Get the type of an opened gamepad.
Definition: SDL3pp_gamepad.h:1733
constexpr GamepadButton GAMEPAD_BUTTON_DPAD_UP
GAMEPAD_BUTTON_DPAD_UP.
Definition: SDL3pp_gamepad.h:214
void SetGamepadLED(GamepadParam gamepad, Uint8 red, Uint8 green, Uint8 blue)
Update a gamepad's LED color.
Definition: SDL3pp_gamepad.h:2639
bool HasAxis(GamepadAxis axis)
Query whether a gamepad has a given axis.
Definition: SDL3pp_gamepad.h:2184
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_B
GAMEPAD_BUTTON_LABEL_B.
Definition: SDL3pp_gamepad.h:295
bool GamepadEventsEnabled()
Query the state of gamepad event processing.
Definition: SDL3pp_gamepad.h:2049
GamepadType GetRealGamepadType(GamepadParam gamepad)
Get the type of an opened gamepad, ignoring any mapping override.
Definition: SDL3pp_gamepad.h:1749
constexpr GamepadButton GAMEPAD_BUTTON_LEFT_SHOULDER
GAMEPAD_BUTTON_LEFT_SHOULDER.
Definition: SDL3pp_gamepad.h:208
constexpr GamepadType GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR
GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR.
Definition: SDL3pp_gamepad.h:147
GamepadType GetRealGamepadTypeForID(JoystickID instance_id)
Get the type of a gamepad, ignoring any mapping override.
Definition: SDL3pp_gamepad.h:1534
GamepadButtonLabel GetButtonLabel(GamepadButton button)
Get the label of a button on a gamepad.
Definition: SDL3pp_gamepad.h:2339
float GetGamepadSensorDataRate(GamepadParam gamepad, SensorType type)
Get the data rate (number of events per second) of a gamepad sensor.
Definition: SDL3pp_gamepad.h:2507
Uint16 GetGamepadVendorForID(JoystickID instance_id)
Get the USB vendor ID of a gamepad, if available.
Definition: SDL3pp_gamepad.h:1456
bool Connected()
Check if a gamepad has been opened and is currently connected.
Definition: SDL3pp_gamepad.h:1989
PowerState GetGamepadPowerInfo(GamepadParam gamepad, int *percent)
Get the battery state of a gamepad.
Definition: SDL3pp_gamepad.h:1964
Uint16 GetGamepadProductForID(JoystickID instance_id)
Get the USB product ID of a gamepad, if available.
Definition: SDL3pp_gamepad.h:1476
PowerState GetPowerInfo(int *percent)
Get the battery state of a gamepad.
Definition: SDL3pp_gamepad.h:1969
int GetNumTouchpads()
Get the number of touchpads on a gamepad.
Definition: SDL3pp_gamepad.h:2359
void RumbleGamepadTriggers(GamepadParam gamepad, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms)
Start a rumble effect in the gamepad's triggers.
Definition: SDL3pp_gamepad.h:2605
int GetNumTouchpadFingers(int touchpad)
Get the number of supported simultaneous fingers on a touchpad on a game gamepad.
Definition: SDL3pp_gamepad.h:2382
const char * GetGamepadAppleSFSymbolsNameForAxis(GamepadParam gamepad, GamepadAxis axis)
Return the sfSymbolsName for a given axis on a gamepad on Apple platforms.
Definition: SDL3pp_gamepad.h:2720
const char * GetSerial()
Get the serial number of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1901
PropertiesRef GetProperties()
Get the properties associated with an opened gamepad.
Definition: SDL3pp_gamepad.h:1636
const char * GetName()
Get the implementation-dependent name for an opened gamepad.
Definition: SDL3pp_gamepad.h:1690
const char * GetGamepadNameForID(JoystickID instance_id)
Get the implementation dependent name of a gamepad.
Definition: SDL3pp_gamepad.h:1380
constexpr GamepadButton GAMEPAD_BUTTON_DPAD_LEFT
GAMEPAD_BUTTON_DPAD_LEFT.
Definition: SDL3pp_gamepad.h:220
GUID GetGamepadGUIDForID(JoystickID instance_id)
Get the implementation-dependent GUID of a gamepad.
Definition: SDL3pp_gamepad.h:1436
Uint16 GetGamepadVendor(GamepadParam gamepad)
Get the USB vendor ID of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1815
constexpr GamepadAxis GAMEPAD_AXIS_RIGHT_TRIGGER
GAMEPAD_AXIS_RIGHT_TRIGGER.
Definition: SDL3pp_gamepad.h:350
void GetTouchpadFinger(int touchpad, int finger, bool *down, float *x, float *y, float *pressure)
Get the current state of a finger on a touchpad on a gamepad.
Definition: SDL3pp_gamepad.h:2418
void SetPlayerIndex(int player_index)
Set the player index of an opened gamepad.
Definition: SDL3pp_gamepad.h:1798
bool GamepadHasSensor(GamepadParam gamepad, SensorType type)
Return whether a gamepad has a particular sensor.
Definition: SDL3pp_gamepad.h:2442
constexpr GamepadBindingType GAMEPAD_BINDTYPE_HAT
GAMEPAD_BINDTYPE_HAT.
Definition: SDL3pp_gamepad.h:377
constexpr GamepadType GAMEPAD_TYPE_COUNT
GAMEPAD_TYPE_COUNT.
Definition: SDL3pp_gamepad.h:150
constexpr GamepadType GAMEPAD_TYPE_XBOXONE
GAMEPAD_TYPE_XBOXONE.
Definition: SDL3pp_gamepad.h:126
Uint16 GetGamepadProductVersion(GamepadParam gamepad)
Get the product version of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1856
void RumbleTriggers(Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms)
Start a rumble effect in the gamepad's triggers.
Definition: SDL3pp_gamepad.h:2614
JoystickID GetID()
Get the instance ID of an opened gamepad.
Definition: SDL3pp_gamepad.h:1671
constexpr GamepadAxis GAMEPAD_AXIS_LEFTX
GAMEPAD_AXIS_LEFTX.
Definition: SDL3pp_gamepad.h:335
constexpr GamepadButton GAMEPAD_BUTTON_EAST
Right face button (e.g. Xbox B button)
Definition: SDL3pp_gamepad.h:184
constexpr GamepadType GAMEPAD_TYPE_STANDARD
GAMEPAD_TYPE_STANDARD.
Definition: SDL3pp_gamepad.h:120
void SendEffect(const void *data, int size)
Send a gamepad specific effect packet.
Definition: SDL3pp_gamepad.h:2667
constexpr GamepadType GAMEPAD_TYPE_PS3
GAMEPAD_TYPE_PS3.
Definition: SDL3pp_gamepad.h:129
SDL_GamepadBinding ** GetGamepadBindings(GamepadParam gamepad, int *count)
Get the SDL joystick layer bindings for a gamepad.
Definition: SDL3pp_gamepad.h:2063
Uint16 GetGamepadFirmwareVersion(GamepadParam gamepad)
Get the firmware version of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1876
constexpr GamepadType GAMEPAD_TYPE_PS4
GAMEPAD_TYPE_PS4.
Definition: SDL3pp_gamepad.h:132
constexpr GamepadButton GAMEPAD_BUTTON_RIGHT_PADDLE2
Lower or secondary paddle, under your right hand (e.g.
Definition: SDL3pp_gamepad.h:246
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_CROSS
GAMEPAD_BUTTON_LABEL_CROSS.
Definition: SDL3pp_gamepad.h:304
void SetGamepadSensorEnabled(GamepadParam gamepad, SensorType type, bool enabled)
Set whether data reporting for a gamepad sensor is enabled.
Definition: SDL3pp_gamepad.h:2465
constexpr GamepadButton GAMEPAD_BUTTON_SOUTH
Bottom face button (e.g. Xbox A button)
Definition: SDL3pp_gamepad.h:181
constexpr GamepadAxis GAMEPAD_AXIS_LEFT_TRIGGER
GAMEPAD_AXIS_LEFT_TRIGGER.
Definition: SDL3pp_gamepad.h:347
char * GetMapping()
Get the current mapping of a gamepad.
Definition: SDL3pp_gamepad.h:1294
Uint16 GetGamepadProductVersionForID(JoystickID instance_id)
Get the product version of a gamepad, if available.
Definition: SDL3pp_gamepad.h:1496
const char * GetGamepadSerial(GamepadParam gamepad)
Get the serial number of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1896
int GetGamepadPlayerIndexForID(JoystickID instance_id)
Get the player index of a gamepad.
Definition: SDL3pp_gamepad.h:1417
JoystickConnectionState GetConnectionState()
Get the connection state of a gamepad.
Definition: SDL3pp_gamepad.h:1941
const char * GetGamepadPathForID(JoystickID instance_id)
Get the implementation dependent path of a gamepad.
Definition: SDL3pp_gamepad.h:1399
void Close()
Close a gamepad previously opened with Gamepad.Gamepad().
Definition: SDL3pp_gamepad.h:2684
SDL_GamepadAxis GamepadAxis
The list of axes available on a gamepad.
Definition: SDL3pp_gamepad.h:330
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_UNKNOWN
GAMEPAD_BUTTON_LABEL_UNKNOWN.
Definition: SDL3pp_gamepad.h:289
SDL_Gamepad * GamepadRaw
Alias to raw representation for Gamepad.
Definition: SDL3pp_gamepad.h:74
void SetLED(Uint8 red, Uint8 green, Uint8 blue)
Update a gamepad's LED color.
Definition: SDL3pp_gamepad.h:2647
const char * GetGamepadStringForAxis(GamepadAxis axis)
Convert from an GamepadAxis enum to a string.
Definition: SDL3pp_gamepad.h:2159
GamepadType GetRealType()
Get the type of an opened gamepad, ignoring any mapping override.
Definition: SDL3pp_gamepad.h:1754
Sint16 GetAxis(GamepadAxis axis)
Get the current state of an axis control on a gamepad.
Definition: SDL3pp_gamepad.h:2216
bool HasSensor(SensorType type)
Return whether a gamepad has a particular sensor.
Definition: SDL3pp_gamepad.h:2447
constexpr GamepadButton GAMEPAD_BUTTON_BACK
GAMEPAD_BUTTON_BACK.
Definition: SDL3pp_gamepad.h:193
Uint16 GetProduct()
Get the USB product ID of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1839
bool GetGamepadButton(GamepadParam gamepad, GamepadButton button)
Get the current state of a button on a gamepad.
Definition: SDL3pp_gamepad.h:2295
constexpr GamepadButton GAMEPAD_BUTTON_DPAD_RIGHT
GAMEPAD_BUTTON_DPAD_RIGHT.
Definition: SDL3pp_gamepad.h:223
Uint16 GetFirmwareVersion()
Get the firmware version of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1881
Uint16 GetGamepadProduct(GamepadParam gamepad)
Get the USB product ID of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1834
Uint64 GetSteamHandle()
Get the Steam Input handle of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1922
SDL_GamepadBinding GamepadBinding
A mapping between one joystick input to a gamepad control.
Definition: SDL3pp_gamepad.h:395
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_X
GAMEPAD_BUTTON_LABEL_X.
Definition: SDL3pp_gamepad.h:298
GamepadButtonLabel GetGamepadButtonLabelForType(GamepadType type, GamepadButton button)
Get the label of a button on a gamepad.
Definition: SDL3pp_gamepad.h:2316
char * GetGamepadMappingForGUID(GUID guid)
Get the gamepad mapping string for a given GUID.
Definition: SDL3pp_gamepad.h:1267
constexpr GamepadButton GAMEPAD_BUTTON_RIGHT_PADDLE1
Upper or primary paddle, under your right hand (e.g.
Definition: SDL3pp_gamepad.h:236
PropertiesRef GetGamepadProperties(GamepadParam gamepad)
Get the properties associated with an opened gamepad.
Definition: SDL3pp_gamepad.h:1631
int AddGamepadMapping(StringParam mapping)
Add support for gamepads that SDL is unaware of or change the binding of an existing gamepad.
Definition: SDL3pp_gamepad.h:1141
constexpr GamepadButton GAMEPAD_BUTTON_INVALID
GAMEPAD_BUTTON_INVALID.
Definition: SDL3pp_gamepad.h:178
constexpr GamepadAxis GAMEPAD_AXIS_RIGHTY
GAMEPAD_AXIS_RIGHTY.
Definition: SDL3pp_gamepad.h:344
JoystickRef GetGamepadJoystick(GamepadParam gamepad)
Get the underlying joystick from a gamepad.
Definition: SDL3pp_gamepad.h:2009
GamepadType GetGamepadTypeForID(JoystickID instance_id)
Get the type of a gamepad.
Definition: SDL3pp_gamepad.h:1515
float GetSensorDataRate(SensorType type)
Get the data rate (number of events per second) of a gamepad sensor.
Definition: SDL3pp_gamepad.h:2512
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_CIRCLE
GAMEPAD_BUTTON_LABEL_CIRCLE.
Definition: SDL3pp_gamepad.h:307
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_TRIANGLE
GAMEPAD_BUTTON_LABEL_TRIANGLE.
Definition: SDL3pp_gamepad.h:313
constexpr GamepadButton GAMEPAD_BUTTON_MISC3
Additional button.
Definition: SDL3pp_gamepad.h:261
SDL_GamepadButtonLabel GamepadButtonLabel
The set of gamepad button labels.
Definition: SDL3pp_gamepad.h:287
char * GetGamepadMappingForID(JoystickID instance_id)
Get the mapping of a gamepad.
Definition: SDL3pp_gamepad.h:1553
constexpr GamepadButton GAMEPAD_BUTTON_LEFT_PADDLE1
Upper or primary paddle, under your left hand (e.g. Xbox Elite paddle P3)
Definition: SDL3pp_gamepad.h:240
bool GamepadConnected(GamepadParam gamepad)
Check if a gamepad has been opened and is currently connected.
Definition: SDL3pp_gamepad.h:1984
Uint64 GetGamepadSteamHandle(GamepadParam gamepad)
Get the Steam Input handle of an opened gamepad, if available.
Definition: SDL3pp_gamepad.h:1917
void GetGamepadTouchpadFinger(GamepadParam gamepad, int touchpad, int finger, bool *down, float *x, float *y, float *pressure)
Get the current state of a finger on a touchpad on a gamepad.
Definition: SDL3pp_gamepad.h:2406
bool HasGamepad()
Return whether a gamepad is currently connected.
Definition: SDL3pp_gamepad.h:1328
SDL_GamepadButton GamepadButton
The list of buttons available on a gamepad.
Definition: SDL3pp_gamepad.h:176
int GetGamepadPlayerIndex(GamepadParam gamepad)
Get the player index of an opened gamepad.
Definition: SDL3pp_gamepad.h:1771
JoystickConnectionState GetGamepadConnectionState(GamepadParam gamepad)
Get the connection state of a gamepad.
Definition: SDL3pp_gamepad.h:1936
void SetGamepadPlayerIndex(GamepadParam gamepad, int player_index)
Set the player index of an opened gamepad.
Definition: SDL3pp_gamepad.h:1793
void ReloadGamepadMappings()
Reinitialize the SDL mapping database to its initial state.
Definition: SDL3pp_gamepad.h:1235
constexpr GamepadButton GAMEPAD_BUTTON_START
GAMEPAD_BUTTON_START.
Definition: SDL3pp_gamepad.h:199
const char * GetGamepadStringForButton(GamepadButton button)
Convert from an GamepadButton enum to a string.
Definition: SDL3pp_gamepad.h:2254
constexpr GamepadButton GAMEPAD_BUTTON_MISC1
Additional button (e.g.
Definition: SDL3pp_gamepad.h:231
constexpr GamepadAxis GAMEPAD_AXIS_COUNT
GAMEPAD_AXIS_COUNT.
Definition: SDL3pp_gamepad.h:353
constexpr GamepadAxis GAMEPAD_AXIS_INVALID
GAMEPAD_AXIS_INVALID.
Definition: SDL3pp_gamepad.h:332
const char * GetGamepadAppleSFSymbolsNameForButton(GamepadParam gamepad, GamepadButton button)
Return the sfSymbolsName for a given button on a gamepad on Apple platforms.
Definition: SDL3pp_gamepad.h:2698
int AddGamepadMappingsFromIO(IOStreamParam src, bool closeio)
Load a set of gamepad mappings from an IOStream.
Definition: SDL3pp_gamepad.h:1184
GamepadType GetGamepadTypeFromString(StringParam str)
Convert a string into GamepadType enum.
Definition: SDL3pp_gamepad.h:2100
bool GamepadHasAxis(GamepadParam gamepad, GamepadAxis axis)
Query whether a gamepad has a given axis.
Definition: SDL3pp_gamepad.h:2179
constexpr GamepadButton GAMEPAD_BUTTON_WEST
Left face button (e.g. Xbox X button)
Definition: SDL3pp_gamepad.h:187
bool IsGamepad(JoystickID instance_id)
Check if the given joystick is supported by the gamepad interface.
Definition: SDL3pp_gamepad.h:1361
constexpr GamepadType GAMEPAD_TYPE_XBOX360
GAMEPAD_TYPE_XBOX360.
Definition: SDL3pp_gamepad.h:123
SDL_GamepadBindingType GamepadBindingType
Types of gamepad control bindings.
Definition: SDL3pp_gamepad.h:366
constexpr GamepadType GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT
GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT.
Definition: SDL3pp_gamepad.h:144
constexpr GamepadButton GAMEPAD_BUTTON_LEFT_STICK
GAMEPAD_BUTTON_LEFT_STICK.
Definition: SDL3pp_gamepad.h:202
constexpr GamepadButton GAMEPAD_BUTTON_RIGHT_STICK
GAMEPAD_BUTTON_RIGHT_STICK.
Definition: SDL3pp_gamepad.h:205
Sint16 GetGamepadAxis(GamepadParam gamepad, GamepadAxis axis)
Get the current state of an axis control on a gamepad.
Definition: SDL3pp_gamepad.h:2211
char ** GetGamepadMappings(int *count)
Get the current gamepad mappings.
Definition: SDL3pp_gamepad.h:1249
constexpr GamepadButton GAMEPAD_BUTTON_DPAD_DOWN
GAMEPAD_BUTTON_DPAD_DOWN.
Definition: SDL3pp_gamepad.h:217
constexpr GamepadButton GAMEPAD_BUTTON_MISC5
Additional button.
Definition: SDL3pp_gamepad.h:267
void SetGamepadMapping(JoystickID instance_id, StringParam mapping)
Set the current mapping of a joystick or gamepad.
Definition: SDL3pp_gamepad.h:1314
void GetGamepadSensorData(GamepadParam gamepad, SensorType type, float *data, int num_values)
Get the current state of a gamepad sensor.
Definition: SDL3pp_gamepad.h:2531
int GetNumGamepadTouchpadFingers(GamepadParam gamepad, int touchpad)
Get the number of supported simultaneous fingers on a touchpad on a game gamepad.
Definition: SDL3pp_gamepad.h:2377
void SetGamepadEventsEnabled(bool enabled)
Set the state of gamepad event processing.
Definition: SDL3pp_gamepad.h:2032
constexpr GamepadType GAMEPAD_TYPE_PS5
GAMEPAD_TYPE_PS5.
Definition: SDL3pp_gamepad.h:135
constexpr GamepadButton GAMEPAD_BUTTON_MISC2
Additional button.
Definition: SDL3pp_gamepad.h:258
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_Y
GAMEPAD_BUTTON_LABEL_Y.
Definition: SDL3pp_gamepad.h:301
bool GetButton(GamepadButton button)
Get the current state of a button on a gamepad.
Definition: SDL3pp_gamepad.h:2300
void RumbleGamepad(GamepadParam gamepad, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms)
Start a rumble effect on a gamepad.
Definition: SDL3pp_gamepad.h:2563
JoystickRef GetJoystick()
Get the underlying joystick from a gamepad.
Definition: SDL3pp_gamepad.h:2014
Gamepad OpenGamepad(JoystickID instance_id)
Open a gamepad for use.
Definition: SDL3pp_gamepad.h:1570
void UpdateGamepads()
Manually pump gamepad updates if not using the loop.
Definition: SDL3pp_gamepad.h:2082
OwnArray< JoystickID > GetGamepads()
Get a list of currently connected gamepads.
Definition: SDL3pp_gamepad.h:1342
constexpr GamepadButton GAMEPAD_BUTTON_TOUCHPAD
PS4/PS5 touchpad button.
Definition: SDL3pp_gamepad.h:255
const char * GetGamepadStringForType(GamepadType type)
Convert from an GamepadType enum to a string.
Definition: SDL3pp_gamepad.h:2117
constexpr GamepadButton GAMEPAD_BUTTON_GUIDE
GAMEPAD_BUTTON_GUIDE.
Definition: SDL3pp_gamepad.h:196
int GetPlayerIndex()
Get the player index of an opened gamepad.
Definition: SDL3pp_gamepad.h:1776
bool SensorEnabled(SensorType type)
Query whether sensor data reporting is enabled for a gamepad.
Definition: SDL3pp_gamepad.h:2493
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_A
GAMEPAD_BUTTON_LABEL_A.
Definition: SDL3pp_gamepad.h:292
constexpr GamepadButton GAMEPAD_BUTTON_COUNT
GAMEPAD_BUTTON_COUNT.
Definition: SDL3pp_gamepad.h:273
SDL_GamepadBinding ** GetBindings(int *count)
Get the SDL joystick layer bindings for a gamepad.
Definition: SDL3pp_gamepad.h:2068
const char * GetGamepadPath(GamepadParam gamepad)
Get the implementation-dependent path for an opened gamepad.
Definition: SDL3pp_gamepad.h:1707
const char * GetPath()
Get the implementation-dependent path for an opened gamepad.
Definition: SDL3pp_gamepad.h:1712
void SendGamepadEffect(GamepadParam gamepad, const void *data, int size)
Send a gamepad specific effect packet.
Definition: SDL3pp_gamepad.h:2662
bool GamepadHasButton(GamepadParam gamepad, GamepadButton button)
Query whether a gamepad has a given button.
Definition: SDL3pp_gamepad.h:2273
constexpr GamepadBindingType GAMEPAD_BINDTYPE_NONE
GAMEPAD_BINDTYPE_NONE.
Definition: SDL3pp_gamepad.h:368
void CloseGamepad(GamepadRaw gamepad)
Close a gamepad previously opened with Gamepad.Gamepad().
Definition: SDL3pp_gamepad.h:2682
constexpr GamepadType GAMEPAD_TYPE_UNKNOWN
GAMEPAD_TYPE_UNKNOWN.
Definition: SDL3pp_gamepad.h:117
bool GamepadSensorEnabled(GamepadParam gamepad, SensorType type)
Query whether sensor data reporting is enabled for a gamepad.
Definition: SDL3pp_gamepad.h:2488
constexpr GamepadButton GAMEPAD_BUTTON_NORTH
Top face button (e.g. Xbox Y button)
Definition: SDL3pp_gamepad.h:190
constexpr GamepadButton GAMEPAD_BUTTON_RIGHT_SHOULDER
GAMEPAD_BUTTON_RIGHT_SHOULDER.
Definition: SDL3pp_gamepad.h:211
SDL_JoystickConnectionState JoystickConnectionState
Possible connection states for a joystick device.
Definition: SDL3pp_joystick.h:345
SDL_PowerState PowerState
The basic state for the system's power supply.
Definition: SDL3pp_power.h:38
SDL_SensorType SensorType
The different sensors defined by SDL.
Definition: SDL3pp_sensor.h:125
Uint16 Uint16
An unsigned 16-bit integer type.
Definition: SDL3pp_stdinc.h:291
Uint32 Uint32
An unsigned 32-bit integer type.
Definition: SDL3pp_stdinc.h:325
Uint64 Uint64
An unsigned 64-bit integer type.
Definition: SDL3pp_stdinc.h:363
Uint8 Uint8
An unsigned 8-bit integer type.
Definition: SDL3pp_stdinc.h:257
Sint16 Sint16
A signed 16-bit integer type.
Definition: SDL3pp_stdinc.h:274
Main include header for the SDL3pp library.
An GUID is a 128-bit identifier for an input device that identifies that device across runs of SDL pr...
Definition: SDL3pp_guid.h:41
Safely wrap Gamepad for non owning parameters.
Definition: SDL3pp_gamepad.h:81
constexpr GamepadParam(std::nullptr_t _=nullptr)
Constructs null/invalid.
Definition: SDL3pp_gamepad.h:91
constexpr GamepadParam(GamepadRaw value)
Constructs from GamepadRaw.
Definition: SDL3pp_gamepad.h:85
constexpr auto operator<=>(const GamepadParam &other) const =default
Comparison.
GamepadRaw value
parameter's GamepadRaw
Definition: SDL3pp_gamepad.h:82
Semi-safe reference for Gamepad.
Definition: SDL3pp_gamepad.h:1076
~GamepadRef()
Destructor.
Definition: SDL3pp_gamepad.h:1096
GamepadRef(GamepadParam resource)
Constructs from GamepadParam.
Definition: SDL3pp_gamepad.h:1084
GamepadRef(const GamepadRef &other)
Copy constructor.
Definition: SDL3pp_gamepad.h:1090
Safely wrap IOStream for non owning parameters.
Definition: SDL3pp_iostream.h:34
Semi-safe reference for Joystick.
Definition: SDL3pp_joystick.h:1059
Semi-safe reference for Properties.
Definition: SDL3pp_properties.h:569