void JoyReset(joysticks_t *joys) { int i; JoyTerminate(joys); printf("Checking for joysticks... "); joys->numJoys = SDL_NumJoysticks(); if (joys->numJoys == 0) { printf("None found.\n"); return; } printf("%d found\n", joys->numJoys); for (i = 0; i < joys->numJoys; i++) { joys->joys[i].j = SDL_JoystickOpen(i); if (joys->joys[i].j == NULL) { printf("Failed to open joystick.\n"); } joys->joys[i].numButtons = SDL_JoystickNumButtons(joys->joys[i].j); joys->joys[i].numAxes = SDL_JoystickNumAxes(joys->joys[i].j); joys->joys[i].numHats = SDL_JoystickNumHats(joys->joys[i].j); printf("Opened Joystick %d\n", i); printf(" -> %s\n", SDL_JoystickName(i)); printf(" -> Axes: %d Buttons: %d Hats: %d\n", joys->joys[i].numAxes, joys->joys[i].numButtons, joys->joys[i].numHats); } JoyPoll(joys); }
void JoyReset(joysticks_t *joys) { int i; JoyTerminate(joys); printf("Checking for joysticks... "); joys->numJoys = SDL_NumJoysticks(); if (joys->numJoys == 0) { printf("None found.\n"); return; } printf("%d found\n", joys->numJoys); for (i = 0; i < joys->numJoys; i++) { joystick_t *joy = &joys->joys[i]; joy->j = SDL_JoystickOpen(i); if (joy->j == NULL) { printf("Failed to open joystick.\n"); continue; } // Find joystick-specific fields const char *name = SDL_JoystickName(i); if (strstr(name, "Xbox 360") != NULL) { joy->Type = JOY_XBOX_360; joy->Button1 = 0; // A joy->Button2 = 1; // B joy->ButtonMap = 4; // back joy->ButtonEsc = 5; // start } else { joy->Type = JOY_UNKNOWN; joy->Button1 = 0; joy->Button2 = 1; joy->ButtonMap = 2; joy->ButtonEsc = 3; } joy->numButtons = SDL_JoystickNumButtons(joy->j); joy->numAxes = SDL_JoystickNumAxes(joy->j); joy->numHats = SDL_JoystickNumHats(joy->j); printf("Opened Joystick %d\n", i); printf(" -> %s\n", JoyName(i)); printf(" -> Axes: %d Buttons: %d Hats: %d\n", joy->numAxes, joy->numButtons, joy->numHats); } JoyPoll(joys); }
void EventTerminate(EventHandlers *handlers) { JoyTerminate(&handlers->joysticks); }