Added support for the HOTAS Warthog throttle

This commit is contained in:
Sam Lantinga 2017-01-31 12:23:29 -08:00
parent a156b0d994
commit 6717a3d38d
3 changed files with 28 additions and 5 deletions

View File

@ -83,7 +83,8 @@ typedef enum
SDL_JOYSTICK_TYPE_DANCE_PAD, SDL_JOYSTICK_TYPE_DANCE_PAD,
SDL_JOYSTICK_TYPE_GUITAR, SDL_JOYSTICK_TYPE_GUITAR,
SDL_JOYSTICK_TYPE_DRUM_KIT, SDL_JOYSTICK_TYPE_DRUM_KIT,
SDL_JOYSTICK_TYPE_ARCADE_PAD SDL_JOYSTICK_TYPE_ARCADE_PAD,
SDL_JOYSTICK_TYPE_THROTTLE,
} SDL_JoystickType; } SDL_JoystickType;
typedef enum typedef enum

View File

@ -966,7 +966,7 @@ static void SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint1
} }
} }
static SDL_bool SDL_IsJoystickGUIDWheel(Uint32 vidpid) static SDL_bool SDL_IsJoystickProductWheel(Uint32 vidpid)
{ {
static Uint32 wheel_joysticks[] = { static Uint32 wheel_joysticks[] = {
MAKE_VIDPID(0x046d, 0xc294), /* Logitech generic wheel */ MAKE_VIDPID(0x046d, 0xc294), /* Logitech generic wheel */
@ -993,7 +993,7 @@ static SDL_bool SDL_IsJoystickGUIDWheel(Uint32 vidpid)
return SDL_FALSE; return SDL_FALSE;
} }
static SDL_bool SDL_IsJoystickGUIDFlightStick(Uint32 vidpid) static SDL_bool SDL_IsJoystickProductFlightStick(Uint32 vidpid)
{ {
static Uint32 flightstick_joysticks[] = { static Uint32 flightstick_joysticks[] = {
MAKE_VIDPID(0x044f, 0x0402), /* HOTAS Warthog */ MAKE_VIDPID(0x044f, 0x0402), /* HOTAS Warthog */
@ -1008,6 +1008,21 @@ static SDL_bool SDL_IsJoystickGUIDFlightStick(Uint32 vidpid)
return SDL_FALSE; return SDL_FALSE;
} }
static SDL_bool SDL_IsJoystickProductThrottle(Uint32 vidpid)
{
static Uint32 throttle_joysticks[] = {
MAKE_VIDPID(0x044f, 0x0404), /* HOTAS Warthog */
};
int i;
for (i = 0; i < SDL_arraysize(throttle_joysticks); ++i) {
if (vidpid == throttle_joysticks[i]) {
return SDL_TRUE;
}
}
return SDL_FALSE;
}
static SDL_JoystickType SDL_GetJoystickGUIDType(SDL_JoystickGUID guid) static SDL_JoystickType SDL_GetJoystickGUIDType(SDL_JoystickGUID guid)
{ {
Uint16 vendor; Uint16 vendor;
@ -1043,14 +1058,18 @@ static SDL_JoystickType SDL_GetJoystickGUIDType(SDL_JoystickGUID guid)
SDL_GetJoystickGUIDInfo(guid, &vendor, &product, NULL); SDL_GetJoystickGUIDInfo(guid, &vendor, &product, NULL);
vidpid = MAKE_VIDPID(vendor, product); vidpid = MAKE_VIDPID(vendor, product);
if (SDL_IsJoystickGUIDWheel(vidpid)) { if (SDL_IsJoystickProductWheel(vidpid)) {
return SDL_JOYSTICK_TYPE_WHEEL; return SDL_JOYSTICK_TYPE_WHEEL;
} }
if (SDL_IsJoystickGUIDFlightStick(vidpid)) { if (SDL_IsJoystickProductFlightStick(vidpid)) {
return SDL_JOYSTICK_TYPE_FLIGHT_STICK; return SDL_JOYSTICK_TYPE_FLIGHT_STICK;
} }
if (SDL_IsJoystickProductThrottle(vidpid)) {
return SDL_JOYSTICK_TYPE_THROTTLE;
}
return SDL_JOYSTICK_TYPE_UNKNOWN; return SDL_JOYSTICK_TYPE_UNKNOWN;
} }

View File

@ -293,6 +293,9 @@ main(int argc, char *argv[])
case SDL_JOYSTICK_TYPE_ARCADE_PAD: case SDL_JOYSTICK_TYPE_ARCADE_PAD:
type = "Arcade Pad"; type = "Arcade Pad";
break; break;
case SDL_JOYSTICK_TYPE_THROTTLE:
type = "Throttle";
break;
default: default:
type = "Unknown"; type = "Unknown";
break; break;