mirror of https://github.com/encounter/SDL.git
Use the real device VID/PID when seeing the Steam virtual controller
This commit is contained in:
parent
85e6500065
commit
f97a29f6e1
|
@ -201,9 +201,20 @@ GuessXInputDevice(Uint8 userid, Uint16 *pVID, Uint16 *pPID, Uint16 *pVersion)
|
||||||
* userid, but we'll record it so we'll at least be consistent
|
* userid, but we'll record it so we'll at least be consistent
|
||||||
* when the raw device list changes.
|
* when the raw device list changes.
|
||||||
*/
|
*/
|
||||||
*pVID = (Uint16)rdi.hid.dwVendorId;
|
if (rdi.hid.dwVendorId == USB_VENDOR_VALVE &&
|
||||||
*pPID = (Uint16)rdi.hid.dwProductId;
|
rdi.hid.dwProductId == USB_PRODUCT_STEAM_VIRTUAL_GAMEPAD) {
|
||||||
*pVersion = (Uint16)rdi.hid.dwVersionNumber;
|
/* Steam encodes the real device in the path */
|
||||||
|
int realVID = rdi.hid.dwVendorId;
|
||||||
|
int realPID = rdi.hid.dwProductId;
|
||||||
|
SDL_sscanf(devName, "\\\\.\\pipe\\HID#VID_045E&PID_028E&IG_00#%x&%x&", &realVID, &realPID);
|
||||||
|
*pVID = (Uint16)realVID;
|
||||||
|
*pPID = (Uint16)realPID;
|
||||||
|
*pVersion = 0;
|
||||||
|
} else {
|
||||||
|
*pVID = (Uint16)rdi.hid.dwVendorId;
|
||||||
|
*pPID = (Uint16)rdi.hid.dwProductId;
|
||||||
|
*pVersion = (Uint16)rdi.hid.dwVersionNumber;
|
||||||
|
}
|
||||||
if (s_arrXInputDevicePath[userid]) {
|
if (s_arrXInputDevicePath[userid]) {
|
||||||
SDL_free(s_arrXInputDevicePath[userid]);
|
SDL_free(s_arrXInputDevicePath[userid]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue