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"
99 SDL_GAMEPAD_TYPE_UNKNOWN;
102 SDL_GAMEPAD_TYPE_STANDARD;
105 SDL_GAMEPAD_TYPE_XBOX360;
108 SDL_GAMEPAD_TYPE_XBOXONE;
111 SDL_GAMEPAD_TYPE_PS3;
114 SDL_GAMEPAD_TYPE_PS4;
117 SDL_GAMEPAD_TYPE_PS5;
120 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_PRO;
123 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT;
126 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT;
129 SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR;
131#if SDL_VERSION_ATLEAST(3, 4, 0)
134 SDL_GAMEPAD_TYPE_GAMECUBE;
138#if SDL_VERSION_ATLEAST(3, 4, 18)
141 SDL_GAMEPAD_TYPE_STEAM;
146 SDL_GAMEPAD_TYPE_COUNT;
174 SDL_GAMEPAD_BUTTON_INVALID;
177 SDL_GAMEPAD_BUTTON_SOUTH;
180 SDL_GAMEPAD_BUTTON_EAST;
183 SDL_GAMEPAD_BUTTON_WEST;
186 SDL_GAMEPAD_BUTTON_NORTH;
189 SDL_GAMEPAD_BUTTON_BACK;
192 SDL_GAMEPAD_BUTTON_GUIDE;
195 SDL_GAMEPAD_BUTTON_START;
198 SDL_GAMEPAD_BUTTON_LEFT_STICK;
201 SDL_GAMEPAD_BUTTON_RIGHT_STICK;
204 SDL_GAMEPAD_BUTTON_LEFT_SHOULDER;
207 SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER;
210 SDL_GAMEPAD_BUTTON_DPAD_UP;
213 SDL_GAMEPAD_BUTTON_DPAD_DOWN;
216 SDL_GAMEPAD_BUTTON_DPAD_LEFT;
219 SDL_GAMEPAD_BUTTON_DPAD_RIGHT;
234 SDL_GAMEPAD_BUTTON_RIGHT_PADDLE1;
241 SDL_GAMEPAD_BUTTON_LEFT_PADDLE1;
249 SDL_GAMEPAD_BUTTON_RIGHT_PADDLE2;
257 SDL_GAMEPAD_BUTTON_LEFT_PADDLE2;
260 SDL_GAMEPAD_BUTTON_TOUCHPAD;
263 SDL_GAMEPAD_BUTTON_MISC2;
272 SDL_GAMEPAD_BUTTON_MISC5;
275 SDL_GAMEPAD_BUTTON_MISC6;
278 SDL_GAMEPAD_BUTTON_COUNT;
294 SDL_GAMEPAD_BUTTON_LABEL_UNKNOWN;
297 SDL_GAMEPAD_BUTTON_LABEL_A;
300 SDL_GAMEPAD_BUTTON_LABEL_B;
303 SDL_GAMEPAD_BUTTON_LABEL_X;
306 SDL_GAMEPAD_BUTTON_LABEL_Y;
309 SDL_GAMEPAD_BUTTON_LABEL_CROSS;
312 SDL_GAMEPAD_BUTTON_LABEL_CIRCLE;
315 SDL_GAMEPAD_BUTTON_LABEL_SQUARE;
318 SDL_GAMEPAD_BUTTON_LABEL_TRIANGLE;
336 SDL_GAMEPAD_AXIS_INVALID;
339 SDL_GAMEPAD_AXIS_LEFTX;
342 SDL_GAMEPAD_AXIS_LEFTY;
345 SDL_GAMEPAD_AXIS_RIGHTX;
348 SDL_GAMEPAD_AXIS_RIGHTY;
351 SDL_GAMEPAD_AXIS_LEFT_TRIGGER;
354 SDL_GAMEPAD_AXIS_RIGHT_TRIGGER;
357 SDL_GAMEPAD_AXIS_COUNT;
372 SDL_GAMEPAD_BINDTYPE_NONE;
375 SDL_GAMEPAD_BINDTYPE_BUTTON;
378 SDL_GAMEPAD_BINDTYPE_AXIS;
381 SDL_GAMEPAD_BINDTYPE_HAT;
970 Uint16 high_frequency_rumble,
1075 using GamepadBase::GamepadBase;
1166 return SDL_AddGamepadMapping(mapping);
1209 return SDL_AddGamepadMappingsFromIO(src, closeio);
1246 return SDL_AddGamepadMappingsFromFile(file);
1275 auto data =
CheckError(SDL_GetGamepadMappings(&count));
1295 return StringResult(SDL_GetGamepadMappingForGUID(guid));
1345 CheckError(SDL_SetGamepadMapping(instance_id, mapping));
1377 auto r =
reinterpret_cast<JoystickID*
>(SDL_GetGamepads(&count));
1397 return SDL_IsGamepad(instance_id);
1418 return SDL_GetGamepadNameForID(instance_id);
1439 return SDL_GetGamepadPathForID(instance_id);
1459 return SDL_GetGamepadPlayerIndexForID(instance_id);
1480 return SDL_GetGamepadGUIDForID(instance_id);
1502 return SDL_GetGamepadVendorForID(instance_id);
1524 return SDL_GetGamepadProductForID(instance_id);
1546 return SDL_GetGamepadProductVersionForID(instance_id);
1567 return SDL_GetGamepadTypeForID(instance_id);
1588 return SDL_GetRealGamepadTypeForID(instance_id);
1609 return SDL_GetGamepadMappingForID(instance_id);
1632 :
Gamepad(SDL_OpenGamepad(instance_id))
1650 return {
CheckError(SDL_GetGamepadFromID(instance_id))};
1668 return {SDL_GetGamepadFromPlayerIndex(player_index)};
1698 return {
CheckError(SDL_GetGamepadProperties(gamepad))};
1719 SDL_PROP_GAMEPAD_CAP_MONO_LED_BOOLEAN;
1722 SDL_PROP_GAMEPAD_CAP_RGB_LED_BOOLEAN;
1725 SDL_PROP_GAMEPAD_CAP_PLAYER_LED_BOOLEAN;
1728 SDL_PROP_GAMEPAD_CAP_RUMBLE_BOOLEAN;
1731 SDL_PROP_GAMEPAD_CAP_TRIGGER_RUMBLE_BOOLEAN;
1748 return CheckError(SDL_GetGamepadID(gamepad));
1768 return SDL_GetGamepadName(gamepad);
1788 return SDL_GetGamepadPath(gamepad);
1807 return SDL_GetGamepadType(gamepad);
1826 return SDL_GetRealGamepadType(gamepad);
1850 return SDL_GetGamepadPlayerIndex(gamepad);
1874 CheckError(SDL_SetGamepadPlayerIndex(gamepad, player_index));
1898 return SDL_GetGamepadVendor(gamepad);
1919 return SDL_GetGamepadProduct(gamepad);
1943 return SDL_GetGamepadProductVersion(gamepad);
1965 return SDL_GetGamepadFirmwareVersion(gamepad);
1987 return SDL_GetGamepadSerial(gamepad);
2010 return SDL_GetGamepadSteamHandle(gamepad);
2031 return CheckError(SDL_GetGamepadConnectionState(gamepad));
2060 return SDL_GetGamepadPowerInfo(gamepad, percent);
2081 return SDL_GamepadConnected(gamepad);
2108 return CheckError(SDL_GetGamepadJoystick(gamepad));
2133 SDL_SetGamepadEventsEnabled(enabled);
2166 auto r = (SDL_GetGamepadBindings(gamepad, &count));
2208 return SDL_GetGamepadTypeFromString(str);
2227 return SDL_GetGamepadStringForType(type);
2253 return SDL_GetGamepadAxisFromString(str);
2272 return SDL_GetGamepadStringForAxis(axis);
2294 return SDL_GamepadHasAxis(gamepad, axis);
2330 return SDL_GetGamepadAxis(gamepad, axis);
2358 return SDL_GetGamepadButtonFromString(str);
2377 return SDL_GetGamepadStringForButton(button);
2398 return SDL_GamepadHasButton(gamepad, button);
2422 return SDL_GetGamepadButton(gamepad, button);
2446 return SDL_GetGamepadButtonLabelForType(type, button);
2465 return SDL_GetGamepadButtonLabel(gamepad, button);
2487 return SDL_GetNumGamepadTouchpads(gamepad);
2512 return SDL_GetNumGamepadTouchpadFingers(gamepad, touchpad);
2550 gamepad, touchpad, finger, down, x, y, pressure));
2580 return SDL_GamepadHasSensor(gamepad, type);
2607 CheckError(SDL_SetGamepadSensorEnabled(gamepad, type, enabled));
2630 return SDL_GamepadSensorEnabled(gamepad, type);
2651 return SDL_GetGamepadSensorDataRate(gamepad, type);
2680 CheckError(SDL_GetGamepadSensorData(gamepad, type, data, num_values));
2712 Uint16 low_frequency_rumble,
2713 Uint16 high_frequency_rumble,
2717 gamepad, low_frequency_rumble, high_frequency_rumble, duration_ms));
2721 Uint16 high_frequency_rumble,
2725 get(), low_frequency_rumble, high_frequency_rumble, duration_ms);
2761 SDL_RumbleGamepadTriggers(gamepad, left_rumble, right_rumble, duration_ms));
2795 CheckError(SDL_SetGamepadLED(gamepad, red, green, blue));
2817 CheckError(SDL_SendGamepadEffect(gamepad, data, size));
2856 return SDL_GetGamepadAppleSFSymbolsNameForButton(gamepad, button);
2881 return SDL_GetGamepadAppleSFSymbolsNameForAxis(gamepad, axis);
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:144
Base class for SDL memory allocated array wrap.
Definition SDL3pp_ownPtr.h:44
constexpr OwnArray(std::nullptr_t=nullptr)
Constructor.
Definition SDL3pp_ownPtr.h:50
constexpr RawPointer release() noexcept
Definition SDL3pp_resource.h:57
friend constexpr void swap(ResourceBaseT &lhs, ResourceBaseT &rhs) noexcept
Definition SDL3pp_resource.h:65
constexpr RawPointer get() const noexcept
Definition SDL3pp_resource.h:54
constexpr ResourceBaseT()=default
Default constructor, creates null/invalid resource.
Helpers to use C++ strings parameters.
Definition SDL3pp_strings.h:58
constexpr void CheckError(bool result)
Check and throw if returned value from SDL is an error.
Definition SDL3pp_error.h:199
constexpr GamepadType GAMEPAD_TYPE_STEAM
GAMEPAD_TYPE_STEAM.
Definition SDL3pp_gamepad.h:140
Uint64 GetGamepadSteamHandle(GamepadRef gamepad)
Get the Steam Input handle of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:2008
constexpr GamepadButton GAMEPAD_BUTTON_MISC6
Additional button.
Definition SDL3pp_gamepad.h:274
const char * GetAppleSFSymbolsNameForAxis(GamepadAxis axis)
Return the sfSymbolsName for a given axis on a gamepad on Apple platforms.
Definition SDL3pp_gamepad.h:2884
int GetNumTouchpads()
Get the number of touchpads on a gamepad.
Definition SDL3pp_gamepad.h:2490
JoystickConnectionState GetConnectionState()
Get the connection state of a gamepad.
Definition SDL3pp_gamepad.h:2034
void SetSensorEnabled(SensorType type, bool enabled)
Set whether data reporting for a gamepad sensor is enabled.
Definition SDL3pp_gamepad.h:2610
void RumbleTriggers(Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms)
Start a rumble effect in the gamepad's triggers.
Definition SDL3pp_gamepad.h:2764
constexpr GamepadBindingType GAMEPAD_BINDTYPE_AXIS
GAMEPAD_BINDTYPE_AXIS.
Definition SDL3pp_gamepad.h:377
int GetNumGamepadTouchpadFingers(GamepadRef gamepad, int touchpad)
Get the number of supported simultaneous fingers on a touchpad on a game gamepad.
Definition SDL3pp_gamepad.h:2510
int AddGamepadMappingsFromFile(StringParam file)
Load a set of gamepad mappings from a file.
Definition SDL3pp_gamepad.h:1244
constexpr GamepadType GAMEPAD_TYPE_NINTENDO_SWITCH_PRO
GAMEPAD_TYPE_NINTENDO_SWITCH_PRO.
Definition SDL3pp_gamepad.h:119
constexpr GamepadType GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT
GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT.
Definition SDL3pp_gamepad.h:122
const char * GetGamepadName(GamepadRef gamepad)
Get the implementation-dependent name for an opened gamepad.
Definition SDL3pp_gamepad.h:1766
GamepadType GetType()
Get the type of an opened gamepad.
Definition SDL3pp_gamepad.h:1810
Uint16 GetProduct()
Get the USB product ID of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:1922
bool GamepadHasButton(GamepadRef gamepad, GamepadButton button)
Query whether a gamepad has a given button.
Definition SDL3pp_gamepad.h:2396
bool GamepadHasSensor(GamepadRef gamepad, SensorType type)
Return whether a gamepad has a particular sensor.
Definition SDL3pp_gamepad.h:2578
bool HasSensor(SensorType type)
Return whether a gamepad has a particular sensor.
Definition SDL3pp_gamepad.h:2583
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_SQUARE
GAMEPAD_BUTTON_LABEL_SQUARE.
Definition SDL3pp_gamepad.h:314
constexpr GamepadAxis GAMEPAD_AXIS_RIGHTX
GAMEPAD_AXIS_RIGHTX.
Definition SDL3pp_gamepad.h:344
bool HasButton(GamepadButton button)
Query whether a gamepad has a given button.
Definition SDL3pp_gamepad.h:2401
void Rumble(Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms)
Start a rumble effect on a gamepad.
Definition SDL3pp_gamepad.h:2720
PropertiesRef GetGamepadProperties(GamepadRef gamepad)
Get the properties associated with an opened gamepad.
Definition SDL3pp_gamepad.h:1696
constexpr GamepadButton GAMEPAD_BUTTON_MISC4
Additional button (e.g. Nintendo GameCube right trigger click).
Definition SDL3pp_gamepad.h:269
GamepadRef GetGamepadFromPlayerIndex(int player_index)
Get the Gamepad associated with a player index.
Definition SDL3pp_gamepad.h:1666
constexpr GamepadAxis GAMEPAD_AXIS_LEFTY
GAMEPAD_AXIS_LEFTY.
Definition SDL3pp_gamepad.h:341
GamepadAxis GetGamepadAxisFromString(StringParam str)
Convert a string into GamepadAxis enum.
Definition SDL3pp_gamepad.h:2251
constexpr GamepadButton GAMEPAD_BUTTON_LEFT_PADDLE2
Lower or secondary paddle, under your left hand (e.g.
Definition SDL3pp_gamepad.h:256
GamepadButton GetGamepadButtonFromString(StringParam str)
Convert a string into an GamepadButton enum.
Definition SDL3pp_gamepad.h:2356
GamepadRef GetGamepadFromID(JoystickID instance_id)
Get the Gamepad associated with a joystick instance ID, if it has been opened.
Definition SDL3pp_gamepad.h:1648
constexpr GamepadBindingType GAMEPAD_BINDTYPE_BUTTON
GAMEPAD_BINDTYPE_BUTTON.
Definition SDL3pp_gamepad.h:374
SDL_GamepadType GamepadType
Standard gamepad types.
Definition SDL3pp_gamepad.h:96
bool GetButton(GamepadButton button)
Get the current state of a button on a gamepad.
Definition SDL3pp_gamepad.h:2425
float GetGamepadSensorDataRate(GamepadRef gamepad, SensorType type)
Get the data rate (number of events per second) of a gamepad sensor.
Definition SDL3pp_gamepad.h:2649
constexpr GamepadButton GAMEPAD_BUTTON_DPAD_UP
GAMEPAD_BUTTON_DPAD_UP.
Definition SDL3pp_gamepad.h:209
int GetNumTouchpadFingers(int touchpad)
Get the number of supported simultaneous fingers on a touchpad on a game gamepad.
Definition SDL3pp_gamepad.h:2515
float GetSensorDataRate(SensorType type)
Get the data rate (number of events per second) of a gamepad sensor.
Definition SDL3pp_gamepad.h:2654
void SetGamepadLED(GamepadRef gamepad, Uint8 red, Uint8 green, Uint8 blue)
Update a gamepad's LED color.
Definition SDL3pp_gamepad.h:2790
Uint16 GetGamepadProduct(GamepadRef gamepad)
Get the USB product ID of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:1917
constexpr GamepadType GAMEPAD_TYPE_GAMECUBE
GAMEPAD_TYPE_GAMECUBE.
Definition SDL3pp_gamepad.h:133
void Close()
Close a gamepad previously opened with OpenGamepad().
Definition SDL3pp_gamepad.h:2838
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_B
GAMEPAD_BUTTON_LABEL_B.
Definition SDL3pp_gamepad.h:299
bool GamepadEventsEnabled()
Query the state of gamepad event processing.
Definition SDL3pp_gamepad.h:2150
bool SensorEnabled(SensorType type)
Query whether sensor data reporting is enabled for a gamepad.
Definition SDL3pp_gamepad.h:2633
SDL_Gamepad * GamepadRaw
Alias to raw representation for Gamepad.
Definition SDL3pp_gamepad.h:78
constexpr GamepadButton GAMEPAD_BUTTON_LEFT_SHOULDER
GAMEPAD_BUTTON_LEFT_SHOULDER.
Definition SDL3pp_gamepad.h:203
constexpr GamepadType GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR
GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR.
Definition SDL3pp_gamepad.h:128
GamepadType GetRealGamepadTypeForID(JoystickID instance_id)
Get the type of a gamepad, ignoring any mapping override.
Definition SDL3pp_gamepad.h:1586
void GetGamepadSensorData(GamepadRef gamepad, SensorType type, float *data, int num_values)
Get the current state of a gamepad sensor.
Definition SDL3pp_gamepad.h:2675
Uint16 GetProductVersion()
Get the product version of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:1946
Uint16 GetGamepadVendorForID(JoystickID instance_id)
Get the USB vendor ID of a gamepad, if available.
Definition SDL3pp_gamepad.h:1500
Uint16 GetGamepadFirmwareVersion(GamepadRef gamepad)
Get the firmware version of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:1963
Uint16 GetGamepadProductForID(JoystickID instance_id)
Get the USB product ID of a gamepad, if available.
Definition SDL3pp_gamepad.h:1522
bool HasAxis(GamepadAxis axis)
Query whether a gamepad has a given axis.
Definition SDL3pp_gamepad.h:2297
SDL_GamepadButtonLabel GamepadButtonLabel
The set of gamepad button labels.
Definition SDL3pp_gamepad.h:291
ResourceRefT< GamepadBase > GamepadRef
Reference for Gamepad.
Definition SDL3pp_gamepad.h:85
void SetGamepadSensorEnabled(GamepadRef gamepad, SensorType type, bool enabled)
Set whether data reporting for a gamepad sensor is enabled.
Definition SDL3pp_gamepad.h:2603
const char * GetGamepadAppleSFSymbolsNameForAxis(GamepadRef gamepad, GamepadAxis axis)
Return the sfSymbolsName for a given axis on a gamepad on Apple platforms.
Definition SDL3pp_gamepad.h:2878
bool GamepadSensorEnabled(GamepadRef gamepad, SensorType type)
Query whether sensor data reporting is enabled for a gamepad.
Definition SDL3pp_gamepad.h:2628
const char * GetGamepadNameForID(JoystickID instance_id)
Get the implementation dependent name of a gamepad.
Definition SDL3pp_gamepad.h:1416
Sint16 GetGamepadAxis(GamepadRef gamepad, GamepadAxis axis)
Get the current state of an axis control on a gamepad.
Definition SDL3pp_gamepad.h:2328
OwnArray< char * > GetGamepadMappings()
Get the current gamepad mappings.
Definition SDL3pp_gamepad.h:1272
constexpr GamepadButton GAMEPAD_BUTTON_DPAD_LEFT
GAMEPAD_BUTTON_DPAD_LEFT.
Definition SDL3pp_gamepad.h:215
bool GetGamepadButton(GamepadRef gamepad, GamepadButton button)
Get the current state of a button on a gamepad.
Definition SDL3pp_gamepad.h:2420
GUID GetGamepadGUIDForID(JoystickID instance_id)
Get the implementation-dependent GUID of a gamepad.
Definition SDL3pp_gamepad.h:1478
const char * GetAppleSFSymbolsNameForButton(GamepadButton button)
Return the sfSymbolsName for a given button on a gamepad on Apple platforms.
Definition SDL3pp_gamepad.h:2859
constexpr GamepadAxis GAMEPAD_AXIS_RIGHT_TRIGGER
GAMEPAD_AXIS_RIGHT_TRIGGER.
Definition SDL3pp_gamepad.h:353
constexpr GamepadBindingType GAMEPAD_BINDTYPE_HAT
GAMEPAD_BINDTYPE_HAT.
Definition SDL3pp_gamepad.h:380
bool GamepadConnected(GamepadRef gamepad)
Check if a gamepad has been opened and is currently connected.
Definition SDL3pp_gamepad.h:2079
constexpr GamepadType GAMEPAD_TYPE_COUNT
GAMEPAD_TYPE_COUNT.
Definition SDL3pp_gamepad.h:145
constexpr GamepadType GAMEPAD_TYPE_XBOXONE
GAMEPAD_TYPE_XBOXONE.
Definition SDL3pp_gamepad.h:107
constexpr GamepadAxis GAMEPAD_AXIS_LEFTX
GAMEPAD_AXIS_LEFTX.
Definition SDL3pp_gamepad.h:338
void SetGamepadPlayerIndex(GamepadRef gamepad, int player_index)
Set the player index of an opened gamepad.
Definition SDL3pp_gamepad.h:1872
StringResult GetGamepadMapping(GamepadRef gamepad)
Get the current mapping of a gamepad.
Definition SDL3pp_gamepad.h:1316
constexpr GamepadButton GAMEPAD_BUTTON_EAST
Right face button (e.g. Xbox B button).
Definition SDL3pp_gamepad.h:179
JoystickID GetID()
Get the instance ID of an opened gamepad.
Definition SDL3pp_gamepad.h:1751
PropertiesRef GetProperties()
Get the properties associated with an opened gamepad.
Definition SDL3pp_gamepad.h:1701
constexpr GamepadType GAMEPAD_TYPE_STANDARD
GAMEPAD_TYPE_STANDARD.
Definition SDL3pp_gamepad.h:101
constexpr GamepadType GAMEPAD_TYPE_PS3
GAMEPAD_TYPE_PS3.
Definition SDL3pp_gamepad.h:110
constexpr GamepadType GAMEPAD_TYPE_PS4
GAMEPAD_TYPE_PS4.
Definition SDL3pp_gamepad.h:113
constexpr GamepadButton GAMEPAD_BUTTON_RIGHT_PADDLE2
Lower or secondary paddle, under your right hand (e.g.
Definition SDL3pp_gamepad.h:248
GamepadType GetRealType()
Get the type of an opened gamepad, ignoring any mapping override.
Definition SDL3pp_gamepad.h:1829
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_CROSS
GAMEPAD_BUTTON_LABEL_CROSS.
Definition SDL3pp_gamepad.h:308
const char * GetSerial()
Get the serial number of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:1990
void SendGamepadEffect(GamepadRef gamepad, const void *data, int size)
Send a gamepad specific effect packet.
Definition SDL3pp_gamepad.h:2815
const char * GetGamepadSerial(GamepadRef gamepad)
Get the serial number of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:1985
bool Connected()
Check if a gamepad has been opened and is currently connected.
Definition SDL3pp_gamepad.h:2084
int AddGamepadMappingsFromIO(IOStreamRef src, bool closeio)
Load a set of gamepad mappings from an IOStream.
Definition SDL3pp_gamepad.h:1207
constexpr GamepadButton GAMEPAD_BUTTON_SOUTH
Bottom face button (e.g. Xbox A button).
Definition SDL3pp_gamepad.h:176
constexpr GamepadAxis GAMEPAD_AXIS_LEFT_TRIGGER
GAMEPAD_AXIS_LEFT_TRIGGER.
Definition SDL3pp_gamepad.h:350
Uint16 GetGamepadProductVersionForID(JoystickID instance_id)
Get the product version of a gamepad, if available.
Definition SDL3pp_gamepad.h:1544
SDL_GamepadAxis GamepadAxis
The list of axes available on a gamepad.
Definition SDL3pp_gamepad.h:333
int GetGamepadPlayerIndexForID(JoystickID instance_id)
Get the player index of a gamepad.
Definition SDL3pp_gamepad.h:1457
const char * GetGamepadPathForID(JoystickID instance_id)
Get the implementation dependent path of a gamepad.
Definition SDL3pp_gamepad.h:1437
void RumbleGamepad(GamepadRef gamepad, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms)
Start a rumble effect on a gamepad.
Definition SDL3pp_gamepad.h:2711
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_UNKNOWN
GAMEPAD_BUTTON_LABEL_UNKNOWN.
Definition SDL3pp_gamepad.h:293
const char * GetGamepadStringForAxis(GamepadAxis axis)
Convert from an GamepadAxis enum to a string.
Definition SDL3pp_gamepad.h:2270
JoystickID GetGamepadID(GamepadRef gamepad)
Get the instance ID of an opened gamepad.
Definition SDL3pp_gamepad.h:1746
const char * GetName()
Get the implementation-dependent name for an opened gamepad.
Definition SDL3pp_gamepad.h:1771
constexpr GamepadButton GAMEPAD_BUTTON_BACK
GAMEPAD_BUTTON_BACK.
Definition SDL3pp_gamepad.h:188
JoystickConnectionState GetGamepadConnectionState(GamepadRef gamepad)
Get the connection state of a gamepad.
Definition SDL3pp_gamepad.h:2029
void GetGamepadTouchpadFinger(GamepadRef 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:2541
StringResult GetGamepadMappingForGUID(GUID guid)
Get the gamepad mapping string for a given GUID.
Definition SDL3pp_gamepad.h:1293
constexpr GamepadButton GAMEPAD_BUTTON_DPAD_RIGHT
GAMEPAD_BUTTON_DPAD_RIGHT.
Definition SDL3pp_gamepad.h:218
int GetGamepadPlayerIndex(GamepadRef gamepad)
Get the player index of an opened gamepad.
Definition SDL3pp_gamepad.h:1848
void SetPlayerIndex(int player_index)
Set the player index of an opened gamepad.
Definition SDL3pp_gamepad.h:1877
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_X
GAMEPAD_BUTTON_LABEL_X.
Definition SDL3pp_gamepad.h:302
GamepadButtonLabel GetGamepadButtonLabelForType(GamepadType type, GamepadButton button)
Get the label of a button on a gamepad.
Definition SDL3pp_gamepad.h:2443
constexpr GamepadButton GAMEPAD_BUTTON_RIGHT_PADDLE1
Upper or primary paddle, under your right hand (e.g.
Definition SDL3pp_gamepad.h:233
GamepadButtonLabel GetGamepadButtonLabel(GamepadRef gamepad, GamepadButton button)
Get the label of a button on a gamepad.
Definition SDL3pp_gamepad.h:2462
int GetNumGamepadTouchpads(GamepadRef gamepad)
Get the number of touchpads on a gamepad.
Definition SDL3pp_gamepad.h:2485
const char * GetGamepadAppleSFSymbolsNameForButton(GamepadRef gamepad, GamepadButton button)
Return the sfSymbolsName for a given button on a gamepad on Apple platforms.
Definition SDL3pp_gamepad.h:2853
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:1164
constexpr GamepadButton GAMEPAD_BUTTON_INVALID
GAMEPAD_BUTTON_INVALID.
Definition SDL3pp_gamepad.h:173
SDL_GamepadBindingType GamepadBindingType
Types of gamepad control bindings.
Definition SDL3pp_gamepad.h:369
constexpr GamepadAxis GAMEPAD_AXIS_RIGHTY
GAMEPAD_AXIS_RIGHTY.
Definition SDL3pp_gamepad.h:347
GamepadType GetRealGamepadType(GamepadRef gamepad)
Get the type of an opened gamepad, ignoring any mapping override.
Definition SDL3pp_gamepad.h:1824
OwnArray< GamepadBinding * > GetBindings()
Get the SDL joystick layer bindings for a gamepad.
Definition SDL3pp_gamepad.h:2170
const char * GetGamepadPath(GamepadRef gamepad)
Get the implementation-dependent path for an opened gamepad.
Definition SDL3pp_gamepad.h:1786
GamepadType GetGamepadTypeForID(JoystickID instance_id)
Get the type of a gamepad.
Definition SDL3pp_gamepad.h:1565
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_CIRCLE
GAMEPAD_BUTTON_LABEL_CIRCLE.
Definition SDL3pp_gamepad.h:311
Uint64 GetSteamHandle()
Get the Steam Input handle of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:2013
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_TRIANGLE
GAMEPAD_BUTTON_LABEL_TRIANGLE.
Definition SDL3pp_gamepad.h:317
constexpr GamepadButton GAMEPAD_BUTTON_MISC3
Additional button (e.g. Nintendo GameCube left trigger click).
Definition SDL3pp_gamepad.h:266
char * GetGamepadMappingForID(JoystickID instance_id)
Get the mapping of a gamepad.
Definition SDL3pp_gamepad.h:1607
JoystickRef GetJoystick()
Get the underlying joystick from a gamepad.
Definition SDL3pp_gamepad.h:2111
constexpr GamepadButton GAMEPAD_BUTTON_LEFT_PADDLE1
Upper or primary paddle, under your left hand (e.g.
Definition SDL3pp_gamepad.h:240
bool GamepadHasAxis(GamepadRef gamepad, GamepadAxis axis)
Query whether a gamepad has a given axis.
Definition SDL3pp_gamepad.h:2292
int GetPlayerIndex()
Get the player index of an opened gamepad.
Definition SDL3pp_gamepad.h:1853
Uint16 GetFirmwareVersion()
Get the firmware version of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:1968
bool HasGamepad()
Return whether a gamepad is currently connected.
Definition SDL3pp_gamepad.h:1359
Uint16 GetGamepadProductVersion(GamepadRef gamepad)
Get the product version of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:1941
void ReloadGamepadMappings()
Reinitialize the SDL mapping database to its initial state.
Definition SDL3pp_gamepad.h:1260
Uint16 GetGamepadVendor(GamepadRef gamepad)
Get the USB vendor ID of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:1896
constexpr GamepadButton GAMEPAD_BUTTON_START
GAMEPAD_BUTTON_START.
Definition SDL3pp_gamepad.h:194
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:2553
const char * GetGamepadStringForButton(GamepadButton button)
Convert from an GamepadButton enum to a string.
Definition SDL3pp_gamepad.h:2375
JoystickRef GetGamepadJoystick(GamepadRef gamepad)
Get the underlying joystick from a gamepad.
Definition SDL3pp_gamepad.h:2106
constexpr GamepadButton GAMEPAD_BUTTON_MISC1
Additional button (e.g.
Definition SDL3pp_gamepad.h:226
constexpr GamepadAxis GAMEPAD_AXIS_COUNT
GAMEPAD_AXIS_COUNT.
Definition SDL3pp_gamepad.h:356
constexpr GamepadAxis GAMEPAD_AXIS_INVALID
GAMEPAD_AXIS_INVALID.
Definition SDL3pp_gamepad.h:335
GamepadButtonLabel GetButtonLabel(GamepadButton button)
Get the label of a button on a gamepad.
Definition SDL3pp_gamepad.h:2468
GamepadType GetGamepadTypeFromString(StringParam str)
Convert a string into GamepadType enum.
Definition SDL3pp_gamepad.h:2206
Sint16 GetAxis(GamepadAxis axis)
Get the current state of an axis control on a gamepad.
Definition SDL3pp_gamepad.h:2333
void SendEffect(const void *data, int size)
Send a gamepad specific effect packet.
Definition SDL3pp_gamepad.h:2820
constexpr GamepadButton GAMEPAD_BUTTON_WEST
Left face button (e.g. Xbox X button).
Definition SDL3pp_gamepad.h:182
OwnArray< GamepadBinding * > GetGamepadBindings(GamepadRef gamepad)
Get the SDL joystick layer bindings for a gamepad.
Definition SDL3pp_gamepad.h:2163
PowerState GetGamepadPowerInfo(GamepadRef gamepad, int *percent)
Get the battery state of a gamepad.
Definition SDL3pp_gamepad.h:2058
bool IsGamepad(JoystickID instance_id)
Check if the given joystick is supported by the gamepad interface.
Definition SDL3pp_gamepad.h:1395
Uint16 GetVendor()
Get the USB vendor ID of an opened gamepad, if available.
Definition SDL3pp_gamepad.h:1901
constexpr GamepadType GAMEPAD_TYPE_XBOX360
GAMEPAD_TYPE_XBOX360.
Definition SDL3pp_gamepad.h:104
constexpr GamepadType GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT
GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT.
Definition SDL3pp_gamepad.h:125
void RumbleGamepadTriggers(GamepadRef gamepad, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms)
Start a rumble effect in the gamepad's triggers.
Definition SDL3pp_gamepad.h:2755
constexpr GamepadButton GAMEPAD_BUTTON_LEFT_STICK
GAMEPAD_BUTTON_LEFT_STICK.
Definition SDL3pp_gamepad.h:197
constexpr GamepadButton GAMEPAD_BUTTON_RIGHT_STICK
GAMEPAD_BUTTON_RIGHT_STICK.
Definition SDL3pp_gamepad.h:200
constexpr GamepadButton GAMEPAD_BUTTON_DPAD_DOWN
GAMEPAD_BUTTON_DPAD_DOWN.
Definition SDL3pp_gamepad.h:212
constexpr GamepadButton GAMEPAD_BUTTON_MISC5
Additional button.
Definition SDL3pp_gamepad.h:271
void GetSensorData(SensorType type, float *data, int num_values)
Get the current state of a gamepad sensor.
Definition SDL3pp_gamepad.h:2683
SDL_GamepadButton GamepadButton
The list of buttons available on a gamepad.
Definition SDL3pp_gamepad.h:171
void SetGamepadMapping(JoystickID instance_id, StringParam mapping)
Set the current mapping of a joystick or gamepad.
Definition SDL3pp_gamepad.h:1343
StringResult GetMapping()
Get the current mapping of a gamepad.
Definition SDL3pp_gamepad.h:1321
void SetGamepadEventsEnabled(bool enabled)
Set the state of gamepad event processing.
Definition SDL3pp_gamepad.h:2131
constexpr GamepadType GAMEPAD_TYPE_PS5
GAMEPAD_TYPE_PS5.
Definition SDL3pp_gamepad.h:116
constexpr GamepadButton GAMEPAD_BUTTON_MISC2
Additional button.
Definition SDL3pp_gamepad.h:262
GamepadType GetGamepadType(GamepadRef gamepad)
Get the type of an opened gamepad.
Definition SDL3pp_gamepad.h:1805
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_Y
GAMEPAD_BUTTON_LABEL_Y.
Definition SDL3pp_gamepad.h:305
Gamepad OpenGamepad(JoystickID instance_id)
Open a gamepad for use.
Definition SDL3pp_gamepad.h:1626
void SetLED(Uint8 red, Uint8 green, Uint8 blue)
Update a gamepad's LED color.
Definition SDL3pp_gamepad.h:2798
void UpdateGamepads()
Manually pump gamepad updates if not using the loop.
Definition SDL3pp_gamepad.h:2186
SDL_GamepadBinding GamepadBinding
A mapping between one joystick input to a gamepad control.
Definition SDL3pp_gamepad.h:398
OwnArray< JoystickID > GetGamepads()
Get a list of currently connected gamepads.
Definition SDL3pp_gamepad.h:1374
constexpr GamepadButton GAMEPAD_BUTTON_TOUCHPAD
PS4/PS5 touchpad button.
Definition SDL3pp_gamepad.h:259
const char * GetPath()
Get the implementation-dependent path for an opened gamepad.
Definition SDL3pp_gamepad.h:1791
const char * GetGamepadStringForType(GamepadType type)
Convert from an GamepadType enum to a string.
Definition SDL3pp_gamepad.h:2225
constexpr GamepadButton GAMEPAD_BUTTON_GUIDE
GAMEPAD_BUTTON_GUIDE.
Definition SDL3pp_gamepad.h:191
constexpr GamepadButtonLabel GAMEPAD_BUTTON_LABEL_A
GAMEPAD_BUTTON_LABEL_A.
Definition SDL3pp_gamepad.h:296
constexpr GamepadButton GAMEPAD_BUTTON_COUNT
GAMEPAD_BUTTON_COUNT.
Definition SDL3pp_gamepad.h:277
PowerState GetPowerInfo(int *percent)
Get the battery state of a gamepad.
Definition SDL3pp_gamepad.h:2063
constexpr GamepadBindingType GAMEPAD_BINDTYPE_NONE
GAMEPAD_BINDTYPE_NONE.
Definition SDL3pp_gamepad.h:371
void CloseGamepad(GamepadRaw gamepad)
Close a gamepad previously opened with OpenGamepad().
Definition SDL3pp_gamepad.h:2836
constexpr GamepadType GAMEPAD_TYPE_UNKNOWN
GAMEPAD_TYPE_UNKNOWN.
Definition SDL3pp_gamepad.h:98
constexpr GamepadButton GAMEPAD_BUTTON_NORTH
Top face button (e.g. Xbox Y button).
Definition SDL3pp_gamepad.h:185
constexpr GamepadButton GAMEPAD_BUTTON_RIGHT_SHOULDER
GAMEPAD_BUTTON_RIGHT_SHOULDER.
Definition SDL3pp_gamepad.h:206
ResourceRefT< IOStreamBase > IOStreamRef
Reference for IOStream.
Definition SDL3pp_iostream.h:37
SDL_JoystickConnectionState JoystickConnectionState
Possible connection states for a joystick device.
Definition SDL3pp_joystick.h:366
ResourceRefT< JoystickBase > JoystickRef
Reference for Joystick.
Definition SDL3pp_joystick.h:71
SDL_PowerState PowerState
The basic state for the system's power supply.
Definition SDL3pp_power.h:38
ResourceRefT< PropertiesBase > PropertiesRef
Reference for Properties.
Definition SDL3pp_properties.h:55
SDL_SensorType SensorType
The different sensors defined by SDL.
Definition SDL3pp_sensor.h:105
::Uint16 Uint16
An unsigned 16-bit integer type.
Definition SDL3pp_stdinc.h:270
::Uint32 Uint32
An unsigned 32-bit integer type.
Definition SDL3pp_stdinc.h:296
::Sint16 Sint16
A signed 16-bit integer type.
Definition SDL3pp_stdinc.h:257
::Uint8 Uint8
An unsigned 8-bit integer type.
Definition SDL3pp_stdinc.h:244
::Uint64 Uint64
An unsigned 64-bit integer type.
Definition SDL3pp_stdinc.h:326
Gamepad capability properties.
Definition SDL3pp_gamepad.h:1716
constexpr auto RUMBLE_BOOLEAN
Rumble enabled.
Definition SDL3pp_gamepad.h:1727
constexpr auto MONO_LED_BOOLEAN
Mono led enabled.
Definition SDL3pp_gamepad.h:1718
constexpr auto PLAYER_LED_BOOLEAN
Player led enabled.
Definition SDL3pp_gamepad.h:1724
constexpr auto RGB_LED_BOOLEAN
Rgb led enabled.
Definition SDL3pp_gamepad.h:1721
constexpr auto TRIGGER_RUMBLE_BOOLEAN
Trigger rumble enabled.
Definition SDL3pp_gamepad.h:1730
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:44
Base class to Gamepad.
Definition SDL3pp_gamepad.h:406
constexpr ResourceBaseT()=default
Default constructor, creates null/invalid resource.
The structure used to identify an SDL gamepad.
Definition SDL3pp_gamepad.h:1074
constexpr Gamepad(Gamepad &&other) noexcept
Move constructor.
Definition SDL3pp_gamepad.h:1090
constexpr Gamepad(GamepadRaw resource) noexcept
Constructs from raw Gamepad.
Definition SDL3pp_gamepad.h:1084
~Gamepad()
Destructor.
Definition SDL3pp_gamepad.h:1112
constexpr Gamepad & operator=(Gamepad &&other) noexcept
Assignment operator.
Definition SDL3pp_gamepad.h:1115
A non-owning reference wrapper for a given resource.
Definition SDL3pp_resource.h:93
A simple std::string-like interface for SDL allocated strings.
Definition SDL3pp_strings.h:156
StringResult(const StringResult &other)
Copy ctor.
Definition SDL3pp_strings.h:161