ジョイスティックの状態を取得する方法として、イベントを使う方法もある。
まず、SDL_JoystickEventStateでジョイスティックのイベントを有効にして、イベントを受け取るジョイスティックをオープンする。
SDL_Joystick *joystick;
SDL_JoystickEventState(SDL_ENABLE);
joystick = SDL_JoystickOpen(0);
あとはイベントの処理ループでジョイスティックのイベントを処理すればよい。
軸のイベントはX軸とY軸が合わさったものなので注意。
SDL_Event event; while ( SDL_PollEvent(&event) ) { switch( event.type ) { case SDL_JOYAXISMOTION: if ( ( event.jaxis.value < -3200 ) || (event.jaxis.value > 3200 ) ) { if( event.jaxis.axis == 0) { // X軸の処理 } if( event.jaxis.axis == 1) { // Y軸の処理 } } break; case SDL_JOYBUTTONDOWN: if ( event.jbutton.button == 0 ) { // ボタンが押された時の処理 } break; } }