SDL Wiki
(This is the documentation for SDL3, which is under heavy development and the API is changing! SDL2 is the current stable version!)


THIS PAGE IS A WORK IN PROGRESS ... Please make edits to this page to improve it!


Open a game controller for use.


SDL_GameController* SDL_GameControllerOpen(int joystick_index);

Function Parameters


the device_index of a device, up to SDL_NumJoysticks()

Return Value

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


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.


This function is available since SDL 3.0.0.

Code Examples

/* Open the first available controller. */
SDL_GameController *controller = NULL;
for (int i = 0; i < SDL_NumJoysticks(); ++i) {
    if (SDL_IsGameController(i)) {
        controller = SDL_GameControllerOpen(i);
        if (controller) {
        } else {
            fprintf(stderr, "Could not open gamecontroller %i: %s\n", i, SDL_GetError());

CategoryAPI, CategoryGameController, CategoryDraft

[ edit | delete | history | feedback | raw ]

[ front page | index | search | recent changes | git repo | offline html ]

All wiki content is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).
Wiki powered by ghwikipp.