SDL3pp
A slim C++ wrapper for SDL3
Loading...
Searching...
No Matches
Classes | Typedefs | Functions | Variables
Gamepad Support

SDL provides a low-level joystick API, which just treats joysticks as an arbitrary pile of buttons, axes, and hat switches. More...

Collaboration diagram for Gamepad Support:

Classes

struct  SDL::GamepadParam
 Safely wrap Gamepad for non owning parameters. More...
 
class  SDL::Gamepad
 The structure used to identify an SDL gamepad. More...
 
struct  SDL::GamepadRef
 Semi-safe reference for Gamepad. More...
 

Typedefs

using SDL::GamepadRaw = SDL_Gamepad *
 Alias to raw representation for Gamepad.
 
using SDL::GamepadType = SDL_GamepadType
 Standard gamepad types. More...
 
using SDL::GamepadButton = SDL_GamepadButton
 The list of buttons available on a gamepad. More...
 
using SDL::GamepadButtonLabel = SDL_GamepadButtonLabel
 The set of gamepad button labels. More...
 
using SDL::GamepadAxis = SDL_GamepadAxis
 The list of axes available on a gamepad. More...
 
using SDL::GamepadBindingType = SDL_GamepadBindingType
 Types of gamepad control bindings. More...
 
using SDL::GamepadBinding = SDL_GamepadBinding
 A mapping between one joystick input to a gamepad control. More...
 

Functions

int SDL::AddGamepadMapping (StringParam mapping)
 Add support for gamepads that SDL is unaware of or change the binding of an existing gamepad. More...
 
int SDL::AddGamepadMappingsFromIO (IOStreamParam src, bool closeio)
 Load a set of gamepad mappings from an IOStream. More...
 
int SDL::AddGamepadMappingsFromFile (StringParam file)
 Load a set of gamepad mappings from a file. More...
 
void SDL::ReloadGamepadMappings ()
 Reinitialize the SDL mapping database to its initial state. More...
 
char ** SDL::GetGamepadMappings (int *count)
 Get the current gamepad mappings. More...
 
char * SDL::GetGamepadMappingForGUID (GUID guid)
 Get the gamepad mapping string for a given GUID. More...
 
char * SDL::GetGamepadMapping (GamepadParam gamepad)
 Get the current mapping of a gamepad. More...
 
void SDL::SetGamepadMapping (JoystickID instance_id, StringParam mapping)
 Set the current mapping of a joystick or gamepad. More...
 
bool SDL::HasGamepad ()
 Return whether a gamepad is currently connected. More...
 
OwnArray< JoystickIDSDL::GetGamepads ()
 Get a list of currently connected gamepads. More...
 
bool SDL::IsGamepad (JoystickID instance_id)
 Check if the given joystick is supported by the gamepad interface. More...
 
const char * SDL::GetGamepadNameForID (JoystickID instance_id)
 Get the implementation dependent name of a gamepad. More...
 
const char * SDL::GetGamepadPathForID (JoystickID instance_id)
 Get the implementation dependent path of a gamepad. More...
 
int SDL::GetGamepadPlayerIndexForID (JoystickID instance_id)
 Get the player index of a gamepad. More...
 
GUID SDL::GetGamepadGUIDForID (JoystickID instance_id)
 Get the implementation-dependent GUID of a gamepad. More...
 
Uint16 SDL::GetGamepadVendorForID (JoystickID instance_id)
 Get the USB vendor ID of a gamepad, if available. More...
 
Uint16 SDL::GetGamepadProductForID (JoystickID instance_id)
 Get the USB product ID of a gamepad, if available. More...
 
Uint16 SDL::GetGamepadProductVersionForID (JoystickID instance_id)
 Get the product version of a gamepad, if available. More...
 
GamepadType SDL::GetGamepadTypeForID (JoystickID instance_id)
 Get the type of a gamepad. More...
 
GamepadType SDL::GetRealGamepadTypeForID (JoystickID instance_id)
 Get the type of a gamepad, ignoring any mapping override. More...
 
char * SDL::GetGamepadMappingForID (JoystickID instance_id)
 Get the mapping of a gamepad. More...
 
Gamepad SDL::OpenGamepad (JoystickID instance_id)
 Open a gamepad for use. More...
 
GamepadRef SDL::GetGamepadFromID (JoystickID instance_id)
 Get the Gamepad associated with a joystick instance ID, if it has been opened. More...
 
GamepadRef SDL::GetGamepadFromPlayerIndex (int player_index)
 Get the Gamepad associated with a player index. More...
 
PropertiesRef SDL::GetGamepadProperties (GamepadParam gamepad)
 Get the properties associated with an opened gamepad. More...
 
JoystickID SDL::GetGamepadID (GamepadParam gamepad)
 Get the instance ID of an opened gamepad. More...
 
const char * SDL::GetGamepadName (GamepadParam gamepad)
 Get the implementation-dependent name for an opened gamepad. More...
 
const char * SDL::GetGamepadPath (GamepadParam gamepad)
 Get the implementation-dependent path for an opened gamepad. More...
 
GamepadType SDL::GetGamepadType (GamepadParam gamepad)
 Get the type of an opened gamepad. More...
 
GamepadType SDL::GetRealGamepadType (GamepadParam gamepad)
 Get the type of an opened gamepad, ignoring any mapping override. More...
 
int SDL::GetGamepadPlayerIndex (GamepadParam gamepad)
 Get the player index of an opened gamepad. More...
 
void SDL::SetGamepadPlayerIndex (GamepadParam gamepad, int player_index)
 Set the player index of an opened gamepad. More...
 
Uint16 SDL::GetGamepadVendor (GamepadParam gamepad)
 Get the USB vendor ID of an opened gamepad, if available. More...
 
Uint16 SDL::GetGamepadProduct (GamepadParam gamepad)
 Get the USB product ID of an opened gamepad, if available. More...
 
Uint16 SDL::GetGamepadProductVersion (GamepadParam gamepad)
 Get the product version of an opened gamepad, if available. More...
 
Uint16 SDL::GetGamepadFirmwareVersion (GamepadParam gamepad)
 Get the firmware version of an opened gamepad, if available. More...
 
const char * SDL::GetGamepadSerial (GamepadParam gamepad)
 Get the serial number of an opened gamepad, if available. More...
 
Uint64 SDL::GetGamepadSteamHandle (GamepadParam gamepad)
 Get the Steam Input handle of an opened gamepad, if available. More...
 
JoystickConnectionState SDL::GetGamepadConnectionState (GamepadParam gamepad)
 Get the connection state of a gamepad. More...
 
PowerState SDL::GetGamepadPowerInfo (GamepadParam gamepad, int *percent)
 Get the battery state of a gamepad. More...
 
bool SDL::GamepadConnected (GamepadParam gamepad)
 Check if a gamepad has been opened and is currently connected. More...
 
JoystickRef SDL::GetGamepadJoystick (GamepadParam gamepad)
 Get the underlying joystick from a gamepad. More...
 
void SDL::SetGamepadEventsEnabled (bool enabled)
 Set the state of gamepad event processing. More...
 
bool SDL::GamepadEventsEnabled ()
 Query the state of gamepad event processing. More...
 
SDL_GamepadBinding ** SDL::GetGamepadBindings (GamepadParam gamepad, int *count)
 Get the SDL joystick layer bindings for a gamepad. More...
 
void SDL::UpdateGamepads ()
 Manually pump gamepad updates if not using the loop. More...
 
GamepadType SDL::GetGamepadTypeFromString (StringParam str)
 Convert a string into GamepadType enum. More...
 
const char * SDL::GetGamepadStringForType (GamepadType type)
 Convert from an GamepadType enum to a string. More...
 
GamepadAxis SDL::GetGamepadAxisFromString (StringParam str)
 Convert a string into GamepadAxis enum. More...
 
const char * SDL::GetGamepadStringForAxis (GamepadAxis axis)
 Convert from an GamepadAxis enum to a string. More...
 
bool SDL::GamepadHasAxis (GamepadParam gamepad, GamepadAxis axis)
 Query whether a gamepad has a given axis. More...
 
Sint16 SDL::GetGamepadAxis (GamepadParam gamepad, GamepadAxis axis)
 Get the current state of an axis control on a gamepad. More...
 
GamepadButton SDL::GetGamepadButtonFromString (StringParam str)
 Convert a string into an GamepadButton enum. More...
 
const char * SDL::GetGamepadStringForButton (GamepadButton button)
 Convert from an GamepadButton enum to a string. More...
 
bool SDL::GamepadHasButton (GamepadParam gamepad, GamepadButton button)
 Query whether a gamepad has a given button. More...
 
bool SDL::GetGamepadButton (GamepadParam gamepad, GamepadButton button)
 Get the current state of a button on a gamepad. More...
 
GamepadButtonLabel SDL::GetGamepadButtonLabelForType (GamepadType type, GamepadButton button)
 Get the label of a button on a gamepad. More...
 
GamepadButtonLabel SDL::GetGamepadButtonLabel (GamepadParam gamepad, GamepadButton button)
 Get the label of a button on a gamepad. More...
 
int SDL::GetNumGamepadTouchpads (GamepadParam gamepad)
 Get the number of touchpads on a gamepad. More...
 
int SDL::GetNumGamepadTouchpadFingers (GamepadParam gamepad, int touchpad)
 Get the number of supported simultaneous fingers on a touchpad on a game gamepad. More...
 
void SDL::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. More...
 
bool SDL::GamepadHasSensor (GamepadParam gamepad, SensorType type)
 Return whether a gamepad has a particular sensor. More...
 
void SDL::SetGamepadSensorEnabled (GamepadParam gamepad, SensorType type, bool enabled)
 Set whether data reporting for a gamepad sensor is enabled. More...
 
bool SDL::GamepadSensorEnabled (GamepadParam gamepad, SensorType type)
 Query whether sensor data reporting is enabled for a gamepad. More...
 
float SDL::GetGamepadSensorDataRate (GamepadParam gamepad, SensorType type)
 Get the data rate (number of events per second) of a gamepad sensor. More...
 
void SDL::GetGamepadSensorData (GamepadParam gamepad, SensorType type, float *data, int num_values)
 Get the current state of a gamepad sensor. More...
 
void SDL::RumbleGamepad (GamepadParam gamepad, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms)
 Start a rumble effect on a gamepad. More...
 
void SDL::RumbleGamepadTriggers (GamepadParam gamepad, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms)
 Start a rumble effect in the gamepad's triggers. More...
 
void SDL::SetGamepadLED (GamepadParam gamepad, Uint8 red, Uint8 green, Uint8 blue)
 Update a gamepad's LED color. More...
 
void SDL::SendGamepadEffect (GamepadParam gamepad, const void *data, int size)
 Send a gamepad specific effect packet. More...
 
void SDL::CloseGamepad (GamepadRaw gamepad)
 Close a gamepad previously opened with Gamepad.Gamepad(). More...
 
const char * SDL::GetGamepadAppleSFSymbolsNameForButton (GamepadParam gamepad, GamepadButton button)
 Return the sfSymbolsName for a given button on a gamepad on Apple platforms. More...
 
const char * SDL::GetGamepadAppleSFSymbolsNameForAxis (GamepadParam gamepad, GamepadAxis axis)
 Return the sfSymbolsName for a given axis on a gamepad on Apple platforms. More...
 
char * SDL::Gamepad::GetMapping ()
 Get the current mapping of a gamepad. More...
 
PropertiesRef SDL::Gamepad::GetProperties ()
 Get the properties associated with an opened gamepad. More...
 
JoystickID SDL::Gamepad::GetID ()
 Get the instance ID of an opened gamepad. More...
 
const char * SDL::Gamepad::GetName ()
 Get the implementation-dependent name for an opened gamepad. More...
 
const char * SDL::Gamepad::GetPath ()
 Get the implementation-dependent path for an opened gamepad. More...
 
GamepadType SDL::Gamepad::GetType ()
 Get the type of an opened gamepad. More...
 
GamepadType SDL::Gamepad::GetRealType ()
 Get the type of an opened gamepad, ignoring any mapping override. More...
 
int SDL::Gamepad::GetPlayerIndex ()
 Get the player index of an opened gamepad. More...
 
void SDL::Gamepad::SetPlayerIndex (int player_index)
 Set the player index of an opened gamepad. More...
 
Uint16 SDL::Gamepad::GetVendor ()
 Get the USB vendor ID of an opened gamepad, if available. More...
 
Uint16 SDL::Gamepad::GetProduct ()
 Get the USB product ID of an opened gamepad, if available. More...
 
Uint16 SDL::Gamepad::GetProductVersion ()
 Get the product version of an opened gamepad, if available. More...
 
Uint16 SDL::Gamepad::GetFirmwareVersion ()
 Get the firmware version of an opened gamepad, if available. More...
 
const char * SDL::Gamepad::GetSerial ()
 Get the serial number of an opened gamepad, if available. More...
 
Uint64 SDL::Gamepad::GetSteamHandle ()
 Get the Steam Input handle of an opened gamepad, if available. More...
 
JoystickConnectionState SDL::Gamepad::GetConnectionState ()
 Get the connection state of a gamepad. More...
 
PowerState SDL::Gamepad::GetPowerInfo (int *percent)
 Get the battery state of a gamepad. More...
 
bool SDL::Gamepad::Connected ()
 Check if a gamepad has been opened and is currently connected. More...
 
JoystickRef SDL::Gamepad::GetJoystick ()
 Get the underlying joystick from a gamepad. More...
 
SDL_GamepadBinding ** SDL::Gamepad::GetBindings (int *count)
 Get the SDL joystick layer bindings for a gamepad. More...
 
bool SDL::Gamepad::HasAxis (GamepadAxis axis)
 Query whether a gamepad has a given axis. More...
 
Sint16 SDL::Gamepad::GetAxis (GamepadAxis axis)
 Get the current state of an axis control on a gamepad. More...
 
bool SDL::Gamepad::HasButton (GamepadButton button)
 Query whether a gamepad has a given button. More...
 
bool SDL::Gamepad::GetButton (GamepadButton button)
 Get the current state of a button on a gamepad. More...
 
GamepadButtonLabel SDL::Gamepad::GetButtonLabel (GamepadButton button)
 Get the label of a button on a gamepad. More...
 
int SDL::Gamepad::GetNumTouchpads ()
 Get the number of touchpads on a gamepad. More...
 
int SDL::Gamepad::GetNumTouchpadFingers (int touchpad)
 Get the number of supported simultaneous fingers on a touchpad on a game gamepad. More...
 
void SDL::Gamepad::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. More...
 
bool SDL::Gamepad::HasSensor (SensorType type)
 Return whether a gamepad has a particular sensor. More...
 
void SDL::Gamepad::SetSensorEnabled (SensorType type, bool enabled)
 Set whether data reporting for a gamepad sensor is enabled. More...
 
bool SDL::Gamepad::SensorEnabled (SensorType type)
 Query whether sensor data reporting is enabled for a gamepad. More...
 
float SDL::Gamepad::GetSensorDataRate (SensorType type)
 Get the data rate (number of events per second) of a gamepad sensor. More...
 
void SDL::Gamepad::GetSensorData (SensorType type, float *data, int num_values)
 Get the current state of a gamepad sensor. More...
 
void SDL::Gamepad::Rumble (Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms)
 Start a rumble effect on a gamepad. More...
 
void SDL::Gamepad::RumbleTriggers (Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms)
 Start a rumble effect in the gamepad's triggers. More...
 
void SDL::Gamepad::SetLED (Uint8 red, Uint8 green, Uint8 blue)
 Update a gamepad's LED color. More...
 
void SDL::Gamepad::SendEffect (const void *data, int size)
 Send a gamepad specific effect packet. More...
 
void SDL::Gamepad::Close ()
 Close a gamepad previously opened with Gamepad.Gamepad(). More...
 
const char * SDL::Gamepad::GetAppleSFSymbolsNameForButton (GamepadButton button)
 Return the sfSymbolsName for a given button on a gamepad on Apple platforms. More...
 
const char * SDL::Gamepad::GetAppleSFSymbolsNameForAxis (GamepadAxis axis)
 Return the sfSymbolsName for a given axis on a gamepad on Apple platforms. More...
 

Variables

constexpr GamepadType SDL::GAMEPAD_TYPE_UNKNOWN
 GAMEPAD_TYPE_UNKNOWN. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_STANDARD
 GAMEPAD_TYPE_STANDARD. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_XBOX360
 GAMEPAD_TYPE_XBOX360. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_XBOXONE
 GAMEPAD_TYPE_XBOXONE. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_PS3
 GAMEPAD_TYPE_PS3. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_PS4
 GAMEPAD_TYPE_PS4. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_PS5
 GAMEPAD_TYPE_PS5. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_NINTENDO_SWITCH_PRO
 GAMEPAD_TYPE_NINTENDO_SWITCH_PRO. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT
 GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT
 GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR
 GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR. More...
 
constexpr GamepadType SDL::GAMEPAD_TYPE_COUNT
 GAMEPAD_TYPE_COUNT. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_INVALID
 GAMEPAD_BUTTON_INVALID. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_SOUTH
 Bottom face button (e.g. Xbox A button) More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_EAST
 Right face button (e.g. Xbox B button) More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_WEST
 Left face button (e.g. Xbox X button) More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_NORTH
 Top face button (e.g. Xbox Y button) More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_BACK
 GAMEPAD_BUTTON_BACK. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_GUIDE
 GAMEPAD_BUTTON_GUIDE. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_START
 GAMEPAD_BUTTON_START. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_LEFT_STICK
 GAMEPAD_BUTTON_LEFT_STICK. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_RIGHT_STICK
 GAMEPAD_BUTTON_RIGHT_STICK. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_LEFT_SHOULDER
 GAMEPAD_BUTTON_LEFT_SHOULDER. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_RIGHT_SHOULDER
 GAMEPAD_BUTTON_RIGHT_SHOULDER. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_DPAD_UP
 GAMEPAD_BUTTON_DPAD_UP. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_DPAD_DOWN
 GAMEPAD_BUTTON_DPAD_DOWN. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_DPAD_LEFT
 GAMEPAD_BUTTON_DPAD_LEFT. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_DPAD_RIGHT
 GAMEPAD_BUTTON_DPAD_RIGHT. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC1 = SDL_GAMEPAD_BUTTON_MISC1
 Additional button (e.g. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_RIGHT_PADDLE1
 Upper or primary paddle, under your right hand (e.g. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_LEFT_PADDLE1
 Upper or primary paddle, under your left hand (e.g. Xbox Elite paddle P3) More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_RIGHT_PADDLE2
 Lower or secondary paddle, under your right hand (e.g. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_LEFT_PADDLE2
 Lower or secondary paddle, under your left hand (e.g. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_TOUCHPAD
 PS4/PS5 touchpad button. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC2
 Additional button. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC3
 Additional button. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC4
 Additional button. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC5
 Additional button. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC6
 Additional button. More...
 
constexpr GamepadButton SDL::GAMEPAD_BUTTON_COUNT
 GAMEPAD_BUTTON_COUNT. More...
 
constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_UNKNOWN
 GAMEPAD_BUTTON_LABEL_UNKNOWN. More...
 
constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_A
 GAMEPAD_BUTTON_LABEL_A. More...
 
constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_B
 GAMEPAD_BUTTON_LABEL_B. More...
 
constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_X
 GAMEPAD_BUTTON_LABEL_X. More...
 
constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_Y
 GAMEPAD_BUTTON_LABEL_Y. More...
 
constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_CROSS
 GAMEPAD_BUTTON_LABEL_CROSS. More...
 
constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_CIRCLE
 GAMEPAD_BUTTON_LABEL_CIRCLE. More...
 
constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_SQUARE
 GAMEPAD_BUTTON_LABEL_SQUARE. More...
 
constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_TRIANGLE
 GAMEPAD_BUTTON_LABEL_TRIANGLE. More...
 
constexpr GamepadAxis SDL::GAMEPAD_AXIS_INVALID
 GAMEPAD_AXIS_INVALID. More...
 
constexpr GamepadAxis SDL::GAMEPAD_AXIS_LEFTX
 GAMEPAD_AXIS_LEFTX. More...
 
constexpr GamepadAxis SDL::GAMEPAD_AXIS_LEFTY
 GAMEPAD_AXIS_LEFTY. More...
 
constexpr GamepadAxis SDL::GAMEPAD_AXIS_RIGHTX
 GAMEPAD_AXIS_RIGHTX. More...
 
constexpr GamepadAxis SDL::GAMEPAD_AXIS_RIGHTY
 GAMEPAD_AXIS_RIGHTY. More...
 
constexpr GamepadAxis SDL::GAMEPAD_AXIS_LEFT_TRIGGER
 GAMEPAD_AXIS_LEFT_TRIGGER. More...
 
constexpr GamepadAxis SDL::GAMEPAD_AXIS_RIGHT_TRIGGER
 GAMEPAD_AXIS_RIGHT_TRIGGER. More...
 
constexpr GamepadAxis SDL::GAMEPAD_AXIS_COUNT
 GAMEPAD_AXIS_COUNT. More...
 
constexpr GamepadBindingType SDL::GAMEPAD_BINDTYPE_NONE
 GAMEPAD_BINDTYPE_NONE. More...
 
constexpr GamepadBindingType SDL::GAMEPAD_BINDTYPE_BUTTON
 GAMEPAD_BINDTYPE_BUTTON. More...
 
constexpr GamepadBindingType SDL::GAMEPAD_BINDTYPE_AXIS
 GAMEPAD_BINDTYPE_AXIS. More...
 
constexpr GamepadBindingType SDL::GAMEPAD_BINDTYPE_HAT
 GAMEPAD_BINDTYPE_HAT. More...
 

Detailed Description

If you're planning to write your own control configuration screen, this can give you a lot of flexibility, but that's a lot of work, and most things that we consider "joysticks" now are actually console-style gamepads. So SDL provides the gamepad API on top of the lower-level joystick functionality.

The difference between a joystick and a gamepad is that a gamepad tells you where a button or axis is on the device. You don't speak to gamepads in terms of arbitrary numbers like "button 3" or "axis 2" but in standard locations: the d-pad, the shoulder buttons, triggers, A/B/X/Y (or X/O/Square/Triangle, if you will).

One turns a joystick into a gamepad by providing a magic configuration string, which tells SDL the details of a specific device: when you see this specific hardware, if button 2 gets pressed, this is actually D-Pad Up, etc.

SDL has many popular controllers configured out of the box, and users can add their own controller details through an environment variable if it's otherwise unknown to SDL.

In order to use these functions, Init() must have been called with the INIT_GAMEPAD flag. This causes SDL to scan the system for gamepads, and load appropriate drivers.

If you would like to receive gamepad updates while the application is in the background, you should set the following hint before calling Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS

Gamepads support various optional features such as rumble, color LEDs, touchpad, gyro, etc. The support for these features varies depending on the controller and OS support available. You can check for LED and rumble capabilities at runtime by calling Gamepad.GetProperties() and checking the various capability properties. You can check for touchpad by calling Gamepad.GetNumTouchpads() and check for gyro and accelerometer by calling Gamepad.HasSensor().

By default SDL will try to use the most capable driver available, but you can tune which OS drivers to use with the various joystick hints in SDL_hints.h.

Your application should always support gamepad hotplugging. On some platforms like Xbox, Steam Deck, etc., this is a requirement for certification. On other platforms, like macOS and Windows when using Windows.Gaming.Input, controllers may not be available at startup and will come in at some point after you've started processing events.

Typedef Documentation

◆ GamepadAxis

using SDL::GamepadAxis = typedef SDL_GamepadAxis

Thumbstick axis values range from JOYSTICK_AXIS_MIN to JOYSTICK_AXIS_MAX, and are centered within ~8000 of zero, though advanced UI will allow users to set or autodetect the dead zone, which varies between gamepads.

Trigger axis values range from 0 (released) to JOYSTICK_AXIS_MAX (fully pressed) when reported by Gamepad.GetAxis(). Note that this is not the same range that will be reported by the lower-level Joystick.GetAxis().

Since
This enum is available since SDL 3.2.0.

◆ GamepadBinding

using SDL::GamepadBinding = typedef SDL_GamepadBinding

A gamepad has a collection of several bindings, to say, for example, when joystick button number 5 is pressed, that should be treated like the gamepad's "start" button.

SDL has these bindings built-in for many popular controllers, and can add more with a simple text string. Those strings are parsed into a collection of these structs to make it easier to operate on the data.

Since
This struct is available since SDL 3.2.0.
See also
Gamepad.GetBindings

◆ GamepadBindingType

using SDL::GamepadBindingType = typedef SDL_GamepadBindingType

A gamepad is a collection of bindings that map arbitrary joystick buttons, axes and hat switches to specific positions on a generic console-style gamepad. This enum is used as part of GamepadBinding to specify those mappings.

Since
This enum is available since SDL 3.2.0.

◆ GamepadButton

using SDL::GamepadButton = typedef SDL_GamepadButton

For controllers that use a diamond pattern for the face buttons, the south/east/west/north buttons below correspond to the locations in the diamond pattern. For Xbox controllers, this would be A/B/X/Y, for Nintendo Switch controllers, this would be B/A/Y/X, for PlayStation controllers this would be Cross/Circle/Square/Triangle.

For controllers that don't use a diamond pattern for the face buttons, the south/east/west/north buttons indicate the buttons labeled A, B, C, D, or 1, 2, 3, 4, or for controllers that aren't labeled, they are the primary, secondary, etc. buttons.

The activate action is often the south button and the cancel action is often the east button, but in some regions this is reversed, so your game should allow remapping actions based on user preferences.

You can query the labels for the face buttons using Gamepad.GetButtonLabel()

Since
This enum is available since SDL 3.2.0.

◆ GamepadButtonLabel

using SDL::GamepadButtonLabel = typedef SDL_GamepadButtonLabel

This isn't a complete set, just the face buttons to make it easy to show button prompts.

For a complete set, you should look at the button and gamepad type and have a set of symbols that work well with your art style.

Since
This enum is available since SDL 3.2.0.

◆ GamepadType

using SDL::GamepadType = typedef SDL_GamepadType

This type does not necessarily map to first-party controllers from Microsoft/Sony/Nintendo; in many cases, third-party controllers can report as these, either because they were designed for a specific console, or they simply most closely match that console's controllers (does it have A/B/X/Y buttons or X/O/Square/Triangle? Does it have a touchpad? etc).

Function Documentation

◆ AddGamepadMapping()

int SDL::AddGamepadMapping ( StringParam  mapping)
inline

The mapping string has the format "GUID,name,mapping", where GUID is the string value from GUID.ToString(), name is the human readable string for the device and mappings are gamepad mappings to joystick ones. Under Windows there is a reserved GUID of "xinput" that covers all XInput devices. The mapping format for joystick is:

  • bX: a joystick button, index X
  • hX.Y: hat X with value Y
  • aX: axis X of the joystick

Buttons can be used as a gamepad axes and vice versa.

If a device with this GUID is already plugged in, SDL will generate an EVENT_GAMEPAD_ADDED event.

This string shows an example of a valid mapping for a gamepad:

"341a3608000000000000504944564944,Afterglow PS3
Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7"
Parameters
mappingthe mapping string.
Returns
1 if a new mapping is added, 0 if an existing mapping is updated, -1 on failure; call GetError() for more information.
Thread safety:
It is safe to call this function from any thread.
Since
This function is available since SDL 3.2.0.
See also
AddGamepadMappingsFromFile
AddGamepadMappingsFromIO
Gamepad.GetMapping
GetGamepadMappingForGUID
SDL_HINT_GAMECONTROLLERCONFIG
SDL_HINT_GAMECONTROLLERCONFIG_FILE
EVENT_GAMEPAD_ADDED

◆ AddGamepadMappingsFromFile()

int SDL::AddGamepadMappingsFromFile ( StringParam  file)
inline

You can call this function several times, if needed, to load different database files.

If a new mapping is loaded for an already known gamepad GUID, the later version will overwrite the one currently loaded.

Any new mappings for already plugged in controllers will generate EVENT_GAMEPAD_ADDED events.

Mappings not belonging to the current platform or with no platform field specified will be ignored (i.e. mappings for Linux will be ignored in Windows, etc).

Parameters
filethe mappings file to load.
Returns
the number of mappings added or -1 on failure; call GetError() for more information.
Thread safety:
It is safe to call this function from any thread.
Since
This function is available since SDL 3.2.0.
See also
AddGamepadMapping
AddGamepadMappingsFromIO
Gamepad.GetMapping
GetGamepadMappingForGUID
SDL_HINT_GAMECONTROLLERCONFIG
SDL_HINT_GAMECONTROLLERCONFIG_FILE
EVENT_GAMEPAD_ADDED

◆ AddGamepadMappingsFromIO()

int SDL::AddGamepadMappingsFromIO ( IOStreamParam  src,
bool  closeio 
)
inline

You can call this function several times, if needed, to load different database files.

If a new mapping is loaded for an already known gamepad GUID, the later version will overwrite the one currently loaded.

Any new mappings for already plugged in controllers will generate EVENT_GAMEPAD_ADDED events.

Mappings not belonging to the current platform or with no platform field specified will be ignored (i.e. mappings for Linux will be ignored in Windows, etc).

This function will load the text database entirely in memory before processing it, so take this into consideration if you are in a memory constrained environment.

Parameters
srcthe data stream for the mappings to be added.
closeioif true, calls IOStream.Close() on src before returning, even in the case of an error.
Returns
the number of mappings added or -1 on failure; call GetError() for more information.
Thread safety:
It is safe to call this function from any thread.
Since
This function is available since SDL 3.2.0.
See also
AddGamepadMapping
AddGamepadMappingsFromFile
Gamepad.GetMapping
GetGamepadMappingForGUID
SDL_HINT_GAMECONTROLLERCONFIG
SDL_HINT_GAMECONTROLLERCONFIG_FILE
EVENT_GAMEPAD_ADDED

◆ Close()

void SDL::Gamepad::Close ( )
inline
           Gamepad.Gamepad().
Since
This function is available since SDL 3.2.0.
See also
Gamepad.Gamepad

◆ CloseGamepad()

void SDL::CloseGamepad ( GamepadRaw  gamepad)
inline
Parameters
gamepada gamepad identifier previously returned by Gamepad.Gamepad().
Since
This function is available since SDL 3.2.0.
See also
Gamepad.Gamepad

◆ Connected()

bool SDL::Gamepad::Connected ( )
inline
           Gamepad.Gamepad().
Returns
true if the gamepad has been opened and is currently connected, or false if not.
Since
This function is available since SDL 3.2.0.

◆ GamepadConnected()

bool SDL::GamepadConnected ( GamepadParam  gamepad)
inline
Parameters
gamepada gamepad identifier previously returned by Gamepad.Gamepad().
Returns
true if the gamepad has been opened and is currently connected, or false if not.
Since
This function is available since SDL 3.2.0.

◆ GamepadEventsEnabled()

bool SDL::GamepadEventsEnabled ( )
inline

If gamepad events are disabled, you must call UpdateGamepads() yourself and check the state of the gamepad when you want gamepad information.

Returns
true if gamepad events are being processed, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
SetGamepadEventsEnabled

◆ GamepadHasAxis()

bool SDL::GamepadHasAxis ( GamepadParam  gamepad,
GamepadAxis  axis 
)
inline

This merely reports whether the gamepad's mapping defined this axis, as that is all the information SDL has about the physical device.

Parameters
gamepada gamepad.
axisan axis enum value (an GamepadAxis value).
Returns
true if the gamepad has this axis, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.HasButton
Gamepad.GetAxis

◆ GamepadHasButton()

bool SDL::GamepadHasButton ( GamepadParam  gamepad,
GamepadButton  button 
)
inline

This merely reports whether the gamepad's mapping defined this button, as that is all the information SDL has about the physical device.

Parameters
gamepada gamepad.
buttona button enum value (an GamepadButton value).
Returns
true if the gamepad has this button, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.HasAxis

◆ GamepadHasSensor()

bool SDL::GamepadHasSensor ( GamepadParam  gamepad,
SensorType  type 
)
inline
Parameters
gamepadthe gamepad to query.
typethe type of sensor to query.
Returns
true if the sensor exists, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetSensorData
Gamepad.GetSensorDataRate
Gamepad.SetSensorEnabled

◆ GamepadSensorEnabled()

bool SDL::GamepadSensorEnabled ( GamepadParam  gamepad,
SensorType  type 
)
inline
Parameters
gamepadthe gamepad to query.
typethe type of sensor to query.
Returns
true if the sensor is enabled, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.SetSensorEnabled

◆ GetAppleSFSymbolsNameForAxis()

const char * SDL::Gamepad::GetAppleSFSymbolsNameForAxis ( GamepadAxis  axis)
inline
Parameters
axisan axis on the gamepad.
Returns
the sfSymbolsName or nullptr if the name can't be found.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetAppleSFSymbolsNameForButton

◆ GetAppleSFSymbolsNameForButton()

const char * SDL::Gamepad::GetAppleSFSymbolsNameForButton ( GamepadButton  button)
inline
Parameters
buttona button on the gamepad.
Returns
the sfSymbolsName or nullptr if the name can't be found.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetAppleSFSymbolsNameForAxis

◆ GetAxis()

Sint16 SDL::Gamepad::GetAxis ( GamepadAxis  axis)
inline

The axis indices start at index 0.

For thumbsticks, the state is a value ranging from -32768 (up/left) to 32767 (down/right).

Triggers range from 0 when released to 32767 when fully pressed, and never return a negative value. Note that this differs from the value reported by the lower-level Joystick.GetAxis(), which normally uses the full range.

Parameters
axisan axis index (one of the GamepadAxis values).
Returns
axis state (including 0) on success.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.HasAxis
Gamepad.GetButton

◆ GetBindings()

SDL_GamepadBinding ** SDL::Gamepad::GetBindings ( int *  count)
inline
Parameters
counta pointer filled in with the number of bindings returned.
Returns
a nullptr terminated array of pointers to bindings or nullptr on failure; call GetError() for more information. This is a single allocation that should be freed with free() when it is no longer needed.
Since
This function is available since SDL 3.2.0.

◆ GetButton()

bool SDL::Gamepad::GetButton ( GamepadButton  button)
inline
Parameters
buttona button index (one of the GamepadButton values).
Returns
true if the button is pressed, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.HasButton
Gamepad.GetAxis

◆ GetButtonLabel()

GamepadButtonLabel SDL::Gamepad::GetButtonLabel ( GamepadButton  button)
inline
Parameters
buttona button index (one of the GamepadButton values).
Returns
the GamepadButtonLabel enum corresponding to the button label.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadButtonLabelForType

◆ GetConnectionState()

JoystickConnectionState SDL::Gamepad::GetConnectionState ( )
inline
Returns
the connection state on success.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ GetFirmwareVersion()

Uint16 SDL::Gamepad::GetFirmwareVersion ( )
inline

If the firmware version isn't available this function returns 0.

Returns
the gamepad firmware version, or zero if unavailable.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadAppleSFSymbolsNameForAxis()

const char * SDL::GetGamepadAppleSFSymbolsNameForAxis ( GamepadParam  gamepad,
GamepadAxis  axis 
)
inline
Parameters
gamepadthe gamepad to query.
axisan axis on the gamepad.
Returns
the sfSymbolsName or nullptr if the name can't be found.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetAppleSFSymbolsNameForButton

◆ GetGamepadAppleSFSymbolsNameForButton()

const char * SDL::GetGamepadAppleSFSymbolsNameForButton ( GamepadParam  gamepad,
GamepadButton  button 
)
inline
Parameters
gamepadthe gamepad to query.
buttona button on the gamepad.
Returns
the sfSymbolsName or nullptr if the name can't be found.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetAppleSFSymbolsNameForAxis

◆ GetGamepadAxis()

Sint16 SDL::GetGamepadAxis ( GamepadParam  gamepad,
GamepadAxis  axis 
)
inline

The axis indices start at index 0.

For thumbsticks, the state is a value ranging from -32768 (up/left) to 32767 (down/right).

Triggers range from 0 when released to 32767 when fully pressed, and never return a negative value. Note that this differs from the value reported by the lower-level Joystick.GetAxis(), which normally uses the full range.

Parameters
gamepada gamepad.
axisan axis index (one of the GamepadAxis values).
Returns
axis state (including 0) on success.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.HasAxis
Gamepad.GetButton

◆ GetGamepadAxisFromString()

GamepadAxis SDL::GetGamepadAxisFromString ( StringParam  str)
inline

This function is called internally to translate Gamepad mapping strings for the underlying joystick device into the consistent Gamepad mapping. You do not normally need to call this function unless you are parsing Gamepad mappings in your own code.

Note specially that "righttrigger" and "lefttrigger" map to GAMEPAD_AXIS_RIGHT_TRIGGER and GAMEPAD_AXIS_LEFT_TRIGGER, respectively.

Parameters
strstring representing a Gamepad axis.
Returns
the GamepadAxis enum corresponding to the input string, or GAMEPAD_AXIS_INVALID if no match was found.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadStringForAxis

◆ GetGamepadBindings()

SDL_GamepadBinding ** SDL::GetGamepadBindings ( GamepadParam  gamepad,
int *  count 
)
inline
Parameters
gamepada gamepad.
counta pointer filled in with the number of bindings returned.
Returns
a nullptr terminated array of pointers to bindings or nullptr on failure; call GetError() for more information. This is a single allocation that should be freed with free() when it is no longer needed.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadButton()

bool SDL::GetGamepadButton ( GamepadParam  gamepad,
GamepadButton  button 
)
inline
Parameters
gamepada gamepad.
buttona button index (one of the GamepadButton values).
Returns
true if the button is pressed, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.HasButton
Gamepad.GetAxis

◆ GetGamepadButtonFromString()

GamepadButton SDL::GetGamepadButtonFromString ( StringParam  str)
inline

This function is called internally to translate Gamepad mapping strings for the underlying joystick device into the consistent Gamepad mapping. You do not normally need to call this function unless you are parsing Gamepad mappings in your own code.

Parameters
strstring representing a Gamepad axis.
Returns
the GamepadButton enum corresponding to the input string, or GAMEPAD_BUTTON_INVALID if no match was found.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadStringForButton

◆ GetGamepadButtonLabel()

GamepadButtonLabel SDL::GetGamepadButtonLabel ( GamepadParam  gamepad,
GamepadButton  button 
)
inline
Parameters
gamepada gamepad.
buttona button index (one of the GamepadButton values).
Returns
the GamepadButtonLabel enum corresponding to the button label.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadButtonLabelForType

◆ GetGamepadButtonLabelForType()

GamepadButtonLabel SDL::GetGamepadButtonLabelForType ( GamepadType  type,
GamepadButton  button 
)
inline
Parameters
typethe type of gamepad to check.
buttona button index (one of the GamepadButton values).
Returns
the GamepadButtonLabel enum corresponding to the button label.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetButtonLabel

◆ GetGamepadConnectionState()

JoystickConnectionState SDL::GetGamepadConnectionState ( GamepadParam  gamepad)
inline
Parameters
gamepadthe gamepad object to query.
Returns
the connection state on success.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadFirmwareVersion()

Uint16 SDL::GetGamepadFirmwareVersion ( GamepadParam  gamepad)
inline

If the firmware version isn't available this function returns 0.

Parameters
gamepadthe gamepad object to query.
Returns
the gamepad firmware version, or zero if unavailable.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadFromID()

GamepadRef SDL::GetGamepadFromID ( JoystickID  instance_id)
inline
Parameters
instance_idthe joystick instance ID of the gamepad.
Returns
an Gamepad on success.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadFromPlayerIndex()

GamepadRef SDL::GetGamepadFromPlayerIndex ( int  player_index)
inline
Parameters
player_indexthe player index, which different from the instance ID.
Returns
the Gamepad associated with a player index.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetPlayerIndex
Gamepad.SetPlayerIndex

◆ GetGamepadGUIDForID()

GUID SDL::GetGamepadGUIDForID ( JoystickID  instance_id)
inline

This can be called before any gamepads are opened.

Parameters
instance_idthe joystick instance ID.
Returns
the GUID of the selected gamepad. If called on an invalid index, this function returns a zero GUID.
Since
This function is available since SDL 3.2.0.
See also
GUID.ToString
GetGamepads

◆ GetGamepadID()

JoystickID SDL::GetGamepadID ( GamepadParam  gamepad)
inline
Parameters
gamepada gamepad identifier previously returned by Gamepad.Gamepad().
Returns
the instance ID of the specified gamepad on success.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadJoystick()

JoystickRef SDL::GetGamepadJoystick ( GamepadParam  gamepad)
inline

This function will give you a Joystick object, which allows you to use the Joystick functions with a Gamepad object. This would be useful for getting a joystick's position at any given time, even if it hasn't moved (moving it would produce an event, which would have the axis' value).

The pointer returned is owned by the Gamepad. You should not call Joystick.Close() on it, for example, since doing so will likely cause SDL to crash.

Parameters
gamepadthe gamepad object that you want to get a joystick from.
Returns
an Joystick object, or nullptr on failure; call GetError() for more information.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadMapping()

char * SDL::GetGamepadMapping ( GamepadParam  gamepad)
inline

Details about mappings are discussed with AddGamepadMapping().

Parameters
gamepadthe gamepad you want to get the current mapping for.
Returns
a string that has the gamepad's mapping or nullptr if no mapping is available; call GetError() for more information. This should be freed with free() when it is no longer needed.
Since
This function is available since SDL 3.2.0.
See also
AddGamepadMapping
GetGamepadMappingForID
GetGamepadMappingForGUID
SetGamepadMapping

◆ GetGamepadMappingForGUID()

char * SDL::GetGamepadMappingForGUID ( GUID  guid)
inline
Parameters
guida structure containing the GUID for which a mapping is desired.
Returns
a mapping string or nullptr on failure; call GetError() for more information. This should be freed with free() when it is no longer needed.
Since
This function is available since SDL 3.2.0.
See also
JoystickID.GetJoystickGUIDForID
Joystick.GetGUID

◆ GetGamepadMappingForID()

char * SDL::GetGamepadMappingForID ( JoystickID  instance_id)
inline

This can be called before any gamepads are opened.

Parameters
instance_idthe joystick instance ID.
Returns
the mapping string. Returns nullptr if no mapping is available. This should be freed with free() when it is no longer needed.
Since
This function is available since SDL 3.2.0.
See also
GetGamepads
Gamepad.GetMapping

◆ GetGamepadMappings()

char ** SDL::GetGamepadMappings ( int *  count)
inline
Parameters
counta pointer filled in with the number of mappings returned, can be nullptr.
Returns
an array of the mapping strings, nullptr-terminated, or nullptr on failure; call GetError() for more information. This is a single allocation that should be freed with free() when it is no longer needed.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadName()

const char * SDL::GetGamepadName ( GamepadParam  gamepad)
inline
Parameters
gamepada gamepad identifier previously returned by Gamepad.Gamepad().
Returns
the implementation dependent name for the gamepad, or nullptr if there is no name or the identifier passed is invalid.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadNameForID

◆ GetGamepadNameForID()

const char * SDL::GetGamepadNameForID ( JoystickID  instance_id)
inline

This can be called before any gamepads are opened.

Parameters
instance_idthe joystick instance ID.
Returns
the name of the selected gamepad. If no name can be found, this function returns nullptr; call GetError() for more information.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetName
GetGamepads

◆ GetGamepadPath()

const char * SDL::GetGamepadPath ( GamepadParam  gamepad)
inline
Parameters
gamepada gamepad identifier previously returned by Gamepad.Gamepad().
Returns
the implementation dependent path for the gamepad, or nullptr if there is no path or the identifier passed is invalid.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadPathForID

◆ GetGamepadPathForID()

const char * SDL::GetGamepadPathForID ( JoystickID  instance_id)
inline

This can be called before any gamepads are opened.

Parameters
instance_idthe joystick instance ID.
Returns
the path of the selected gamepad. If no path can be found, this function returns nullptr; call GetError() for more information.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetPath
GetGamepads

◆ GetGamepadPlayerIndex()

int SDL::GetGamepadPlayerIndex ( GamepadParam  gamepad)
inline

For XInput gamepads this returns the XInput user index.

Parameters
gamepadthe gamepad object to query.
Returns
the player index for gamepad, or -1 if it's not available.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.SetPlayerIndex

◆ GetGamepadPlayerIndexForID()

int SDL::GetGamepadPlayerIndexForID ( JoystickID  instance_id)
inline

This can be called before any gamepads are opened.

Parameters
instance_idthe joystick instance ID.
Returns
the player index of a gamepad, or -1 if it's not available.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetPlayerIndex
GetGamepads

◆ GetGamepadPowerInfo()

PowerState SDL::GetGamepadPowerInfo ( GamepadParam  gamepad,
int *  percent 
)
inline

You should never take a battery status as absolute truth. Batteries (especially failing batteries) are delicate hardware, and the values reported here are best estimates based on what that hardware reports. It's not uncommon for older batteries to lose stored power much faster than it reports, or completely drain when reporting it has 20 percent left, etc.

Parameters
gamepadthe gamepad object to query.
percenta pointer filled in with the percentage of battery life left, between 0 and 100, or nullptr to ignore. This will be filled in with -1 we can't determine a value or there is no battery.
Returns
the current battery state.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadProduct()

Uint16 SDL::GetGamepadProduct ( GamepadParam  gamepad)
inline

If the product ID isn't available this function returns 0.

Parameters
gamepadthe gamepad object to query.
Returns
the USB product ID, or zero if unavailable.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadProductForID

◆ GetGamepadProductForID()

Uint16 SDL::GetGamepadProductForID ( JoystickID  instance_id)
inline

This can be called before any gamepads are opened. If the product ID isn't available this function returns 0.

Parameters
instance_idthe joystick instance ID.
Returns
the USB product ID of the selected gamepad. If called on an invalid index, this function returns zero.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetProduct
GetGamepads

◆ GetGamepadProductVersion()

Uint16 SDL::GetGamepadProductVersion ( GamepadParam  gamepad)
inline

If the product version isn't available this function returns 0.

Parameters
gamepadthe gamepad object to query.
Returns
the USB product version, or zero if unavailable.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadProductVersionForID

◆ GetGamepadProductVersionForID()

Uint16 SDL::GetGamepadProductVersionForID ( JoystickID  instance_id)
inline

This can be called before any gamepads are opened. If the product version isn't available this function returns 0.

Parameters
instance_idthe joystick instance ID.
Returns
the product version of the selected gamepad. If called on an invalid index, this function returns zero.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetProductVersion
GetGamepads

◆ GetGamepadProperties()

PropertiesRef SDL::GetGamepadProperties ( GamepadParam  gamepad)
inline

These properties are shared with the underlying joystick object.

The following read-only properties are provided by SDL:

  • prop::GamepadCap.MONO_LED_BOOLEAN: true if this gamepad has an LED that has adjustable brightness
  • prop::GamepadCap.RGB_LED_BOOLEAN: true if this gamepad has an LED that has adjustable color
  • prop::GamepadCap.PLAYER_LED_BOOLEAN: true if this gamepad has a player LED
  • prop::GamepadCap.RUMBLE_BOOLEAN: true if this gamepad has left/right rumble
  • prop::GamepadCap.TRIGGER_RUMBLE_BOOLEAN: true if this gamepad has simple trigger rumble
Parameters
gamepada gamepad identifier previously returned by Gamepad.Gamepad().
Returns
a valid property ID on success.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ GetGamepads()

OwnArray< JoystickID > SDL::GetGamepads ( )
inline
Returns
a 0 terminated array of joystick instance IDs or nullptr on failure; call GetError() for more information. This should be freed with free() when it is no longer needed.
Since
This function is available since SDL 3.2.0.
See also
HasGamepad
Gamepad.Gamepad

◆ GetGamepadSensorData()

void SDL::GetGamepadSensorData ( GamepadParam  gamepad,
SensorType  type,
float *  data,
int  num_values 
)
inline

The number of values and interpretation of the data is sensor dependent. See SDL_sensor.h for the details for each type of sensor.

Parameters
gamepadthe gamepad to query.
typethe type of sensor to query.
dataa pointer filled with the current sensor state.
num_valuesthe number of values to write to data.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadSensorDataRate()

float SDL::GetGamepadSensorDataRate ( GamepadParam  gamepad,
SensorType  type 
)
inline
Parameters
gamepadthe gamepad to query.
typethe type of sensor to query.
Returns
the data rate, or 0.0f if the data rate is not available.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadSerial()

const char * SDL::GetGamepadSerial ( GamepadParam  gamepad)
inline

Returns the serial number of the gamepad, or nullptr if it is not available.

Parameters
gamepadthe gamepad object to query.
Returns
the serial number, or nullptr if unavailable.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadSteamHandle()

Uint64 SDL::GetGamepadSteamHandle ( GamepadParam  gamepad)
inline

Returns an InputHandle_t for the gamepad that can be used with Steam Input API: https://partner.steamgames.com/doc/api/ISteamInput

Parameters
gamepadthe gamepad object to query.
Returns
the gamepad handle, or 0 if unavailable.
Since
This function is available since SDL 3.2.0.

◆ GetGamepadStringForAxis()

const char * SDL::GetGamepadStringForAxis ( GamepadAxis  axis)
inline
Parameters
axisan enum value for a given GamepadAxis.
Returns
a string for the given axis, or nullptr if an invalid axis is specified. The string returned is of the format used by Gamepad mapping strings.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadAxisFromString

◆ GetGamepadStringForButton()

const char * SDL::GetGamepadStringForButton ( GamepadButton  button)
inline
Parameters
buttonan enum value for a given GamepadButton.
Returns
a string for the given button, or nullptr if an invalid button is specified. The string returned is of the format used by Gamepad mapping strings.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadButtonFromString

◆ GetGamepadStringForType()

const char * SDL::GetGamepadStringForType ( GamepadType  type)
inline
Parameters
typean enum value for a given GamepadType.
Returns
a string for the given type, or nullptr if an invalid type is specified. The string returned is of the format used by Gamepad mapping strings.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadTypeFromString

◆ GetGamepadTouchpadFinger()

void SDL::GetGamepadTouchpadFinger ( GamepadParam  gamepad,
int  touchpad,
int  finger,
bool *  down,
float *  x,
float *  y,
float *  pressure 
)
inline
Parameters
gamepada gamepad.
touchpada touchpad.
fingera finger.
downa pointer filled with true if the finger is down, false otherwise, may be nullptr.
xa pointer filled with the x position, normalized 0 to 1, with the origin in the upper left, may be nullptr.
ya pointer filled with the y position, normalized 0 to 1, with the origin in the upper left, may be nullptr.
pressurea pointer filled with pressure value, may be nullptr.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetNumTouchpadFingers

◆ GetGamepadType()

GamepadType SDL::GetGamepadType ( GamepadParam  gamepad)
inline
Parameters
gamepadthe gamepad object to query.
Returns
the gamepad type, or GAMEPAD_TYPE_UNKNOWN if it's not available.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadTypeForID

◆ GetGamepadTypeForID()

GamepadType SDL::GetGamepadTypeForID ( JoystickID  instance_id)
inline

This can be called before any gamepads are opened.

Parameters
instance_idthe joystick instance ID.
Returns
the gamepad type.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetType
GetGamepads
GetRealGamepadTypeForID

◆ GetGamepadTypeFromString()

GamepadType SDL::GetGamepadTypeFromString ( StringParam  str)
inline

This function is called internally to translate Gamepad mapping strings for the underlying joystick device into the consistent Gamepad mapping. You do not normally need to call this function unless you are parsing Gamepad mappings in your own code.

Parameters
strstring representing a GamepadType type.
Returns
the GamepadType enum corresponding to the input string, or GAMEPAD_TYPE_UNKNOWN if no match was found.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadStringForType

◆ GetGamepadVendor()

Uint16 SDL::GetGamepadVendor ( GamepadParam  gamepad)
inline

If the vendor ID isn't available this function returns 0.

Parameters
gamepadthe gamepad object to query.
Returns
the USB vendor ID, or zero if unavailable.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadVendorForID

◆ GetGamepadVendorForID()

Uint16 SDL::GetGamepadVendorForID ( JoystickID  instance_id)
inline

This can be called before any gamepads are opened. If the vendor ID isn't available this function returns 0.

Parameters
instance_idthe joystick instance ID.
Returns
the USB vendor ID of the selected gamepad. If called on an invalid index, this function returns zero.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetVendor
GetGamepads

◆ GetID()

JoystickID SDL::Gamepad::GetID ( )
inline
           Gamepad.Gamepad().
Returns
the instance ID of the specified gamepad on success.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ GetJoystick()

JoystickRef SDL::Gamepad::GetJoystick ( )
inline

This function will give you a Joystick object, which allows you to use the Joystick functions with a Gamepad object. This would be useful for getting a joystick's position at any given time, even if it hasn't moved (moving it would produce an event, which would have the axis' value).

The pointer returned is owned by the Gamepad. You should not call Joystick.Close() on it, for example, since doing so will likely cause SDL to crash.

Returns
an Joystick object, or nullptr on failure; call GetError() for more information.
Since
This function is available since SDL 3.2.0.

◆ GetMapping()

char * SDL::Gamepad::GetMapping ( )
inline

Details about mappings are discussed with AddGamepadMapping().

Returns
a string that has the gamepad's mapping or nullptr if no mapping is available; call GetError() for more information. This should be freed with free() when it is no longer needed.
Since
This function is available since SDL 3.2.0.
See also
AddGamepadMapping
GetGamepadMappingForID
GetGamepadMappingForGUID
SetGamepadMapping

◆ GetName()

const char * SDL::Gamepad::GetName ( )
inline
           Gamepad.Gamepad().
Returns
the implementation dependent name for the gamepad, or nullptr if there is no name or the identifier passed is invalid.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadNameForID

◆ GetNumGamepadTouchpadFingers()

int SDL::GetNumGamepadTouchpadFingers ( GamepadParam  gamepad,
int  touchpad 
)
inline
Parameters
gamepada gamepad.
touchpada touchpad.
Returns
number of supported simultaneous fingers.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetTouchpadFinger
Gamepad.GetNumTouchpads

◆ GetNumGamepadTouchpads()

int SDL::GetNumGamepadTouchpads ( GamepadParam  gamepad)
inline
Parameters
gamepada gamepad.
Returns
number of touchpads.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetNumTouchpadFingers

◆ GetNumTouchpadFingers()

int SDL::Gamepad::GetNumTouchpadFingers ( int  touchpad)
inline
Parameters
touchpada touchpad.
Returns
number of supported simultaneous fingers.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetTouchpadFinger
Gamepad.GetNumTouchpads

◆ GetNumTouchpads()

int SDL::Gamepad::GetNumTouchpads ( )
inline
Returns
number of touchpads.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetNumTouchpadFingers

◆ GetPath()

const char * SDL::Gamepad::GetPath ( )
inline
           Gamepad.Gamepad().
Returns
the implementation dependent path for the gamepad, or nullptr if there is no path or the identifier passed is invalid.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadPathForID

◆ GetPlayerIndex()

int SDL::Gamepad::GetPlayerIndex ( )
inline

For XInput gamepads this returns the XInput user index.

Returns
the player index for gamepad, or -1 if it's not available.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.SetPlayerIndex

◆ GetPowerInfo()

PowerState SDL::Gamepad::GetPowerInfo ( int *  percent)
inline

You should never take a battery status as absolute truth. Batteries (especially failing batteries) are delicate hardware, and the values reported here are best estimates based on what that hardware reports. It's not uncommon for older batteries to lose stored power much faster than it reports, or completely drain when reporting it has 20 percent left, etc.

Parameters
percenta pointer filled in with the percentage of battery life left, between 0 and 100, or nullptr to ignore. This will be filled in with -1 we can't determine a value or there is no battery.
Returns
the current battery state.
Since
This function is available since SDL 3.2.0.

◆ GetProduct()

Uint16 SDL::Gamepad::GetProduct ( )
inline

If the product ID isn't available this function returns 0.

Returns
the USB product ID, or zero if unavailable.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadProductForID

◆ GetProductVersion()

Uint16 SDL::Gamepad::GetProductVersion ( )
inline

If the product version isn't available this function returns 0.

Returns
the USB product version, or zero if unavailable.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadProductVersionForID

◆ GetProperties()

PropertiesRef SDL::Gamepad::GetProperties ( )
inline

These properties are shared with the underlying joystick object.

The following read-only properties are provided by SDL:

  • prop::GamepadCap.MONO_LED_BOOLEAN: true if this gamepad has an LED that has adjustable brightness
  • prop::GamepadCap.RGB_LED_BOOLEAN: true if this gamepad has an LED that has adjustable color
  • prop::GamepadCap.PLAYER_LED_BOOLEAN: true if this gamepad has a player LED
  • prop::GamepadCap.RUMBLE_BOOLEAN: true if this gamepad has left/right rumble
  • prop::GamepadCap.TRIGGER_RUMBLE_BOOLEAN: true if this gamepad has simple trigger rumble
             Gamepad.Gamepad().
    
    Returns
    a valid property ID on success.
    Exceptions
    Erroron failure.
    Since
    This function is available since SDL 3.2.0.

◆ GetRealGamepadType()

GamepadType SDL::GetRealGamepadType ( GamepadParam  gamepad)
inline
Parameters
gamepadthe gamepad object to query.
Returns
the gamepad type, or GAMEPAD_TYPE_UNKNOWN if it's not available.
Since
This function is available since SDL 3.2.0.
See also
GetRealGamepadTypeForID

◆ GetRealGamepadTypeForID()

GamepadType SDL::GetRealGamepadTypeForID ( JoystickID  instance_id)
inline

This can be called before any gamepads are opened.

Parameters
instance_idthe joystick instance ID.
Returns
the gamepad type.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadTypeForID
GetGamepads
Gamepad.GetRealType

◆ GetRealType()

GamepadType SDL::Gamepad::GetRealType ( )
inline
Returns
the gamepad type, or GAMEPAD_TYPE_UNKNOWN if it's not available.
Since
This function is available since SDL 3.2.0.
See also
GetRealGamepadTypeForID

◆ GetSensorData()

void SDL::Gamepad::GetSensorData ( SensorType  type,
float *  data,
int  num_values 
)
inline

The number of values and interpretation of the data is sensor dependent. See SDL_sensor.h for the details for each type of sensor.

Parameters
typethe type of sensor to query.
dataa pointer filled with the current sensor state.
num_valuesthe number of values to write to data.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ GetSensorDataRate()

float SDL::Gamepad::GetSensorDataRate ( SensorType  type)
inline
Parameters
typethe type of sensor to query.
Returns
the data rate, or 0.0f if the data rate is not available.
Since
This function is available since SDL 3.2.0.

◆ GetSerial()

const char * SDL::Gamepad::GetSerial ( )
inline

Returns the serial number of the gamepad, or nullptr if it is not available.

Returns
the serial number, or nullptr if unavailable.
Since
This function is available since SDL 3.2.0.

◆ GetSteamHandle()

Uint64 SDL::Gamepad::GetSteamHandle ( )
inline

Returns an InputHandle_t for the gamepad that can be used with Steam Input API: https://partner.steamgames.com/doc/api/ISteamInput

Returns
the gamepad handle, or 0 if unavailable.
Since
This function is available since SDL 3.2.0.

◆ GetTouchpadFinger()

void SDL::Gamepad::GetTouchpadFinger ( int  touchpad,
int  finger,
bool *  down,
float *  x,
float *  y,
float *  pressure 
)
inline
Parameters
touchpada touchpad.
fingera finger.
downa pointer filled with true if the finger is down, false otherwise, may be nullptr.
xa pointer filled with the x position, normalized 0 to 1, with the origin in the upper left, may be nullptr.
ya pointer filled with the y position, normalized 0 to 1, with the origin in the upper left, may be nullptr.
pressurea pointer filled with pressure value, may be nullptr.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetNumTouchpadFingers

◆ GetType()

GamepadType SDL::Gamepad::GetType ( )
inline
Returns
the gamepad type, or GAMEPAD_TYPE_UNKNOWN if it's not available.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadTypeForID

◆ GetVendor()

Uint16 SDL::Gamepad::GetVendor ( )
inline

If the vendor ID isn't available this function returns 0.

Returns
the USB vendor ID, or zero if unavailable.
Since
This function is available since SDL 3.2.0.
See also
GetGamepadVendorForID

◆ HasAxis()

bool SDL::Gamepad::HasAxis ( GamepadAxis  axis)
inline

This merely reports whether the gamepad's mapping defined this axis, as that is all the information SDL has about the physical device.

Parameters
axisan axis enum value (an GamepadAxis value).
Returns
true if the gamepad has this axis, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.HasButton
Gamepad.GetAxis

◆ HasButton()

bool SDL::Gamepad::HasButton ( GamepadButton  button)
inline

This merely reports whether the gamepad's mapping defined this button, as that is all the information SDL has about the physical device.

Parameters
buttona button enum value (an GamepadButton value).
Returns
true if the gamepad has this button, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.HasAxis

◆ HasGamepad()

bool SDL::HasGamepad ( )
inline
Returns
true if a gamepad is connected, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
GetGamepads

◆ HasSensor()

bool SDL::Gamepad::HasSensor ( SensorType  type)
inline
Parameters
typethe type of sensor to query.
Returns
true if the sensor exists, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetSensorData
Gamepad.GetSensorDataRate
Gamepad.SetSensorEnabled

◆ IsGamepad()

bool SDL::IsGamepad ( JoystickID  instance_id)
inline
Parameters
instance_idthe joystick instance ID.
Returns
true if the given joystick is supported by the gamepad interface, false if it isn't or it's an invalid index.
Since
This function is available since SDL 3.2.0.
See also
GetJoysticks
Gamepad.Gamepad

◆ OpenGamepad()

Gamepad SDL::OpenGamepad ( JoystickID  instance_id)
inline
Parameters
instance_idthe joystick instance ID.
Returns
a gamepad identifier or nullptr if an error occurred; call GetError() for more information.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.Close
IsGamepad

◆ ReloadGamepadMappings()

void SDL::ReloadGamepadMappings ( )
inline

This will generate gamepad events as needed if device mappings change.

Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ Rumble()

void SDL::Gamepad::Rumble ( Uint16  low_frequency_rumble,
Uint16  high_frequency_rumble,
Uint32  duration_ms 
)
inline

Each call to this function cancels any previous rumble effect, and calling it with 0 intensity stops any rumbling.

This function requires you to process SDL events or call UpdateJoysticks() to update rumble state.

Parameters
low_frequency_rumblethe intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF.
high_frequency_rumblethe intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF.
duration_msthe duration of the rumble effect, in milliseconds.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ RumbleGamepad()

void SDL::RumbleGamepad ( GamepadParam  gamepad,
Uint16  low_frequency_rumble,
Uint16  high_frequency_rumble,
Uint32  duration_ms 
)
inline

Each call to this function cancels any previous rumble effect, and calling it with 0 intensity stops any rumbling.

This function requires you to process SDL events or call UpdateJoysticks() to update rumble state.

Parameters
gamepadthe gamepad to vibrate.
low_frequency_rumblethe intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF.
high_frequency_rumblethe intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF.
duration_msthe duration of the rumble effect, in milliseconds.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ RumbleGamepadTriggers()

void SDL::RumbleGamepadTriggers ( GamepadParam  gamepad,
Uint16  left_rumble,
Uint16  right_rumble,
Uint32  duration_ms 
)
inline

Each call to this function cancels any previous trigger rumble effect, and calling it with 0 intensity stops any rumbling.

Note that this is rumbling of the triggers and not the gamepad as a whole. This is currently only supported on Xbox One gamepads. If you want the (more common) whole-gamepad rumble, use Gamepad.Rumble() instead.

This function requires you to process SDL events or call UpdateJoysticks() to update rumble state.

Parameters
gamepadthe gamepad to vibrate.
left_rumblethe intensity of the left trigger rumble motor, from 0 to 0xFFFF.
right_rumblethe intensity of the right trigger rumble motor, from 0 to 0xFFFF.
duration_msthe duration of the rumble effect, in milliseconds.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.Rumble

◆ RumbleTriggers()

void SDL::Gamepad::RumbleTriggers ( Uint16  left_rumble,
Uint16  right_rumble,
Uint32  duration_ms 
)
inline

Each call to this function cancels any previous trigger rumble effect, and calling it with 0 intensity stops any rumbling.

Note that this is rumbling of the triggers and not the gamepad as a whole. This is currently only supported on Xbox One gamepads. If you want the (more common) whole-gamepad rumble, use Gamepad.Rumble() instead.

This function requires you to process SDL events or call UpdateJoysticks() to update rumble state.

Parameters
left_rumblethe intensity of the left trigger rumble motor, from 0 to 0xFFFF.
right_rumblethe intensity of the right trigger rumble motor, from 0 to 0xFFFF.
duration_msthe duration of the rumble effect, in milliseconds.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.Rumble

◆ SendEffect()

void SDL::Gamepad::SendEffect ( const void *  data,
int  size 
)
inline
Parameters
datathe data to send to the gamepad.
sizethe size of the data to send to the gamepad.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ SendGamepadEffect()

void SDL::SendGamepadEffect ( GamepadParam  gamepad,
const void *  data,
int  size 
)
inline
Parameters
gamepadthe gamepad to affect.
datathe data to send to the gamepad.
sizethe size of the data to send to the gamepad.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ SensorEnabled()

bool SDL::Gamepad::SensorEnabled ( SensorType  type)
inline
Parameters
typethe type of sensor to query.
Returns
true if the sensor is enabled, false otherwise.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.SetSensorEnabled

◆ SetGamepadEventsEnabled()

void SDL::SetGamepadEventsEnabled ( bool  enabled)
inline

If gamepad events are disabled, you must call UpdateGamepads() yourself and check the state of the gamepad when you want gamepad information.

Parameters
enabledwhether to process gamepad events or not.
Since
This function is available since SDL 3.2.0.
See also
GamepadEventsEnabled
UpdateGamepads

◆ SetGamepadLED()

void SDL::SetGamepadLED ( GamepadParam  gamepad,
Uint8  red,
Uint8  green,
Uint8  blue 
)
inline

An example of a joystick LED is the light on the back of a PlayStation 4's DualShock 4 controller.

For gamepads with a single color LED, the maximum of the RGB values will be used as the LED brightness.

Parameters
gamepadthe gamepad to update.
redthe intensity of the red LED.
greenthe intensity of the green LED.
bluethe intensity of the blue LED.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ SetGamepadMapping()

void SDL::SetGamepadMapping ( JoystickID  instance_id,
StringParam  mapping 
)
inline

Details about mappings are discussed with AddGamepadMapping().

Parameters
instance_idthe joystick instance ID.
mappingthe mapping to use for this device, or nullptr to clear the mapping.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
AddGamepadMapping
Gamepad.GetMapping

◆ SetGamepadPlayerIndex()

void SDL::SetGamepadPlayerIndex ( GamepadParam  gamepad,
int  player_index 
)
inline
Parameters
gamepadthe gamepad object to adjust.
player_indexplayer index to assign to this gamepad, or -1 to clear the player index and turn off player LEDs.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetPlayerIndex

◆ SetGamepadSensorEnabled()

void SDL::SetGamepadSensorEnabled ( GamepadParam  gamepad,
SensorType  type,
bool  enabled 
)
inline
Parameters
gamepadthe gamepad to update.
typethe type of sensor to enable/disable.
enabledwhether data reporting should be enabled.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.HasSensor
Gamepad.SensorEnabled

◆ SetLED()

void SDL::Gamepad::SetLED ( Uint8  red,
Uint8  green,
Uint8  blue 
)
inline

An example of a joystick LED is the light on the back of a PlayStation 4's DualShock 4 controller.

For gamepads with a single color LED, the maximum of the RGB values will be used as the LED brightness.

Parameters
redthe intensity of the red LED.
greenthe intensity of the green LED.
bluethe intensity of the blue LED.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.

◆ SetPlayerIndex()

void SDL::Gamepad::SetPlayerIndex ( int  player_index)
inline
Parameters
player_indexplayer index to assign to this gamepad, or -1 to clear the player index and turn off player LEDs.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.GetPlayerIndex

◆ SetSensorEnabled()

void SDL::Gamepad::SetSensorEnabled ( SensorType  type,
bool  enabled 
)
inline
Parameters
typethe type of sensor to enable/disable.
enabledwhether data reporting should be enabled.
Exceptions
Erroron failure.
Since
This function is available since SDL 3.2.0.
See also
Gamepad.HasSensor
Gamepad.SensorEnabled

◆ UpdateGamepads()

void SDL::UpdateGamepads ( )
inline

This function is called automatically by the event loop if events are enabled. Under such circumstances, it will not be necessary to call this function.

Since
This function is available since SDL 3.2.0.

Variable Documentation

◆ GAMEPAD_AXIS_COUNT

constexpr GamepadAxis SDL::GAMEPAD_AXIS_COUNT
constexpr
Initial value:
=
SDL_GAMEPAD_AXIS_COUNT

◆ GAMEPAD_AXIS_INVALID

constexpr GamepadAxis SDL::GAMEPAD_AXIS_INVALID
constexpr
Initial value:
=
SDL_GAMEPAD_AXIS_INVALID

◆ GAMEPAD_AXIS_LEFT_TRIGGER

constexpr GamepadAxis SDL::GAMEPAD_AXIS_LEFT_TRIGGER
constexpr
Initial value:
=
SDL_GAMEPAD_AXIS_LEFT_TRIGGER

◆ GAMEPAD_AXIS_LEFTX

constexpr GamepadAxis SDL::GAMEPAD_AXIS_LEFTX
constexpr
Initial value:
=
SDL_GAMEPAD_AXIS_LEFTX

◆ GAMEPAD_AXIS_LEFTY

constexpr GamepadAxis SDL::GAMEPAD_AXIS_LEFTY
constexpr
Initial value:
=
SDL_GAMEPAD_AXIS_LEFTY

◆ GAMEPAD_AXIS_RIGHT_TRIGGER

constexpr GamepadAxis SDL::GAMEPAD_AXIS_RIGHT_TRIGGER
constexpr
Initial value:
=
SDL_GAMEPAD_AXIS_RIGHT_TRIGGER

◆ GAMEPAD_AXIS_RIGHTX

constexpr GamepadAxis SDL::GAMEPAD_AXIS_RIGHTX
constexpr
Initial value:
=
SDL_GAMEPAD_AXIS_RIGHTX

◆ GAMEPAD_AXIS_RIGHTY

constexpr GamepadAxis SDL::GAMEPAD_AXIS_RIGHTY
constexpr
Initial value:
=
SDL_GAMEPAD_AXIS_RIGHTY

◆ GAMEPAD_BINDTYPE_AXIS

constexpr GamepadBindingType SDL::GAMEPAD_BINDTYPE_AXIS
constexpr
Initial value:
=
SDL_GAMEPAD_BINDTYPE_AXIS

◆ GAMEPAD_BINDTYPE_BUTTON

constexpr GamepadBindingType SDL::GAMEPAD_BINDTYPE_BUTTON
constexpr
Initial value:
=
SDL_GAMEPAD_BINDTYPE_BUTTON

◆ GAMEPAD_BINDTYPE_HAT

constexpr GamepadBindingType SDL::GAMEPAD_BINDTYPE_HAT
constexpr
Initial value:
=
SDL_GAMEPAD_BINDTYPE_HAT

◆ GAMEPAD_BINDTYPE_NONE

constexpr GamepadBindingType SDL::GAMEPAD_BINDTYPE_NONE
constexpr
Initial value:
=
SDL_GAMEPAD_BINDTYPE_NONE

◆ GAMEPAD_BUTTON_BACK

constexpr GamepadButton SDL::GAMEPAD_BUTTON_BACK
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_BACK

◆ GAMEPAD_BUTTON_COUNT

constexpr GamepadButton SDL::GAMEPAD_BUTTON_COUNT
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_COUNT

◆ GAMEPAD_BUTTON_DPAD_DOWN

constexpr GamepadButton SDL::GAMEPAD_BUTTON_DPAD_DOWN
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_DPAD_DOWN

◆ GAMEPAD_BUTTON_DPAD_LEFT

constexpr GamepadButton SDL::GAMEPAD_BUTTON_DPAD_LEFT
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_DPAD_LEFT

◆ GAMEPAD_BUTTON_DPAD_RIGHT

constexpr GamepadButton SDL::GAMEPAD_BUTTON_DPAD_RIGHT
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_DPAD_RIGHT

◆ GAMEPAD_BUTTON_DPAD_UP

constexpr GamepadButton SDL::GAMEPAD_BUTTON_DPAD_UP
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_DPAD_UP

◆ GAMEPAD_BUTTON_EAST

constexpr GamepadButton SDL::GAMEPAD_BUTTON_EAST
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_EAST

◆ GAMEPAD_BUTTON_GUIDE

constexpr GamepadButton SDL::GAMEPAD_BUTTON_GUIDE
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_GUIDE

◆ GAMEPAD_BUTTON_INVALID

constexpr GamepadButton SDL::GAMEPAD_BUTTON_INVALID
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_INVALID

◆ GAMEPAD_BUTTON_LABEL_A

constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_A
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LABEL_A

◆ GAMEPAD_BUTTON_LABEL_B

constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_B
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LABEL_B

◆ GAMEPAD_BUTTON_LABEL_CIRCLE

constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_CIRCLE
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LABEL_CIRCLE

◆ GAMEPAD_BUTTON_LABEL_CROSS

constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_CROSS
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LABEL_CROSS

◆ GAMEPAD_BUTTON_LABEL_SQUARE

constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_SQUARE
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LABEL_SQUARE

◆ GAMEPAD_BUTTON_LABEL_TRIANGLE

constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_TRIANGLE
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LABEL_TRIANGLE

◆ GAMEPAD_BUTTON_LABEL_UNKNOWN

constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_UNKNOWN
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LABEL_UNKNOWN

◆ GAMEPAD_BUTTON_LABEL_X

constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_X
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LABEL_X

◆ GAMEPAD_BUTTON_LABEL_Y

constexpr GamepadButtonLabel SDL::GAMEPAD_BUTTON_LABEL_Y
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LABEL_Y

◆ GAMEPAD_BUTTON_LEFT_PADDLE1

constexpr GamepadButton SDL::GAMEPAD_BUTTON_LEFT_PADDLE1
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LEFT_PADDLE1

◆ GAMEPAD_BUTTON_LEFT_PADDLE2

constexpr GamepadButton SDL::GAMEPAD_BUTTON_LEFT_PADDLE2
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LEFT_PADDLE2

Xbox Elite paddle P4)

◆ GAMEPAD_BUTTON_LEFT_SHOULDER

constexpr GamepadButton SDL::GAMEPAD_BUTTON_LEFT_SHOULDER
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LEFT_SHOULDER

◆ GAMEPAD_BUTTON_LEFT_STICK

constexpr GamepadButton SDL::GAMEPAD_BUTTON_LEFT_STICK
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_LEFT_STICK

◆ GAMEPAD_BUTTON_MISC1

constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC1 = SDL_GAMEPAD_BUTTON_MISC1
constexpr

Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button, Google Stadia capture button)

◆ GAMEPAD_BUTTON_MISC2

constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC2
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_MISC2

◆ GAMEPAD_BUTTON_MISC3

constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC3
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_MISC3

◆ GAMEPAD_BUTTON_MISC4

constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC4
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_MISC4

◆ GAMEPAD_BUTTON_MISC5

constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC5
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_MISC5

◆ GAMEPAD_BUTTON_MISC6

constexpr GamepadButton SDL::GAMEPAD_BUTTON_MISC6
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_MISC6

◆ GAMEPAD_BUTTON_NORTH

constexpr GamepadButton SDL::GAMEPAD_BUTTON_NORTH
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_NORTH

◆ GAMEPAD_BUTTON_RIGHT_PADDLE1

constexpr GamepadButton SDL::GAMEPAD_BUTTON_RIGHT_PADDLE1
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_RIGHT_PADDLE1

Xbox Elite paddle P1)

◆ GAMEPAD_BUTTON_RIGHT_PADDLE2

constexpr GamepadButton SDL::GAMEPAD_BUTTON_RIGHT_PADDLE2
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_RIGHT_PADDLE2

Xbox Elite paddle P2)

◆ GAMEPAD_BUTTON_RIGHT_SHOULDER

constexpr GamepadButton SDL::GAMEPAD_BUTTON_RIGHT_SHOULDER
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER

◆ GAMEPAD_BUTTON_RIGHT_STICK

constexpr GamepadButton SDL::GAMEPAD_BUTTON_RIGHT_STICK
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_RIGHT_STICK

◆ GAMEPAD_BUTTON_SOUTH

constexpr GamepadButton SDL::GAMEPAD_BUTTON_SOUTH
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_SOUTH

◆ GAMEPAD_BUTTON_START

constexpr GamepadButton SDL::GAMEPAD_BUTTON_START
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_START

◆ GAMEPAD_BUTTON_TOUCHPAD

constexpr GamepadButton SDL::GAMEPAD_BUTTON_TOUCHPAD
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_TOUCHPAD

◆ GAMEPAD_BUTTON_WEST

constexpr GamepadButton SDL::GAMEPAD_BUTTON_WEST
constexpr
Initial value:
=
SDL_GAMEPAD_BUTTON_WEST

◆ GAMEPAD_TYPE_COUNT

constexpr GamepadType SDL::GAMEPAD_TYPE_COUNT
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_COUNT

◆ GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT

constexpr GamepadType SDL::GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT

◆ GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR

constexpr GamepadType SDL::GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR

◆ GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT

constexpr GamepadType SDL::GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT

◆ GAMEPAD_TYPE_NINTENDO_SWITCH_PRO

constexpr GamepadType SDL::GAMEPAD_TYPE_NINTENDO_SWITCH_PRO
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_PRO

◆ GAMEPAD_TYPE_PS3

constexpr GamepadType SDL::GAMEPAD_TYPE_PS3
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_PS3

◆ GAMEPAD_TYPE_PS4

constexpr GamepadType SDL::GAMEPAD_TYPE_PS4
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_PS4

◆ GAMEPAD_TYPE_PS5

constexpr GamepadType SDL::GAMEPAD_TYPE_PS5
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_PS5

◆ GAMEPAD_TYPE_STANDARD

constexpr GamepadType SDL::GAMEPAD_TYPE_STANDARD
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_STANDARD

◆ GAMEPAD_TYPE_UNKNOWN

constexpr GamepadType SDL::GAMEPAD_TYPE_UNKNOWN
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_UNKNOWN

◆ GAMEPAD_TYPE_XBOX360

constexpr GamepadType SDL::GAMEPAD_TYPE_XBOX360
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_XBOX360

◆ GAMEPAD_TYPE_XBOXONE

constexpr GamepadType SDL::GAMEPAD_TYPE_XBOXONE
constexpr
Initial value:
=
SDL_GAMEPAD_TYPE_XBOXONE