SDL_gamecontroller.h File Reference
`#include "SDL_stdinc.h"`
`#include "SDL_error.h"`
`#include "SDL_rwops.h"`
`#include "SDL_sensor.h"`
`#include "SDL_joystick.h"`
`#include "begin_code.h"`
`#include "close_code.h"`
Include dependency graph for SDL_gamecontroller.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | SDL_GameControllerButtonBind

## Macros

#define | SDL_GameControllerAddMappingsFromFile(file)

## Typedefs

typedef struct _SDL_GameController | SDL_GameController

## Enumerations

enum

SDL_GameControllerType {
SDL_CONTROLLER_TYPE_UNKNOWN = 0 ,
SDL_CONTROLLER_TYPE_XBOX360 ,
SDL_CONTROLLER_TYPE_XBOXONE ,
SDL_CONTROLLER_TYPE_PS3 ,
SDL_CONTROLLER_TYPE_PS4 ,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO ,
SDL_CONTROLLER_TYPE_VIRTUAL ,
SDL_CONTROLLER_TYPE_PS5 ,
SDL_CONTROLLER_TYPE_AMAZON_LUNA ,
SDL_CONTROLLER_TYPE_GOOGLE_STADIA ,
SDL_CONTROLLER_TYPE_NVIDIA_SHIELD ,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT ,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT ,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR ,
SDL_CONTROLLER_TYPE_MAX
}

enum | SDL_GameControllerBindType { SDL_CONTROLLER_BINDTYPE_NONE = 0 , SDL_CONTROLLER_BINDTYPE_BUTTON , SDL_CONTROLLER_BINDTYPE_AXIS , SDL_CONTROLLER_BINDTYPE_HAT }
enum | SDL_GameControllerAxis { SDL_CONTROLLER_AXIS_INVALID = -1 , SDL_CONTROLLER_AXIS_LEFTX , SDL_CONTROLLER_AXIS_LEFTY , SDL_CONTROLLER_AXIS_RIGHTX , SDL_CONTROLLER_AXIS_RIGHTY , SDL_CONTROLLER_AXIS_TRIGGERLEFT , SDL_CONTROLLER_AXIS_TRIGGERRIGHT , SDL_CONTROLLER_AXIS_MAX }

enum

SDL_GameControllerButton {
SDL_CONTROLLER_BUTTON_INVALID = -1 ,
SDL_CONTROLLER_BUTTON_A ,
SDL_CONTROLLER_BUTTON_B ,
SDL_CONTROLLER_BUTTON_X ,
SDL_CONTROLLER_BUTTON_Y ,
SDL_CONTROLLER_BUTTON_BACK ,
SDL_CONTROLLER_BUTTON_GUIDE ,
SDL_CONTROLLER_BUTTON_START ,
SDL_CONTROLLER_BUTTON_LEFTSTICK ,
SDL_CONTROLLER_BUTTON_RIGHTSTICK ,
SDL_CONTROLLER_BUTTON_LEFTSHOULDER ,
SDL_CONTROLLER_BUTTON_RIGHTSHOULDER ,
SDL_CONTROLLER_BUTTON_DPAD_UP ,
SDL_CONTROLLER_BUTTON_DPAD_DOWN ,
SDL_CONTROLLER_BUTTON_DPAD_LEFT ,
SDL_CONTROLLER_BUTTON_DPAD_RIGHT ,
SDL_CONTROLLER_BUTTON_MISC1 ,
SDL_CONTROLLER_BUTTON_PADDLE1 ,
SDL_CONTROLLER_BUTTON_PADDLE2 ,
SDL_CONTROLLER_BUTTON_PADDLE3 ,
SDL_CONTROLLER_BUTTON_PADDLE4 ,
SDL_CONTROLLER_BUTTON_TOUCHPAD ,
SDL_CONTROLLER_BUTTON_MAX
}

## Functions

int | SDL_GameControllerAddMappingsFromRW (SDL_RWops *rw, int freerw)
int | SDL_GameControllerAddMapping (const char *mappingString)
int | SDL_GameControllerNumMappings (void)
char * | SDL_GameControllerMappingForIndex (int mapping_index)
char * | SDL_GameControllerMappingForGUID (SDL_JoystickGUID guid)
char * | SDL_GameControllerMapping (SDL_GameController *gamecontroller)
SDL_bool | SDL_IsGameController (int joystick_index)
const char * | SDL_GameControllerNameForIndex (int joystick_index)
const char * | SDL_GameControllerPathForIndex (int joystick_index)
SDL_GameControllerType | SDL_GameControllerTypeForIndex (int joystick_index)
char * | SDL_GameControllerMappingForDeviceIndex (int joystick_index)
SDL_GameController * | SDL_GameControllerOpen (int joystick_index)
SDL_GameController * | SDL_GameControllerFromInstanceID (SDL_JoystickID joyid)
SDL_GameController * | SDL_GameControllerFromPlayerIndex (int player_index)
const char * | SDL_GameControllerName (SDL_GameController *gamecontroller)
const char * | SDL_GameControllerPath (SDL_GameController *gamecontroller)
SDL_GameControllerType | SDL_GameControllerGetType (SDL_GameController *gamecontroller)
int | SDL_GameControllerGetPlayerIndex (SDL_GameController *gamecontroller)
void | SDL_GameControllerSetPlayerIndex (SDL_GameController *gamecontroller, int player_index)
Uint16 | SDL_GameControllerGetVendor (SDL_GameController *gamecontroller)
Uint16 | SDL_GameControllerGetProduct (SDL_GameController *gamecontroller)
Uint16 | SDL_GameControllerGetProductVersion (SDL_GameController *gamecontroller)
Uint16 | SDL_GameControllerGetFirmwareVersion (SDL_GameController *gamecontroller)
const char * | SDL_GameControllerGetSerial (SDL_GameController *gamecontroller)
Uint64 | SDL_GameControllerGetSteamHandle (SDL_GameController *gamecontroller)
SDL_bool | SDL_GameControllerGetAttached (SDL_GameController *gamecontroller)
SDL_Joystick * | SDL_GameControllerGetJoystick (SDL_GameController *gamecontroller)
int | SDL_GameControllerEventState (int state)
void | SDL_GameControllerUpdate (void)
SDL_GameControllerAxis | SDL_GameControllerGetAxisFromString (const char *str)
const char * | SDL_GameControllerGetStringForAxis (SDL_GameControllerAxis axis)
SDL_GameControllerButtonBind | SDL_GameControllerGetBindForAxis (SDL_GameController *gamecontroller, SDL_GameControllerAxis axis)
SDL_bool | SDL_GameControllerHasAxis (SDL_GameController *gamecontroller, SDL_GameControllerAxis axis)
Sint16 | SDL_GameControllerGetAxis (SDL_GameController *gamecontroller, SDL_GameControllerAxis axis)
SDL_GameControllerButton | SDL_GameControllerGetButtonFromString (const char *str)
const char * | SDL_GameControllerGetStringForButton (SDL_GameControllerButton button)
SDL_GameControllerButtonBind | SDL_GameControllerGetBindForButton (SDL_GameController *gamecontroller, SDL_GameControllerButton button)
SDL_bool | SDL_GameControllerHasButton (SDL_GameController *gamecontroller, SDL_GameControllerButton button)
Uint8 | SDL_GameControllerGetButton (SDL_GameController *gamecontroller, SDL_GameControllerButton button)
int | SDL_GameControllerGetNumTouchpads (SDL_GameController *gamecontroller)
int | SDL_GameControllerGetNumTouchpadFingers (SDL_GameController *gamecontroller, int touchpad)
int | SDL_GameControllerGetTouchpadFinger (SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure)
SDL_bool | SDL_GameControllerHasSensor (SDL_GameController *gamecontroller, SDL_SensorType type)
int | SDL_GameControllerSetSensorEnabled (SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled)
SDL_bool | SDL_GameControllerIsSensorEnabled (SDL_GameController *gamecontroller, SDL_SensorType type)
float | SDL_GameControllerGetSensorDataRate (SDL_GameController *gamecontroller, SDL_SensorType type)
int | SDL_GameControllerGetSensorData (SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values)
int | SDL_GameControllerGetSensorDataWithTimestamp (SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values)
int | SDL_GameControllerRumble (SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms)
int | SDL_GameControllerRumbleTriggers (SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms)
SDL_bool | SDL_GameControllerHasLED (SDL_GameController *gamecontroller)
SDL_bool | SDL_GameControllerHasRumble (SDL_GameController *gamecontroller)
SDL_bool | SDL_GameControllerHasRumbleTriggers (SDL_GameController *gamecontroller)
int | SDL_GameControllerSetLED (SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue)
int | SDL_GameControllerSendEffect (SDL_GameController *gamecontroller, const void *data, int size)
void | SDL_GameControllerClose (SDL_GameController *gamecontroller)
const char * | SDL_GameControllerGetAppleSFSymbolsNameForButton (SDL_GameController *gamecontroller, SDL_GameControllerButton button)
const char * | SDL_GameControllerGetAppleSFSymbolsNameForAxis (SDL_GameController *gamecontroller, SDL_GameControllerAxis axis)

## Detailed Description

# CategoryGameController

Include file for SDL game controller event handling

In order to use these functions, SDL_Init() must have been called with the SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system for game controllers, and load appropriate drivers.

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

Definition in file SDL_gamecontroller.h.

## Macro Definition Documentation

## SDL_GameControllerAddMappingsFromFile

#define SDL_GameControllerAddMappingsFromFile | ( |  | file | ) |

Value:
SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
SDL_GameControllerAddMappingsFromRW
int SDL_GameControllerAddMappingsFromRW(SDL_RWops *rw, int freerw)
SDL_RWFromFile
SDL_RWops * SDL_RWFromFile(const char *file, const char *mode)

Load a set of mappings from a file, filtered by the current SDL_GetPlatform()

Convenience macro.

Definition at line 181 of file SDL_gamecontroller.h.

## Typedef Documentation

## SDL_GameController

typedef struct _SDL_GameController SDL_GameController

Definition at line 61 of file SDL_gamecontroller.h.

## Enumeration Type Documentation

## SDL_GameControllerAxis

enum SDL_GameControllerAxis

The list of axes available from a controller

Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_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 controllers.

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

Enumerator
SDL_CONTROLLER_AXIS_INVALID |
SDL_CONTROLLER_AXIS_LEFTX |
SDL_CONTROLLER_AXIS_LEFTY |
SDL_CONTROLLER_AXIS_RIGHTX |
SDL_CONTROLLER_AXIS_RIGHTY |
SDL_CONTROLLER_AXIS_TRIGGERLEFT |
SDL_CONTROLLER_AXIS_TRIGGERRIGHT |
SDL_CONTROLLER_AXIS_MAX |

Definition at line 635 of file SDL_gamecontroller.h.

{
SDL_CONTROLLER_AXIS_INVALID = -1,
SDL_CONTROLLER_AXIS_LEFTX,
SDL_CONTROLLER_AXIS_LEFTY,
SDL_CONTROLLER_AXIS_RIGHTX,
SDL_CONTROLLER_AXIS_RIGHTY,
SDL_CONTROLLER_AXIS_TRIGGERLEFT,
SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
SDL_CONTROLLER_AXIS_MAX
} SDL_GameControllerAxis;
SDL_GameControllerAxis
SDL_GameControllerAxis
Definition SDL_gamecontroller.h:636
SDL_CONTROLLER_AXIS_LEFTX
@ SDL_CONTROLLER_AXIS_LEFTX
Definition SDL_gamecontroller.h:638
SDL_CONTROLLER_AXIS_TRIGGERRIGHT
@ SDL_CONTROLLER_AXIS_TRIGGERRIGHT
Definition SDL_gamecontroller.h:643
SDL_CONTROLLER_AXIS_INVALID
@ SDL_CONTROLLER_AXIS_INVALID
Definition SDL_gamecontroller.h:637
SDL_CONTROLLER_AXIS_RIGHTY
@ SDL_CONTROLLER_AXIS_RIGHTY
Definition SDL_gamecontroller.h:641
SDL_CONTROLLER_AXIS_RIGHTX
@ SDL_CONTROLLER_AXIS_RIGHTX
Definition SDL_gamecontroller.h:640
SDL_CONTROLLER_AXIS_MAX
@ SDL_CONTROLLER_AXIS_MAX
Definition SDL_gamecontroller.h:644
SDL_CONTROLLER_AXIS_TRIGGERLEFT
@ SDL_CONTROLLER_AXIS_TRIGGERLEFT
Definition SDL_gamecontroller.h:642
SDL_CONTROLLER_AXIS_LEFTY
@ SDL_CONTROLLER_AXIS_LEFTY
Definition SDL_gamecontroller.h:639

## SDL_GameControllerBindType

enum SDL_GameControllerBindType

Enumerator
SDL_CONTROLLER_BINDTYPE_NONE |
SDL_CONTROLLER_BINDTYPE_BUTTON |
SDL_CONTROLLER_BINDTYPE_AXIS |
SDL_CONTROLLER_BINDTYPE_HAT |

Definition at line 82 of file SDL_gamecontroller.h.

{
SDL_CONTROLLER_BINDTYPE_NONE = 0,
SDL_CONTROLLER_BINDTYPE_BUTTON,
SDL_CONTROLLER_BINDTYPE_AXIS,
SDL_CONTROLLER_BINDTYPE_HAT
} SDL_GameControllerBindType;
SDL_GameControllerBindType
SDL_GameControllerBindType
Definition SDL_gamecontroller.h:83
SDL_CONTROLLER_BINDTYPE_AXIS
@ SDL_CONTROLLER_BINDTYPE_AXIS
Definition SDL_gamecontroller.h:86
SDL_CONTROLLER_BINDTYPE_HAT
@ SDL_CONTROLLER_BINDTYPE_HAT
Definition SDL_gamecontroller.h:87
SDL_CONTROLLER_BINDTYPE_NONE
@ SDL_CONTROLLER_BINDTYPE_NONE
Definition SDL_gamecontroller.h:84
SDL_CONTROLLER_BINDTYPE_BUTTON
@ SDL_CONTROLLER_BINDTYPE_BUTTON
Definition SDL_gamecontroller.h:85

## SDL_GameControllerButton

enum SDL_GameControllerButton

The list of buttons available from a controller

Enumerator
SDL_CONTROLLER_BUTTON_INVALID |
SDL_CONTROLLER_BUTTON_A |
SDL_CONTROLLER_BUTTON_B |
SDL_CONTROLLER_BUTTON_X |
SDL_CONTROLLER_BUTTON_Y |
SDL_CONTROLLER_BUTTON_BACK |
SDL_CONTROLLER_BUTTON_GUIDE |
SDL_CONTROLLER_BUTTON_START |
SDL_CONTROLLER_BUTTON_LEFTSTICK |
SDL_CONTROLLER_BUTTON_RIGHTSTICK |
SDL_CONTROLLER_BUTTON_LEFTSHOULDER |
SDL_CONTROLLER_BUTTON_RIGHTSHOULDER |
SDL_CONTROLLER_BUTTON_DPAD_UP |
SDL_CONTROLLER_BUTTON_DPAD_DOWN |
SDL_CONTROLLER_BUTTON_DPAD_LEFT |
SDL_CONTROLLER_BUTTON_DPAD_RIGHT |
SDL_CONTROLLER_BUTTON_MISC1 |
SDL_CONTROLLER_BUTTON_PADDLE1 |
SDL_CONTROLLER_BUTTON_PADDLE2 |
SDL_CONTROLLER_BUTTON_PADDLE3 |
SDL_CONTROLLER_BUTTON_PADDLE4 |
SDL_CONTROLLER_BUTTON_TOUCHPAD |
SDL_CONTROLLER_BUTTON_MAX |

Definition at line 744 of file SDL_gamecontroller.h.

{
SDL_CONTROLLER_BUTTON_INVALID = -1,
SDL_CONTROLLER_BUTTON_A,
SDL_CONTROLLER_BUTTON_B,
SDL_CONTROLLER_BUTTON_X,
SDL_CONTROLLER_BUTTON_Y,
SDL_CONTROLLER_BUTTON_BACK,
SDL_CONTROLLER_BUTTON_GUIDE,
SDL_CONTROLLER_BUTTON_START,
SDL_CONTROLLER_BUTTON_LEFTSTICK,
SDL_CONTROLLER_BUTTON_RIGHTSTICK,
SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
SDL_CONTROLLER_BUTTON_DPAD_UP,
SDL_CONTROLLER_BUTTON_DPAD_DOWN,
SDL_CONTROLLER_BUTTON_DPAD_LEFT,
SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */
SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 (upper left, facing the back) */
SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 (upper right, facing the back) */
SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 (lower left, facing the back) */
SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 (lower right, facing the back) */
SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */
SDL_CONTROLLER_BUTTON_MAX
} SDL_GameControllerButton;
SDL_GameControllerButton
SDL_GameControllerButton
Definition SDL_gamecontroller.h:745
SDL_CONTROLLER_BUTTON_B
@ SDL_CONTROLLER_BUTTON_B
Definition SDL_gamecontroller.h:748
SDL_CONTROLLER_BUTTON_BACK
@ SDL_CONTROLLER_BUTTON_BACK
Definition SDL_gamecontroller.h:751
SDL_CONTROLLER_BUTTON_LEFTSTICK
@ SDL_CONTROLLER_BUTTON_LEFTSTICK
Definition SDL_gamecontroller.h:754
SDL_CONTROLLER_BUTTON_START
@ SDL_CONTROLLER_BUTTON_START
Definition SDL_gamecontroller.h:753
SDL_CONTROLLER_BUTTON_PADDLE2
@ SDL_CONTROLLER_BUTTON_PADDLE2
Definition SDL_gamecontroller.h:764
SDL_CONTROLLER_BUTTON_PADDLE1
@ SDL_CONTROLLER_BUTTON_PADDLE1
Definition SDL_gamecontroller.h:763
SDL_CONTROLLER_BUTTON_DPAD_LEFT
@ SDL_CONTROLLER_BUTTON_DPAD_LEFT
Definition SDL_gamecontroller.h:760
SDL_CONTROLLER_BUTTON_RIGHTSHOULDER
@ SDL_CONTROLLER_BUTTON_RIGHTSHOULDER
Definition SDL_gamecontroller.h:757
SDL_CONTROLLER_BUTTON_INVALID
@ SDL_CONTROLLER_BUTTON_INVALID
Definition SDL_gamecontroller.h:746
SDL_CONTROLLER_BUTTON_DPAD_DOWN
@ SDL_CONTROLLER_BUTTON_DPAD_DOWN
Definition SDL_gamecontroller.h:759
SDL_CONTROLLER_BUTTON_TOUCHPAD
@ SDL_CONTROLLER_BUTTON_TOUCHPAD
Definition SDL_gamecontroller.h:767
SDL_CONTROLLER_BUTTON_DPAD_UP
@ SDL_CONTROLLER_BUTTON_DPAD_UP
Definition SDL_gamecontroller.h:758
SDL_CONTROLLER_BUTTON_MAX
@ SDL_CONTROLLER_BUTTON_MAX
Definition SDL_gamecontroller.h:768
SDL_CONTROLLER_BUTTON_LEFTSHOULDER
@ SDL_CONTROLLER_BUTTON_LEFTSHOULDER
Definition SDL_gamecontroller.h:756
SDL_CONTROLLER_BUTTON_GUIDE
@ SDL_CONTROLLER_BUTTON_GUIDE
Definition SDL_gamecontroller.h:752
SDL_CONTROLLER_BUTTON_DPAD_RIGHT
@ SDL_CONTROLLER_BUTTON_DPAD_RIGHT
Definition SDL_gamecontroller.h:761
SDL_CONTROLLER_BUTTON_MISC1
@ SDL_CONTROLLER_BUTTON_MISC1
Definition SDL_gamecontroller.h:762
SDL_CONTROLLER_BUTTON_X
@ SDL_CONTROLLER_BUTTON_X
Definition SDL_gamecontroller.h:749
SDL_CONTROLLER_BUTTON_RIGHTSTICK
@ SDL_CONTROLLER_BUTTON_RIGHTSTICK
Definition SDL_gamecontroller.h:755
SDL_CONTROLLER_BUTTON_PADDLE3
@ SDL_CONTROLLER_BUTTON_PADDLE3
Definition SDL_gamecontroller.h:765
SDL_CONTROLLER_BUTTON_Y
@ SDL_CONTROLLER_BUTTON_Y
Definition SDL_gamecontroller.h:750
SDL_CONTROLLER_BUTTON_A
@ SDL_CONTROLLER_BUTTON_A
Definition SDL_gamecontroller.h:747
SDL_CONTROLLER_BUTTON_PADDLE4
@ SDL_CONTROLLER_BUTTON_PADDLE4
Definition SDL_gamecontroller.h:766

## SDL_GameControllerType

enum SDL_GameControllerType

Enumerator
SDL_CONTROLLER_TYPE_UNKNOWN |
SDL_CONTROLLER_TYPE_XBOX360 |
SDL_CONTROLLER_TYPE_XBOXONE |
SDL_CONTROLLER_TYPE_PS3 |
SDL_CONTROLLER_TYPE_PS4 |
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO |
SDL_CONTROLLER_TYPE_VIRTUAL |
SDL_CONTROLLER_TYPE_PS5 |
SDL_CONTROLLER_TYPE_AMAZON_LUNA |
SDL_CONTROLLER_TYPE_GOOGLE_STADIA |
SDL_CONTROLLER_TYPE_NVIDIA_SHIELD |
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT |
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT |
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR |
SDL_CONTROLLER_TYPE_MAX |

Definition at line 63 of file SDL_gamecontroller.h.

{
SDL_CONTROLLER_TYPE_UNKNOWN = 0,
SDL_CONTROLLER_TYPE_XBOX360,
SDL_CONTROLLER_TYPE_XBOXONE,
SDL_CONTROLLER_TYPE_PS3,
SDL_CONTROLLER_TYPE_PS4,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO,
SDL_CONTROLLER_TYPE_VIRTUAL,
SDL_CONTROLLER_TYPE_PS5,
SDL_CONTROLLER_TYPE_AMAZON_LUNA,
SDL_CONTROLLER_TYPE_GOOGLE_STADIA,
SDL_CONTROLLER_TYPE_NVIDIA_SHIELD,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR,
SDL_CONTROLLER_TYPE_MAX
} SDL_GameControllerType;
SDL_GameControllerType
SDL_GameControllerType
Definition SDL_gamecontroller.h:64
SDL_CONTROLLER_TYPE_VIRTUAL
@ SDL_CONTROLLER_TYPE_VIRTUAL
Definition SDL_gamecontroller.h:71
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT
@ SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT
Definition SDL_gamecontroller.h:76
SDL_CONTROLLER_TYPE_XBOX360
@ SDL_CONTROLLER_TYPE_XBOX360
Definition SDL_gamecontroller.h:66
SDL_CONTROLLER_TYPE_PS4
@ SDL_CONTROLLER_TYPE_PS4
Definition SDL_gamecontroller.h:69
SDL_CONTROLLER_TYPE_NVIDIA_SHIELD
@ SDL_CONTROLLER_TYPE_NVIDIA_SHIELD
Definition SDL_gamecontroller.h:75
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO
@ SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO
Definition SDL_gamecontroller.h:70
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR
@ SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR
Definition SDL_gamecontroller.h:78
SDL_CONTROLLER_TYPE_GOOGLE_STADIA
@ SDL_CONTROLLER_TYPE_GOOGLE_STADIA
Definition SDL_gamecontroller.h:74
SDL_CONTROLLER_TYPE_AMAZON_LUNA
@ SDL_CONTROLLER_TYPE_AMAZON_LUNA
Definition SDL_gamecontroller.h:73
SDL_CONTROLLER_TYPE_PS3
@ SDL_CONTROLLER_TYPE_PS3
Definition SDL_gamecontroller.h:68
SDL_CONTROLLER_TYPE_PS5
@ SDL_CONTROLLER_TYPE_PS5
Definition SDL_gamecontroller.h:72
SDL_CONTROLLER_TYPE_XBOXONE
@ SDL_CONTROLLER_TYPE_XBOXONE
Definition SDL_gamecontroller.h:67
SDL_CONTROLLER_TYPE_UNKNOWN
@ SDL_CONTROLLER_TYPE_UNKNOWN
Definition SDL_gamecontroller.h:65
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT
@ SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT
Definition SDL_gamecontroller.h:77
SDL_CONTROLLER_TYPE_MAX
@ SDL_CONTROLLER_TYPE_MAX
Definition SDL_gamecontroller.h:79

## Function Documentation

## SDL_GameControllerAddMapping()

int SDL_GameControllerAddMapping | ( | const char * | mappingString | ) |

extern

Add support for controllers that SDL is unaware of or to cause an existing controller to have a different binding.

The mapping string has the format "GUID,name,mapping", where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller 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 controller axes and vice versa.

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

"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"

If this function is called before SDL_Init, SDL will generate an SDL_CONTROLLERDEVICEADDED event for matching controllers that are plugged in at the time that SDL_Init is called.

Parameters

  mappingString | the mapping string.

Returns
  1 if a new mapping is added, 0 if an existing mapping is updated, -1 on error; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerMapping
  SDL_GameControllerMappingForGUID
  SDL_CONTROLLERDEVICEADDED

## SDL_GameControllerAddMappingsFromRW()

int SDL_GameControllerAddMappingsFromRW | ( | SDL_RWops * | rw,
|  | int | freerw )

extern

To count the number of game controllers in the system for the following:

int nJoysticks = SDL_NumJoysticks();
int nGameControllers = 0;
for (int i = 0; i < nJoysticks; i++) {
if (SDL_IsGameController(i)) {
nGameControllers++;
}
}
SDL_IsGameController
SDL_bool SDL_IsGameController(int joystick_index)
SDL_NumJoysticks
int SDL_NumJoysticks(void)

Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is: guid,name,mappings

Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones. Under Windows there is a reserved GUID of "xinput" that covers any 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 controller axis and vice versa.

This string shows an example of a valid mapping for a controller

"03000000341a00003608000000000000,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",

Load a set of Game Controller mappings from a seekable SDL data stream.

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

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

If this function is called before SDL_Init, SDL will generate an SDL_CONTROLLERDEVICEADDED event for matching controllers that are plugged in at the time that SDL_Init is called.

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

  rw | the data stream for the mappings to be added.
  freerw | non-zero to close the stream after being read.

Returns
  the number of mappings added or -1 on error; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.2.

See also
  SDL_GameControllerAddMapping
  SDL_GameControllerAddMappingsFromFile
  SDL_GameControllerMappingForGUID
  SDL_CONTROLLERDEVICEADDED

## SDL_GameControllerClose()

void SDL_GameControllerClose | ( | SDL_GameController * | gamecontroller | ) |

extern

Close a game controller previously opened with SDL_GameControllerOpen().

Parameters

  gamecontroller | a game controller identifier previously returned by SDL_GameControllerOpen().

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerOpen

## SDL_GameControllerEventState()

int SDL_GameControllerEventState | ( | int | state | ) |

extern

Query or change current state of Game Controller events.

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

Any number can be passed to SDL_GameControllerEventState(), but only -1, 0, and 1 will have any effect. Other numbers will just be returned.

Parameters

  state | can be one of SDL_QUERY, SDL_IGNORE, or SDL_ENABLE.

Returns
  the same value passed to the function, with exception to -1 (SDL_QUERY), which will return the current state.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_JoystickEventState

## SDL_GameControllerFromInstanceID()

SDL_GameController * SDL_GameControllerFromInstanceID | ( | SDL_JoystickID | joyid | ) |

extern

Get the SDL_GameController associated with an instance id.

Parameters

  joyid | the instance id to get the SDL_GameController for.

Returns
  an SDL_GameController on success or NULL on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.4.

## SDL_GameControllerFromPlayerIndex()

SDL_GameController * SDL_GameControllerFromPlayerIndex | ( | int | player_index | ) |

extern

Get the SDL_GameController associated with a player index.

Please note that the player index is not the device index, nor is it the instance id!

Parameters

  player_index | the player index, which is not the device index or the instance id!

Returns
  the SDL_GameController associated with a player index.

Since
  This function is available since SDL 2.0.12.

See also
  SDL_GameControllerGetPlayerIndex
  SDL_GameControllerSetPlayerIndex

## SDL_GameControllerGetAppleSFSymbolsNameForAxis()

const char * SDL_GameControllerGetAppleSFSymbolsNameForAxis | ( | SDL_GameController * | gamecontroller,
|  | SDL_GameControllerAxis | axis )

extern

Return the sfSymbolsName for a given axis on a game controller on Apple platforms.

Parameters

  gamecontroller | the controller to query.
  axis | an axis on the game controller.

Returns
  the sfSymbolsName or NULL if the name can't be found.

Since
  This function is available since SDL 2.0.18.

See also
  SDL_GameControllerGetAppleSFSymbolsNameForButton

## SDL_GameControllerGetAppleSFSymbolsNameForButton()

const char * SDL_GameControllerGetAppleSFSymbolsNameForButton | ( | SDL_GameController * | gamecontroller,
|  | SDL_GameControllerButton | button )

extern

Return the sfSymbolsName for a given button on a game controller on Apple platforms.

Parameters

  gamecontroller | the controller to query.
  button | a button on the game controller.

Returns
  the sfSymbolsName or NULL if the name can't be found.

Since
  This function is available since SDL 2.0.18.

See also
  SDL_GameControllerGetAppleSFSymbolsNameForAxis

## SDL_GameControllerGetAttached()

SDL_bool SDL_GameControllerGetAttached | ( | SDL_GameController * | gamecontroller | ) |

extern

Check if a controller has been opened and is currently connected.

Parameters

  gamecontroller | a game controller identifier previously returned by SDL_GameControllerOpen().

Returns
  SDL_TRUE if the controller has been opened and is currently connected, or SDL_FALSE if not.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerClose
  SDL_GameControllerOpen

## SDL_GameControllerGetAxis()

Sint16 SDL_GameControllerGetAxis | ( | SDL_GameController * | gamecontroller,
|  | SDL_GameControllerAxis | axis )

extern

Get the current state of an axis control on a game controller.

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 SDL_JoystickGetAxis(), which normally uses the full range.

Parameters

  gamecontroller | a game controller.
  axis | an axis index (one of the SDL_GameControllerAxis values).

Returns
  axis state (including 0) on success or 0 (also) on failure; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerGetButton

## SDL_GameControllerGetAxisFromString()

SDL_GameControllerAxis SDL_GameControllerGetAxisFromString | ( | const char * | str | ) |

extern

Convert a string into SDL_GameControllerAxis enum.

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

Note specially that "righttrigger" and "lefttrigger" map to SDL_CONTROLLER_AXIS_TRIGGERRIGHT and SDL_CONTROLLER_AXIS_TRIGGERLEFT, respectively.

Parameters

  str | string representing a SDL_GameController axis.

Returns
  the SDL_GameControllerAxis enum corresponding to the input string, or SDL_CONTROLLER_AXIS_INVALID if no match was found.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerGetStringForAxis

## SDL_GameControllerGetBindForAxis()

SDL_GameControllerButtonBind SDL_GameControllerGetBindForAxis | ( | SDL_GameController * | gamecontroller,
|  | SDL_GameControllerAxis | axis )

extern

Get the SDL joystick layer binding for a controller axis mapping.

Parameters

  gamecontroller | a game controller.
  axis | an axis enum value (one of the SDL_GameControllerAxis values).

Returns
  a SDL_GameControllerButtonBind describing the bind. On failure (like the given Controller axis doesn't exist on the device), its .bindType will be SDL_CONTROLLER_BINDTYPE_NONE.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerGetBindForButton

## SDL_GameControllerGetBindForButton()

SDL_GameControllerButtonBind SDL_GameControllerGetBindForButton | ( | SDL_GameController * | gamecontroller,
|  | SDL_GameControllerButton | button )

extern

Get the SDL joystick layer binding for a controller button mapping.

Parameters

  gamecontroller | a game controller.
  button | an button enum value (an SDL_GameControllerButton value).

Returns
  a SDL_GameControllerButtonBind describing the bind. On failure (like the given Controller button doesn't exist on the device), its .bindType will be SDL_CONTROLLER_BINDTYPE_NONE.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerGetBindForAxis

## SDL_GameControllerGetButton()

Uint8 SDL_GameControllerGetButton | ( | SDL_GameController * | gamecontroller,
|  | SDL_GameControllerButton | button )

extern

Get the current state of a button on a game controller.

Parameters

  gamecontroller | a game controller.
  button | a button index (one of the SDL_GameControllerButton values).

Returns
  1 for pressed state or 0 for not pressed state or error; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerGetAxis

## SDL_GameControllerGetButtonFromString()

SDL_GameControllerButton SDL_GameControllerGetButtonFromString | ( | const char * | str | ) |

extern

Convert a string into an SDL_GameControllerButton enum.

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

Parameters

  str | string representing a SDL_GameController axis.

Returns
  the SDL_GameControllerButton enum corresponding to the input string, or SDL_CONTROLLER_AXIS_INVALID if no match was found.

Since
  This function is available since SDL 2.0.0.

## SDL_GameControllerGetFirmwareVersion()

Uint16 SDL_GameControllerGetFirmwareVersion | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the firmware version of an opened controller, if available.

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

Parameters

  gamecontroller | the game controller object to query.

Returns
  the controller firmware version, or zero if unavailable.

Since
  This function is available since SDL 2.24.0.

## SDL_GameControllerGetJoystick()

SDL_Joystick * SDL_GameControllerGetJoystick | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the Joystick ID from a Game Controller.

This function will give you a SDL_Joystick object, which allows you to use the SDL_Joystick functions with a SDL_GameController 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 SDL_GameController. You should not call SDL_JoystickClose() on it, for example, since doing so will likely cause SDL to crash.

Parameters

  gamecontroller | the game controller object that you want to get a joystick from.

Returns
  a SDL_Joystick object; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

## SDL_GameControllerGetNumTouchpadFingers()

int SDL_GameControllerGetNumTouchpadFingers | ( | SDL_GameController * | gamecontroller,
|  | int | touchpad )

extern

Get the number of supported simultaneous fingers on a touchpad on a game controller.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerGetNumTouchpads()

int SDL_GameControllerGetNumTouchpads | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the number of touchpads on a game controller.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerGetPlayerIndex()

int SDL_GameControllerGetPlayerIndex | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the player index of an opened game controller.

For XInput controllers this returns the XInput user index.

Parameters

  gamecontroller | the game controller object to query.

Returns
  the player index for controller, or -1 if it's not available.

Since
  This function is available since SDL 2.0.9.

## SDL_GameControllerGetProduct()

Uint16 SDL_GameControllerGetProduct | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the USB product ID of an opened controller, if available.

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

Parameters

  gamecontroller | the game controller object to query.

Returns
  the USB product ID, or zero if unavailable.

Since
  This function is available since SDL 2.0.6.

## SDL_GameControllerGetProductVersion()

Uint16 SDL_GameControllerGetProductVersion | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the product version of an opened controller, if available.

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

Parameters

  gamecontroller | the game controller object to query.

Returns
  the USB product version, or zero if unavailable.

Since
  This function is available since SDL 2.0.6.

## SDL_GameControllerGetSensorData()

int SDL_GameControllerGetSensorData | ( | SDL_GameController * | gamecontroller,
|  | SDL_SensorType | type,
|  | float * | data,
|  | int | num_values )

extern

Get the current state of a game controller sensor.

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

  gamecontroller | The controller to query.
  type | The type of sensor to query.
  data | A pointer filled with the current sensor state.
  num_values | The number of values to write to data.

Returns
  0 or -1 if an error occurred.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerGetSensorDataRate()

float SDL_GameControllerGetSensorDataRate | ( | SDL_GameController * | gamecontroller,
|  | SDL_SensorType | type )

extern

Get the data rate (number of events per second) of a game controller sensor.

Parameters

  gamecontroller | The controller to query.
  type | The 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 2.0.16.

## SDL_GameControllerGetSensorDataWithTimestamp()

int SDL_GameControllerGetSensorDataWithTimestamp | ( | SDL_GameController * | gamecontroller,
|  | SDL_SensorType | type,
|  | Uint64 * | timestamp,
|  | float * | data,
|  | int | num_values )

extern

Get the current state of a game controller sensor with the timestamp of the last update.

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

  gamecontroller | The controller to query.
  type | The type of sensor to query.
  timestamp | A pointer filled with the timestamp in microseconds of the current sensor reading if available, or 0 if not.
  data | A pointer filled with the current sensor state.
  num_values | The number of values to write to data.

Returns
  0 or -1 if an error occurred.

Since
  This function is available since SDL 2.26.0.

## SDL_GameControllerGetSerial()

const char * SDL_GameControllerGetSerial | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the serial number of an opened controller, if available.

Returns the serial number of the controller, or NULL if it is not available.

Parameters

  gamecontroller | the game controller object to query.

Returns
  the serial number, or NULL if unavailable.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerGetSteamHandle()

Uint64 SDL_GameControllerGetSteamHandle | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the Steam Input handle of an opened controller, if available.

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

Parameters

  gamecontroller | the game controller object to query.

Returns
  the gamepad handle, or 0 if unavailable.

Since
  This function is available since SDL 2.30.0.

## SDL_GameControllerGetStringForAxis()

const char * SDL_GameControllerGetStringForAxis | ( | SDL_GameControllerAxis | axis | ) |

extern

Convert from an SDL_GameControllerAxis enum to a string.

The caller should not SDL_free() the returned string.

Parameters

  axis | an enum value for a given SDL_GameControllerAxis.

Returns
  a string for the given axis, or NULL if an invalid axis is specified. The string returned is of the format used by SDL_GameController mapping strings.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerGetAxisFromString

## SDL_GameControllerGetStringForButton()

const char * SDL_GameControllerGetStringForButton | ( | SDL_GameControllerButton | button | ) |

extern

Convert from an SDL_GameControllerButton enum to a string.

The caller should not SDL_free() the returned string.

Parameters

  button | an enum value for a given SDL_GameControllerButton.

Returns
  a string for the given button, or NULL if an invalid button is specified. The string returned is of the format used by SDL_GameController mapping strings.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerGetButtonFromString

## SDL_GameControllerGetTouchpadFinger()

int SDL_GameControllerGetTouchpadFinger | ( | SDL_GameController * | gamecontroller,
|  | int | touchpad,
|  | int | finger,
|  | Uint8 * | state,
|  | float * | x,
|  | float * | y,
|  | float * | pressure )

extern

Get the current state of a finger on a touchpad on a game controller.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerGetType()

SDL_GameControllerType SDL_GameControllerGetType | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the type of this currently opened controller

This is the same name as returned by SDL_GameControllerTypeForIndex(), but it takes a controller identifier instead of the (unstable) device index.

Parameters

  gamecontroller | the game controller object to query.

Returns
  the controller type.

Since
  This function is available since SDL 2.0.12.

## SDL_GameControllerGetVendor()

Uint16 SDL_GameControllerGetVendor | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the USB vendor ID of an opened controller, if available.

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

Parameters

  gamecontroller | the game controller object to query.

Returns
  the USB vendor ID, or zero if unavailable.

Since
  This function is available since SDL 2.0.6.

## SDL_GameControllerHasAxis()

SDL_bool SDL_GameControllerHasAxis | ( | SDL_GameController * | gamecontroller,
|  | SDL_GameControllerAxis | axis )

extern

Query whether a game controller has a given axis.

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

Parameters

  gamecontroller | a game controller.
  axis | an axis enum value (an SDL_GameControllerAxis value).

Returns
  SDL_TRUE if the controller has this axis, SDL_FALSE otherwise.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerHasButton()

SDL_bool SDL_GameControllerHasButton | ( | SDL_GameController * | gamecontroller,
|  | SDL_GameControllerButton | button )

extern

Query whether a game controller has a given button.

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

Parameters

  gamecontroller | a game controller.
  button | a button enum value (an SDL_GameControllerButton value).

Returns
  SDL_TRUE if the controller has this button, SDL_FALSE otherwise.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerHasLED()

SDL_bool SDL_GameControllerHasLED | ( | SDL_GameController * | gamecontroller | ) |

extern

Query whether a game controller has an LED.

Parameters

  gamecontroller | The controller to query.

Returns
  SDL_TRUE, or SDL_FALSE if this controller does not have a modifiable LED.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerHasRumble()

SDL_bool SDL_GameControllerHasRumble | ( | SDL_GameController * | gamecontroller | ) |

extern

Query whether a game controller has rumble support.

Parameters

  gamecontroller | The controller to query.

Returns
  SDL_TRUE, or SDL_FALSE if this controller does not have rumble support.

Since
  This function is available since SDL 2.0.18.

See also
  SDL_GameControllerRumble

## SDL_GameControllerHasRumbleTriggers()

SDL_bool SDL_GameControllerHasRumbleTriggers | ( | SDL_GameController * | gamecontroller | ) |

extern

Query whether a game controller has rumble support on triggers.

Parameters

  gamecontroller | The controller to query.

Returns
  SDL_TRUE, or SDL_FALSE if this controller does not have trigger rumble support.

Since
  This function is available since SDL 2.0.18.

See also
  SDL_GameControllerRumbleTriggers

## SDL_GameControllerHasSensor()

SDL_bool SDL_GameControllerHasSensor | ( | SDL_GameController * | gamecontroller,
|  | SDL_SensorType | type )

extern

Return whether a game controller has a particular sensor.

Parameters

  gamecontroller | The controller to query.
  type | The type of sensor to query.

Returns
  SDL_TRUE if the sensor exists, SDL_FALSE otherwise.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerIsSensorEnabled()

SDL_bool SDL_GameControllerIsSensorEnabled | ( | SDL_GameController * | gamecontroller,
|  | SDL_SensorType | type )

extern

Query whether sensor data reporting is enabled for a game controller.

Parameters

  gamecontroller | The controller to query.
  type | The type of sensor to query.

Returns
  SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerMapping()

char * SDL_GameControllerMapping | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the current mapping of a Game Controller.

The returned string must be freed with SDL_free().

Details about mappings are discussed with SDL_GameControllerAddMapping().

Parameters

  gamecontroller | the game controller you want to get the current mapping for.

Returns
  a string that has the controller's mapping or NULL if no mapping is available; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerAddMapping
  SDL_GameControllerMappingForGUID

## SDL_GameControllerMappingForDeviceIndex()

char * SDL_GameControllerMappingForDeviceIndex | ( | int | joystick_index | ) |

extern

Get the mapping of a game controller.

This can be called before any controllers are opened.

Parameters

  joystick_index | the device_index of a device, from zero to SDL_NumJoysticks()-1.

Returns
  the mapping string. Must be freed with SDL_free(). Returns NULL if no mapping is available.

Since
  This function is available since SDL 2.0.9.

## SDL_GameControllerMappingForGUID()

char * SDL_GameControllerMappingForGUID | ( | SDL_JoystickGUID | guid | ) |

extern

Get the game controller mapping string for a given GUID.

The returned string must be freed with SDL_free().

Parameters

  guid | a structure containing the GUID for which a mapping is desired.

Returns
  a mapping string or NULL on error; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_JoystickGetDeviceGUID
  SDL_JoystickGetGUID

## SDL_GameControllerMappingForIndex()

char * SDL_GameControllerMappingForIndex | ( | int | mapping_index | ) |

extern

Get the mapping at a particular index.

Returns
  the mapping string. Must be freed with SDL_free(). Returns NULL if the index is out of range.

Since
  This function is available since SDL 2.0.6.

## SDL_GameControllerName()

const char * SDL_GameControllerName | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the implementation-dependent name for an opened game controller.

This is the same name as returned by SDL_GameControllerNameForIndex(), but it takes a controller identifier instead of the (unstable) device index.

Parameters

  gamecontroller | a game controller identifier previously returned by SDL_GameControllerOpen().

Returns
  the implementation dependent name for the game controller, or NULL if there is no name or the identifier passed is invalid.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerNameForIndex
  SDL_GameControllerOpen

## SDL_GameControllerNameForIndex()

const char * SDL_GameControllerNameForIndex | ( | int | joystick_index | ) |

extern

Get the implementation dependent name for the game controller.

This function can be called before any controllers are opened.

joystick_index is the same as the device_index passed to SDL_JoystickOpen().

Parameters

  joystick_index | the device_index of a device, from zero to SDL_NumJoysticks()-1.

Returns
  the implementation-dependent name for the game controller, or NULL if there is no name or the index is invalid.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerName
  SDL_GameControllerOpen
  SDL_IsGameController

## SDL_GameControllerNumMappings()

int SDL_GameControllerNumMappings | ( | void |  | ) |

extern

Get the number of mappings installed.

Returns
  the number of mappings.

Since
  This function is available since SDL 2.0.6.

## SDL_GameControllerOpen()

SDL_GameController * SDL_GameControllerOpen | ( | int | joystick_index | ) |

extern

Open a game controller for use.

joystick_index is the same as the device_index passed to SDL_JoystickOpen().

The index passed as an argument refers to the N'th game controller on the system. This index is not the value which will identify this controller in future controller events. The joystick's instance id (SDL_JoystickID) will be used there instead.

Parameters

  joystick_index | the device_index of a device, up to SDL_NumJoysticks().

Returns
  a gamecontroller identifier or NULL if an error occurred; call SDL_GetError() for more information.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerClose
  SDL_GameControllerNameForIndex
  SDL_IsGameController

## SDL_GameControllerPath()

const char * SDL_GameControllerPath | ( | SDL_GameController * | gamecontroller | ) |

extern

Get the implementation-dependent path for an opened game controller.

This is the same path as returned by SDL_GameControllerNameForIndex(), but it takes a controller identifier instead of the (unstable) device index.

Parameters

  gamecontroller | a game controller identifier previously returned by SDL_GameControllerOpen().

Returns
  the implementation dependent path for the game controller, or NULL if there is no path or the identifier passed is invalid.

Since
  This function is available since SDL 2.24.0.

See also
  SDL_GameControllerPathForIndex

## SDL_GameControllerPathForIndex()

const char * SDL_GameControllerPathForIndex | ( | int | joystick_index | ) |

extern

Get the implementation dependent path for the game controller.

This function can be called before any controllers are opened.

joystick_index is the same as the device_index passed to SDL_JoystickOpen().

Parameters

  joystick_index | the device_index of a device, from zero to SDL_NumJoysticks()-1.

Returns
  the implementation-dependent path for the game controller, or NULL if there is no path or the index is invalid.

Since
  This function is available since SDL 2.24.0.

See also
  SDL_GameControllerPath

## SDL_GameControllerRumble()

int SDL_GameControllerRumble | ( | SDL_GameController * | gamecontroller,
|  | Uint16 | low_frequency_rumble,
|  | Uint16 | high_frequency_rumble,
|  | Uint32 | duration_ms )

extern

Start a rumble effect on a game controller.

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

Parameters

  gamecontroller | The controller to vibrate.
  low_frequency_rumble | The intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF.
  high_frequency_rumble | The intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF.
  duration_ms | The duration of the rumble effect, in milliseconds.

Returns
  0, or -1 if rumble isn't supported on this controller.

Since
  This function is available since SDL 2.0.9.

See also
  SDL_GameControllerHasRumble

## SDL_GameControllerRumbleTriggers()

int SDL_GameControllerRumbleTriggers | ( | SDL_GameController * | gamecontroller,
|  | Uint16 | left_rumble,
|  | Uint16 | right_rumble,
|  | Uint32 | duration_ms )

extern

Start a rumble effect in the game controller's triggers.

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 game controller as a whole. This is currently only supported on Xbox One controllers. If you want the (more common) whole-controller rumble, use SDL_GameControllerRumble() instead.

Parameters

  gamecontroller | The controller to vibrate.
  left_rumble | The intensity of the left trigger rumble motor, from 0 to 0xFFFF.
  right_rumble | The intensity of the right trigger rumble motor, from 0 to 0xFFFF.
  duration_ms | The duration of the rumble effect, in milliseconds.

Returns
  0, or -1 if trigger rumble isn't supported on this controller.

Since
  This function is available since SDL 2.0.14.

See also
  SDL_GameControllerHasRumbleTriggers

## SDL_GameControllerSendEffect()

int SDL_GameControllerSendEffect | ( | SDL_GameController * | gamecontroller,
|  | const void * | data,
|  | int | size )

extern

Send a controller specific effect packet

Parameters

  gamecontroller | The controller to affect.
  data | The data to send to the controller.
  size | The size of the data to send to the controller.

Returns
  0, or -1 if this controller or driver doesn't support effect packets.

Since
  This function is available since SDL 2.0.16.

## SDL_GameControllerSetLED()

int SDL_GameControllerSetLED | ( | SDL_GameController * | gamecontroller,
|  | Uint8 | red,
|  | Uint8 | green,
|  | Uint8 | blue )

extern

Update a game controller's LED color.

Parameters

  gamecontroller | The controller to update.
  red | The intensity of the red LED.
  green | The intensity of the green LED.
  blue | The intensity of the blue LED.

Returns
  0, or -1 if this controller does not have a modifiable LED.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerSetPlayerIndex()

void SDL_GameControllerSetPlayerIndex | ( | SDL_GameController * | gamecontroller,
|  | int | player_index )

extern

Set the player index of an opened game controller.

Parameters

  gamecontroller | the game controller object to adjust.
  player_index | Player index to assign to this controller, or -1 to clear the player index and turn off player LEDs.

Since
  This function is available since SDL 2.0.12.

## SDL_GameControllerSetSensorEnabled()

int SDL_GameControllerSetSensorEnabled | ( | SDL_GameController * | gamecontroller,
|  | SDL_SensorType | type,
|  | SDL_bool | enabled )

extern

Set whether data reporting for a game controller sensor is enabled.

Parameters

  gamecontroller | The controller to update.
  type | The type of sensor to enable/disable.
  enabled | Whether data reporting should be enabled.

Returns
  0 or -1 if an error occurred.

Since
  This function is available since SDL 2.0.14.

## SDL_GameControllerTypeForIndex()

SDL_GameControllerType SDL_GameControllerTypeForIndex | ( | int | joystick_index | ) |

extern

Get the type of a game controller.

This can be called before any controllers are opened.

Parameters

  joystick_index | the device_index of a device, from zero to SDL_NumJoysticks()-1.

Returns
  the controller type.

Since
  This function is available since SDL 2.0.12.

## SDL_GameControllerUpdate()

void SDL_GameControllerUpdate | ( | void |  | ) |

extern

Manually pump game controller updates if not using the loop.

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 2.0.0.

## SDL_IsGameController()

SDL_bool SDL_IsGameController | ( | int | joystick_index | ) |

extern

Check if the given joystick is supported by the game controller interface.

joystick_index is the same as the device_index passed to SDL_JoystickOpen().

Parameters

  joystick_index | the device_index of a device, up to SDL_NumJoysticks().

Returns
  SDL_TRUE if the given joystick is supported by the game controller interface, SDL_FALSE if it isn't or it's an invalid index.

Since
  This function is available since SDL 2.0.0.

See also
  SDL_GameControllerNameForIndex
  SDL_GameControllerOpen