mirror of https://github.com/encounter/SDL.git
Added the HOTAS Warthog as a flight stick
This commit is contained in:
parent
800a72eb17
commit
a156b0d994
|
@ -966,7 +966,7 @@ static void SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint1
|
|||
}
|
||||
}
|
||||
|
||||
static SDL_bool SDL_IsJoystickGUIDWheel(SDL_JoystickGUID guid)
|
||||
static SDL_bool SDL_IsJoystickGUIDWheel(Uint32 vidpid)
|
||||
{
|
||||
static Uint32 wheel_joysticks[] = {
|
||||
MAKE_VIDPID(0x046d, 0xc294), /* Logitech generic wheel */
|
||||
|
@ -983,16 +983,25 @@ static SDL_bool SDL_IsJoystickGUIDWheel(SDL_JoystickGUID guid)
|
|||
MAKE_VIDPID(0x044f, 0xb664), /* Thrustmaster TX (initial mode) */
|
||||
MAKE_VIDPID(0x044f, 0xb669), /* Thrustmaster TX (active mode) */
|
||||
};
|
||||
Uint16 vendor;
|
||||
Uint16 product;
|
||||
Uint32 id;
|
||||
int i;
|
||||
|
||||
SDL_GetJoystickGUIDInfo(guid, &vendor, &product, NULL);
|
||||
id = MAKE_VIDPID(vendor, product);
|
||||
|
||||
for (i = 0; i < SDL_arraysize(wheel_joysticks); ++i) {
|
||||
if (id == wheel_joysticks[i]) {
|
||||
if (vidpid == wheel_joysticks[i]) {
|
||||
return SDL_TRUE;
|
||||
}
|
||||
}
|
||||
return SDL_FALSE;
|
||||
}
|
||||
|
||||
static SDL_bool SDL_IsJoystickGUIDFlightStick(Uint32 vidpid)
|
||||
{
|
||||
static Uint32 flightstick_joysticks[] = {
|
||||
MAKE_VIDPID(0x044f, 0x0402), /* HOTAS Warthog */
|
||||
};
|
||||
int i;
|
||||
|
||||
for (i = 0; i < SDL_arraysize(flightstick_joysticks); ++i) {
|
||||
if (vidpid == flightstick_joysticks[i]) {
|
||||
return SDL_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -1001,6 +1010,10 @@ static SDL_bool SDL_IsJoystickGUIDWheel(SDL_JoystickGUID guid)
|
|||
|
||||
static SDL_JoystickType SDL_GetJoystickGUIDType(SDL_JoystickGUID guid)
|
||||
{
|
||||
Uint16 vendor;
|
||||
Uint16 product;
|
||||
Uint32 vidpid;
|
||||
|
||||
if (guid.data[14] == 'x') {
|
||||
/* XInput GUID, get the type based on the XInput device subtype */
|
||||
switch (guid.data[15]) {
|
||||
|
@ -1027,10 +1040,17 @@ static SDL_JoystickType SDL_GetJoystickGUIDType(SDL_JoystickGUID guid)
|
|||
}
|
||||
}
|
||||
|
||||
if (SDL_IsJoystickGUIDWheel(guid)) {
|
||||
SDL_GetJoystickGUIDInfo(guid, &vendor, &product, NULL);
|
||||
vidpid = MAKE_VIDPID(vendor, product);
|
||||
|
||||
if (SDL_IsJoystickGUIDWheel(vidpid)) {
|
||||
return SDL_JOYSTICK_TYPE_WHEEL;
|
||||
}
|
||||
|
||||
if (SDL_IsJoystickGUIDFlightStick(vidpid)) {
|
||||
return SDL_JOYSTICK_TYPE_FLIGHT_STICK;
|
||||
}
|
||||
|
||||
return SDL_JOYSTICK_TYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
|
|
|
@ -239,7 +239,7 @@ WatchJoystick(SDL_Joystick * joystick)
|
|||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
const char *name;
|
||||
const char *name, *type;
|
||||
int i;
|
||||
SDL_Joystick *joystick;
|
||||
|
||||
|
@ -268,6 +268,36 @@ main(int argc, char *argv[])
|
|||
SDL_assert(SDL_JoystickFromInstanceID(SDL_JoystickInstanceID(joystick)) == joystick);
|
||||
SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick),
|
||||
guid, sizeof (guid));
|
||||
switch (SDL_JoystickGetType(joystick)) {
|
||||
case SDL_JOYSTICK_TYPE_GAMECONTROLLER:
|
||||
type = "Game Controller";
|
||||
break;
|
||||
case SDL_JOYSTICK_TYPE_WHEEL:
|
||||
type = "Wheel";
|
||||
break;
|
||||
case SDL_JOYSTICK_TYPE_ARCADE_STICK:
|
||||
type = "Arcade Stick";
|
||||
break;
|
||||
case SDL_JOYSTICK_TYPE_FLIGHT_STICK:
|
||||
type = "Flight Stick";
|
||||
break;
|
||||
case SDL_JOYSTICK_TYPE_DANCE_PAD:
|
||||
type = "Dance Pad";
|
||||
break;
|
||||
case SDL_JOYSTICK_TYPE_GUITAR:
|
||||
type = "Guitar";
|
||||
break;
|
||||
case SDL_JOYSTICK_TYPE_DRUM_KIT:
|
||||
type = "Drum Kit";
|
||||
break;
|
||||
case SDL_JOYSTICK_TYPE_ARCADE_PAD:
|
||||
type = "Arcade Pad";
|
||||
break;
|
||||
default:
|
||||
type = "Unknown";
|
||||
break;
|
||||
}
|
||||
SDL_Log(" type: %s\n", type);
|
||||
SDL_Log(" axes: %d\n", SDL_JoystickNumAxes(joystick));
|
||||
SDL_Log(" balls: %d\n", SDL_JoystickNumBalls(joystick));
|
||||
SDL_Log(" hats: %d\n", SDL_JoystickNumHats(joystick));
|
||||
|
|
Loading…
Reference in New Issue