Added support for the Kinvoca Joy-Cons

These report their VID/PID as a Nintendo Switch Pro controller, but they are actually left/right Joy-Cons. We'll fix up the joystick GUID so applications can handle them appropriately.
This commit is contained in:
Sam Lantinga
2022-08-30 14:14:38 -07:00
parent 92d3fc4883
commit b2c3237b75
2 changed files with 17 additions and 10 deletions

View File

@@ -712,6 +712,8 @@ HIDAPI_CreateCombinedJoyCons()
}
for (device = SDL_HIDAPI_devices; device; device = device->next) {
Uint16 vendor, product;
if (!device->driver) {
/* Unsupported device */
continue;
@@ -721,15 +723,17 @@ HIDAPI_CreateCombinedJoyCons()
continue;
}
SDL_GetJoystickGUIDInfo(device->guid, &vendor, &product, NULL, NULL);
if (!joycons[0] &&
(SDL_IsJoystickNintendoSwitchJoyConLeft(device->vendor_id, device->product_id) ||
(SDL_IsJoystickNintendoSwitchJoyConGrip(device->vendor_id, device->product_id) &&
(SDL_IsJoystickNintendoSwitchJoyConLeft(vendor, product) ||
(SDL_IsJoystickNintendoSwitchJoyConGrip(vendor, product) &&
SDL_strstr(device->name, "(L)") != NULL))) {
joycons[0] = device;
}
if (!joycons[1] &&
(SDL_IsJoystickNintendoSwitchJoyConRight(device->vendor_id, device->product_id) ||
(SDL_IsJoystickNintendoSwitchJoyConGrip(device->vendor_id, device->product_id) &&
(SDL_IsJoystickNintendoSwitchJoyConRight(vendor, product) ||
(SDL_IsJoystickNintendoSwitchJoyConGrip(vendor, product) &&
SDL_strstr(device->name, "(R)") != NULL))) {
joycons[1] = device;
}