From d9c17e70552fb9a085de5bac0bc7675b4ea593e0 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 8 Jun 2023 18:24:09 +0100 Subject: [PATCH] testevdev: Add details of some more 8BitDo devices Thanks to Jeremy Whiting. Signed-off-by: Simon McVittie --- test/testevdev.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/test/testevdev.c b/test/testevdev.c index 895fcdd6cd..b043bf7050 100644 --- a/test/testevdev.c +++ b/test/testevdev.c @@ -94,6 +94,8 @@ static const GuessTest guess_tests[] = { { .name = "Xbox 360 wired USB controller", + /* 8BitDo N30 Pro 2 v0114 via USB-C (with the xpad driver) is + * reported as 0003:045e:028e v0114, and is functionally equivalent */ .bus_type = 0x0003, .vendor_id = 0x045e, .product_id = 0x028e, @@ -452,7 +454,9 @@ static const GuessTest guess_tests[] = * except for having force feedback, which we don't use in our * heuristic */ /* Jess Tech GGE909 PC Recoil Pad, 0003:0f30:010b v0110, is the same */ - /* 8BitDo SNES30, 0003:2dc8:ab20 v0110, is the same */ + /* 8BitDo SNES30 via USB, 0003:2dc8:ab20 v0110, is the same; + * see below for the same physical device via Bluetooth, + * 0005:2dc8:2840 v0100 */ .expected = SDL_UDEV_DEVICE_JOYSTICK, /* SYN, KEY, ABS */ .ev = { 0x0b }, @@ -465,6 +469,29 @@ static const GuessTest guess_tests[] = /* 0x100 */ ZEROx4, 0xff, 0x0f, 0x00, 0x00, }, }, + { + .name = "8BitDo SNES30 v0100 via Bluetooth", + /* The same physical device via USB, 0003:2dc8:ab20 v0110, + * is reported differently (above). */ + /* 8BitDo NES30 Pro (aka N30 Pro) via Bluetooth, 0005:2dc8:3820 v0100, + * is functionally equivalent; but the same physical device via USB, + * 0003:2dc8:9001 v0111, matches N30 Pro 2 v0111. */ + .bus_type = 0x0005, + .vendor_id = 0x2dc8, + .product_id = 0x2840, + .version = 0x0100, + .expected = SDL_UDEV_DEVICE_JOYSTICK, + /* SYN, KEY, ABS, MSC */ + .ev = { 0x1b }, + /* XYZ, RZ, GAS, BRAKE, HAT0X, HAT0Y */ + .abs = { 0x27, 0x06, 0x03 }, + .keys = { + /* 0x00-0xff */ ZEROx8, ZEROx8, ZEROx8, ZEROx8, + /* ABC, XYZ, TL, TR, TL2, TR2, SELECT, START, MODE, THUMBL, THUMBR, + * and an unassigned button code */ + /* 0x100 */ ZEROx4, 0x00, 0x00, 0xff, 0xff, + }, + }, { .name = "Saitek ST290 Pro flight stick", .bus_type = 0x0003, @@ -734,12 +761,34 @@ static const GuessTest guess_tests[] = }, }, { - .name = "8BitDo N30 Pro 2", + .name = "8BitDo N30 Pro via Bluetooth", + /* This device has also been seen reported with an additional + * unassigned button code, the same as the SNES30 v0100 via Bluetooth */ + .bus_type = 0x0005, + .vendor_id = 0x2dc8, + .product_id = 0x3820, + .version = 0x0100, + .expected = SDL_UDEV_DEVICE_JOYSTICK, + /* SYN, KEY, ABS, MSC */ + .ev = { 0x1b }, + /* XYZ, RZ, gas, brake, hat0 */ + .abs = { 0x27, 0x06, 0x03 }, + .keys = { + /* 0x00-0xff */ ZEROx8, ZEROx8, ZEROx8, ZEROx8, + /* ABC, XYZ, TL, TR, TL2, TR2, select, start, mode, thumbl, + * thumbr */ + /* 0x100 */ ZEROx4, 0x00, 0x00, 0xff, 0x7f, + }, + }, + { + .name = "8BitDo N30 Pro 2 v0111", .bus_type = 0x0003, .vendor_id = 0x2dc8, .product_id = 0x9015, .version = 0x0111, - /* 8BitDo NES30 Pro, 0003:2dc8:9001 v0111, is the same */ + /* 8BitDo NES30 Pro via USB, 0003:2dc8:9001 v0111, is the same; + * but the same physical device via Bluetooth, 0005:2dc8:3820 v0100, + * matches 8BitDo SNES30 v0100 via Bluetooth instead (see above). */ .expected = SDL_UDEV_DEVICE_JOYSTICK, .ev = { 0x0b }, /* XYZ, RZ, gas, brake, hat0 */ @@ -751,6 +800,29 @@ static const GuessTest guess_tests[] = /* 0x100 */ ZEROx4, 0x00, 0x00, 0xff, 0x7f, }, }, + { + .name = "8BitDo N30 Pro 2 via Bluetooth", + /* Physically the same device as the one that mimics an Xbox 360 + * USB controller when wired */ + .bus_type = 0x0005, + .vendor_id = 0x045e, + .product_id = 0x02e0, + .version = 0x0903, + .expected = SDL_UDEV_DEVICE_JOYSTICK | SDL_UDEV_DEVICE_KEYBOARD, + /* SYN, KEY, ABS, MSC, FF */ + .ev = { 0x1b, 0x00, 0x20 }, + /* X, Y, Z, RX, RY, RZ, HAT0X, HAT0Y */ + .abs = { 0x3f, 0x00, 0x03 }, + .keys = { + /* 0x00 */ ZEROx8, + /* 0x40 */ ZEROx8, + /* KEY_MENU */ + /* 0x80 */ 0x00, 0x08, 0x00, 0x00, ZEROx4, + /* 0xc0 */ ZEROx8, + /* ABC, XYZ, TL, TR, TL2, TR2 */ + /* 0x100 */ ZEROx4, 0x00, 0x00, 0xff, 0x03, + }, + }, { .name = "Retro Power SNES-style controller, 0003:0079:0011 v0110", .bus_type = 0x0003,