dinput: Report controllers as gamepads, not joysticks.
This matches what Windows does with common controllers like xbox 360. Signed-off-by: Andrew Eikum <aeikum@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
0d20dfa9ec
commit
085e58878f
|
@ -316,9 +316,9 @@ static void fill_joystick_dideviceinstanceW(LPDIDEVICEINSTANCEW lpddi, DWORD ver
|
||||||
lpddi->guidProduct = joystick_devices[id].guid_product;
|
lpddi->guidProduct = joystick_devices[id].guid_product;
|
||||||
/* we only support traditional joysticks for now */
|
/* we only support traditional joysticks for now */
|
||||||
if (version >= 0x0800)
|
if (version >= 0x0800)
|
||||||
lpddi->dwDevType = DI8DEVTYPE_JOYSTICK | (DI8DEVTYPEJOYSTICK_STANDARD << 8);
|
lpddi->dwDevType = DI8DEVTYPE_GAMEPAD | (DI8DEVTYPEJOYSTICK_STANDARD << 8);
|
||||||
else
|
else
|
||||||
lpddi->dwDevType = DIDEVTYPE_JOYSTICK | (DIDEVTYPEJOYSTICK_TRADITIONAL << 8);
|
lpddi->dwDevType = DIDEVTYPE_JOYSTICK | (DIDEVTYPEJOYSTICK_GAMEPAD << 8);
|
||||||
|
|
||||||
/* Assume the joystick as HID if it is attached to USB bus and has a valid VID/PID */
|
/* Assume the joystick as HID if it is attached to USB bus and has a valid VID/PID */
|
||||||
if (joystick_devices[id].bus_type == BUS_USB &&
|
if (joystick_devices[id].bus_type == BUS_USB &&
|
||||||
|
@ -326,9 +326,6 @@ static void fill_joystick_dideviceinstanceW(LPDIDEVICEINSTANCEW lpddi, DWORD ver
|
||||||
{
|
{
|
||||||
lpddi->dwDevType |= DIDEVTYPE_HID;
|
lpddi->dwDevType |= DIDEVTYPE_HID;
|
||||||
lpddi->wUsagePage = 0x01; /* Desktop */
|
lpddi->wUsagePage = 0x01; /* Desktop */
|
||||||
if (lpddi->dwDevType == DI8DEVTYPE_JOYSTICK || lpddi->dwDevType == DIDEVTYPE_JOYSTICK)
|
|
||||||
lpddi->wUsage = 0x04; /* Joystick */
|
|
||||||
else
|
|
||||||
lpddi->wUsage = 0x05; /* Game Pad */
|
lpddi->wUsage = 0x05; /* Game Pad */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -355,9 +355,9 @@ static void fill_joystick_dideviceinstanceW(LPDIDEVICEINSTANCEW lpddi, DWORD ver
|
||||||
lpddi->guidFFDriver = GUID_NULL;
|
lpddi->guidFFDriver = GUID_NULL;
|
||||||
|
|
||||||
if (version >= 0x0800)
|
if (version >= 0x0800)
|
||||||
lpddi->dwDevType = DI8DEVTYPE_JOYSTICK | (DI8DEVTYPEJOYSTICK_STANDARD << 8);
|
lpddi->dwDevType = DI8DEVTYPE_GAMEPAD | (DI8DEVTYPEJOYSTICK_STANDARD << 8);
|
||||||
else
|
else
|
||||||
lpddi->dwDevType = DIDEVTYPE_JOYSTICK | (DIDEVTYPEJOYSTICK_TRADITIONAL << 8);
|
lpddi->dwDevType = DIDEVTYPE_JOYSTICK | (DIDEVTYPEJOYSTICK_GAMEPAD << 8);
|
||||||
|
|
||||||
/* Assume the joystick as HID if it is attached to USB bus and has a valid VID/PID */
|
/* Assume the joystick as HID if it is attached to USB bus and has a valid VID/PID */
|
||||||
if (joydevs[id].bus_type == BUS_USB &&
|
if (joydevs[id].bus_type == BUS_USB &&
|
||||||
|
@ -365,9 +365,6 @@ static void fill_joystick_dideviceinstanceW(LPDIDEVICEINSTANCEW lpddi, DWORD ver
|
||||||
{
|
{
|
||||||
lpddi->dwDevType |= DIDEVTYPE_HID;
|
lpddi->dwDevType |= DIDEVTYPE_HID;
|
||||||
lpddi->wUsagePage = 0x01; /* Desktop */
|
lpddi->wUsagePage = 0x01; /* Desktop */
|
||||||
if (lpddi->dwDevType == DI8DEVTYPE_JOYSTICK || lpddi->dwDevType == DIDEVTYPE_JOYSTICK)
|
|
||||||
lpddi->wUsage = 0x04; /* Joystick */
|
|
||||||
else
|
|
||||||
lpddi->wUsage = 0x05; /* Game Pad */
|
lpddi->wUsage = 0x05; /* Game Pad */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -969,9 +969,12 @@ static HRESULT joydev_enum_deviceA(DWORD dwDevType, DWORD dwFlags, LPDIDEVICEINS
|
||||||
lpddi->guidProduct.Data1 = make_vid_pid(device);
|
lpddi->guidProduct.Data1 = make_vid_pid(device);
|
||||||
/* we only support traditional joysticks for now */
|
/* we only support traditional joysticks for now */
|
||||||
if (version >= 0x0800)
|
if (version >= 0x0800)
|
||||||
lpddi->dwDevType = DI8DEVTYPE_JOYSTICK | (DI8DEVTYPEJOYSTICK_STANDARD << 8);
|
lpddi->dwDevType = DI8DEVTYPE_GAMEPAD | (DI8DEVTYPEJOYSTICK_STANDARD << 8);
|
||||||
else
|
else
|
||||||
lpddi->dwDevType = DIDEVTYPE_JOYSTICK | (DIDEVTYPEJOYSTICK_TRADITIONAL << 8);
|
lpddi->dwDevType = DIDEVTYPE_JOYSTICK | (DIDEVTYPEJOYSTICK_GAMEPAD << 8);
|
||||||
|
lpddi->dwDevType |= DIDEVTYPE_HID;
|
||||||
|
lpddi->wUsagePage = 0x01; /* Desktop */
|
||||||
|
lpddi->wUsage = 0x05; /* Game Pad */
|
||||||
sprintf(lpddi->tszInstanceName, "Joystick %d", id);
|
sprintf(lpddi->tszInstanceName, "Joystick %d", id);
|
||||||
|
|
||||||
/* get the device name */
|
/* get the device name */
|
||||||
|
|
Loading…
Reference in New Issue