Сначала вы должны были инициализировать поддержку джойстика SDL (я предполагаю, что SDL2 здесь, но младшие версии не должны быть такими разными). Примерно так:
SDL_InitSubSystem(SDL_INIT_JOYSTICK); // bitwise OR with other subsystems you need,
// e.g. SDL_INIT_VIDEO | SDL_INIT_JOYSTICK
Затем вы должны открытьданный джойстик (обычно вы перечисляете все джойстики и позволяете пользователю выбрать один или выбрать один для них.) Вот так:
SDL_Joystick * joy = SDL_JoystickOpen(0); // Use 1, 2, etc. for the other joysticks,
// You should use SDL_NumJoysticks() then.
И не забудьте "закрыть" джойстик, когда вы закончите сit (SDL_JoystickClose(joy)
.)
В любом случае, когда вы сделали все это (как правило, только один раз и за пределами игрового цикла), вы нажимаете кнопку, которая вас интересует, следующим образом:
if (SDL_JoystickGetButton(joy, button_number) != 0)
// Button was pressed; yay!
Чтобы выяснить номер кнопки, вы можете провести несколько экспериментов.IIRC, кнопки и оси контроллера Xbox360 всегда остаются на одинаковых цифрах.
Обратите внимание, что SDL также имеет API "игрового контроллера", который тесно связан с приведенными выше;просто используйте GameController
вместо Joystick
в именах функций.