1#ifndef SDL3PP_GAMEPAD_H_
2#define SDL3PP_GAMEPAD_H_
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"
97 constexpr explicit operator bool()
const {
return !!
value; }
118 SDL_GAMEPAD_TYPE_UNKNOWN;
121 SDL_GAMEPAD_TYPE_STANDARD;
124 SDL_GAMEPAD_TYPE_XBOX360;
127 SDL_GAMEPAD_TYPE_XBOXONE;
130 SDL_GAMEPAD_TYPE_PS3;
133 SDL_GAMEPAD_TYPE_PS4;
136 SDL_GAMEPAD_TYPE_PS5;
139 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_PRO;
142 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT;
145 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT;
148 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR;
151 SDL_GAMEPAD_TYPE_COUNT;
179 SDL_GAMEPAD_BUTTON_INVALID;
182 SDL_GAMEPAD_BUTTON_SOUTH;
185 SDL_GAMEPAD_BUTTON_EAST;
188 SDL_GAMEPAD_BUTTON_WEST;
191 SDL_GAMEPAD_BUTTON_NORTH;
194 SDL_GAMEPAD_BUTTON_BACK;
197 SDL_GAMEPAD_BUTTON_GUIDE;
200 SDL_GAMEPAD_BUTTON_START;
203 SDL_GAMEPAD_BUTTON_LEFT_STICK;
206 SDL_GAMEPAD_BUTTON_RIGHT_STICK;
209 SDL_GAMEPAD_BUTTON_LEFT_SHOULDER;
212 SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER;
215 SDL_GAMEPAD_BUTTON_DPAD_UP;
218 SDL_GAMEPAD_BUTTON_DPAD_DOWN;
221 SDL_GAMEPAD_BUTTON_DPAD_LEFT;
224 SDL_GAMEPAD_BUTTON_DPAD_RIGHT;
237 SDL_GAMEPAD_BUTTON_RIGHT_PADDLE1;
241 SDL_GAMEPAD_BUTTON_LEFT_PADDLE1;
247 SDL_GAMEPAD_BUTTON_RIGHT_PADDLE2;
253 SDL_GAMEPAD_BUTTON_LEFT_PADDLE2;
256 SDL_GAMEPAD_BUTTON_TOUCHPAD;
259 SDL_GAMEPAD_BUTTON_MISC2;
262 SDL_GAMEPAD_BUTTON_MISC3;
265 SDL_GAMEPAD_BUTTON_MISC4;
268 SDL_GAMEPAD_BUTTON_MISC5;
271 SDL_GAMEPAD_BUTTON_MISC6;
274 SDL_GAMEPAD_BUTTON_COUNT;
290 SDL_GAMEPAD_BUTTON_LABEL_UNKNOWN;
293 SDL_GAMEPAD_BUTTON_LABEL_A;
296 SDL_GAMEPAD_BUTTON_LABEL_B;
299 SDL_GAMEPAD_BUTTON_LABEL_X;
302 SDL_GAMEPAD_BUTTON_LABEL_Y;
305 SDL_GAMEPAD_BUTTON_LABEL_CROSS;
308 SDL_GAMEPAD_BUTTON_LABEL_CIRCLE;
311 SDL_GAMEPAD_BUTTON_LABEL_SQUARE;
314 SDL_GAMEPAD_BUTTON_LABEL_TRIANGLE;
333 SDL_GAMEPAD_AXIS_INVALID;
336 SDL_GAMEPAD_AXIS_LEFTX;
339 SDL_GAMEPAD_AXIS_LEFTY;
342 SDL_GAMEPAD_AXIS_RIGHTX;
345 SDL_GAMEPAD_AXIS_RIGHTY;
348 SDL_GAMEPAD_AXIS_LEFT_TRIGGER;
351 SDL_GAMEPAD_AXIS_RIGHT_TRIGGER;
354 SDL_GAMEPAD_AXIS_COUNT;
369 SDL_GAMEPAD_BINDTYPE_NONE;
372 SDL_GAMEPAD_BINDTYPE_BUTTON;
375 SDL_GAMEPAD_BINDTYPE_AXIS;
378 SDL_GAMEPAD_BINDTYPE_HAT;
420 : m_resource(resource)
450 : m_resource(SDL_OpenGamepad(instance_id))
460 std::swap(m_resource, other.m_resource);
471 m_resource =
nullptr;
479 constexpr bool operator==(std::nullptr_t _)
const {
return !m_resource; }
482 constexpr explicit operator bool()
const {
return !!m_resource; }
988 Uint16 high_frequency_rumble,
1143 return SDL_AddGamepadMapping(mapping);
1186 return SDL_AddGamepadMappingsFromIO(src, closeio);
1223 return SDL_AddGamepadMappingsFromFile(file);
1251 return SDL_GetGamepadMappings(count);
1269 return SDL_GetGamepadMappingForGUID(guid);
1291 return SDL_GetGamepadMapping(gamepad);
1316 CheckError(SDL_SetGamepadMapping(instance_id, mapping));
1345 auto r =
reinterpret_cast<JoystickID*
>(SDL_GetGamepads(&count));
1363 return SDL_IsGamepad(instance_id);
1382 return SDL_GetGamepadNameForID(instance_id);
1401 return SDL_GetGamepadPathForID(instance_id);
1419 return SDL_GetGamepadPlayerIndexForID(instance_id);
1438 return SDL_GetGamepadGUIDForID(instance_id);
1458 return SDL_GetGamepadVendorForID(instance_id);
1478 return SDL_GetGamepadProductForID(instance_id);
1498 return SDL_GetGamepadProductVersionForID(instance_id);
1517 return SDL_GetGamepadTypeForID(instance_id);
1536 return SDL_GetRealGamepadTypeForID(instance_id);
1555 return SDL_GetGamepadMappingForID(instance_id);
1587 return {
CheckError(SDL_GetGamepadFromID(instance_id))};
1603 return {SDL_GetGamepadFromPlayerIndex(player_index)};
1633 return {
CheckError(SDL_GetGamepadProperties(gamepad))};
1641namespace prop::GamepadCap {
1643constexpr auto MONO_LED_BOOLEAN = SDL_PROP_GAMEPAD_CAP_MONO_LED_BOOLEAN;
1645constexpr auto RGB_LED_BOOLEAN = SDL_PROP_GAMEPAD_CAP_RGB_LED_BOOLEAN;
1647constexpr auto PLAYER_LED_BOOLEAN = SDL_PROP_GAMEPAD_CAP_PLAYER_LED_BOOLEAN;
1649constexpr auto RUMBLE_BOOLEAN = SDL_PROP_GAMEPAD_CAP_RUMBLE_BOOLEAN;
1651constexpr auto TRIGGER_RUMBLE_BOOLEAN =
1652 SDL_PROP_GAMEPAD_CAP_TRIGGER_RUMBLE_BOOLEAN;
1668 return CheckError(SDL_GetGamepadID(gamepad));
1687 return SDL_GetGamepadName(gamepad);
1709 return SDL_GetGamepadPath(gamepad);
1730 return SDL_GetGamepadType(gamepad);
1751 return SDL_GetRealGamepadType(gamepad);
1773 return SDL_GetGamepadPlayerIndex(gamepad);
1795 CheckError(SDL_SetGamepadPlayerIndex(gamepad, player_index));
1817 return SDL_GetGamepadVendor(gamepad);
1836 return SDL_GetGamepadProduct(gamepad);
1858 return SDL_GetGamepadProductVersion(gamepad);
1878 return SDL_GetGamepadFirmwareVersion(gamepad);
1898 return SDL_GetGamepadSerial(gamepad);
1919 return SDL_GetGamepadSteamHandle(gamepad);
1938 return CheckError(SDL_GetGamepadConnectionState(gamepad));
1966 return SDL_GetGamepadPowerInfo(gamepad, percent);
1986 return SDL_GamepadConnected(gamepad);
2011 return {SDL_GetGamepadJoystick(gamepad)};
2034 SDL_SetGamepadEventsEnabled(enabled);
2065 return SDL_GetGamepadBindings(gamepad, count);
2102 return SDL_GetGamepadTypeFromString(str);
2119 return SDL_GetGamepadStringForType(type);
2144 return SDL_GetGamepadAxisFromString(str);
2161 return SDL_GetGamepadStringForAxis(axis);
2181 return SDL_GamepadHasAxis(gamepad, axis);
2213 return CheckError(SDL_GetGamepadAxis(gamepad, axis));
2239 return SDL_GetGamepadButtonFromString(str);
2256 return SDL_GetGamepadStringForButton(button);
2275 return SDL_GamepadHasButton(gamepad, button);
2297 return SDL_GetGamepadButton(gamepad, button);
2319 return SDL_GetGamepadButtonLabelForType(type, button);
2336 return SDL_GetGamepadButtonLabel(gamepad, button);
2356 return SDL_GetNumGamepadTouchpads(gamepad);
2379 return SDL_GetNumGamepadTouchpadFingers(gamepad, touchpad);
2415 gamepad, touchpad, finger, down, x, y, pressure));
2426 m_resource, touchpad, finger, down, x, y, pressure);
2444 return SDL_GamepadHasSensor(gamepad, type);
2469 CheckError(SDL_SetGamepadSensorEnabled(gamepad, type, enabled));
2490 return SDL_GamepadSensorEnabled(gamepad, type);
2509 return SDL_GetGamepadSensorDataRate(gamepad, type);
2536 CheckError(SDL_GetGamepadSensorData(gamepad, type, data, num_values));
2564 Uint16 low_frequency_rumble,
2565 Uint16 high_frequency_rumble,
2569 gamepad, low_frequency_rumble, high_frequency_rumble, duration_ms));
2573 Uint16 high_frequency_rumble,
2577 m_resource, low_frequency_rumble, high_frequency_rumble, duration_ms);
2611 SDL_RumbleGamepadTriggers(gamepad, left_rumble, right_rumble, duration_ms));
2619 m_resource, left_rumble, right_rumble, duration_ms);
2644 CheckError(SDL_SetGamepadLED(gamepad, red, green, blue));
2664 CheckError(SDL_SendGamepadEffect(gamepad, data, size));
2701 return SDL_GetGamepadAppleSFSymbolsNameForButton(gamepad, button);
2723 return SDL_GetGamepadAppleSFSymbolsNameForAxis(gamepad, axis);
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