From 022c8f4fcfa4a95603cb6226192d033b084ecef8 Mon Sep 17 00:00:00 2001 From: Dirk Hoffmann Date: Sun, 15 Dec 2024 17:09:18 +0100 Subject: [PATCH] work on controller database, HID interface --- .../Peripherals/Joystick/GamePadDatabase.h | 21846 ++++++++++++++-- Emulator/Peripherals/Joystick/Joystick.cpp | 20 +- Emulator/Peripherals/Joystick/Joystick.h | 1 + Emulator/Peripherals/Joystick/JoystickTypes.h | 23 +- Emulator/VAmiga.cpp | 22 + Emulator/VAmiga.h | 6 + Emulator/config.cpp | 2 +- GUI/Peripherals/GamePad.swift | 17 +- GUI/Peripherals/GamePadManager.swift | 6 + GUI/Peripherals/HIDExtensions.swift | 1 + Proxy/EmulatorProxy.h | 3 + Proxy/EmulatorProxy.mm | 15 + 12 files changed, 20269 insertions(+), 1693 deletions(-) diff --git a/Emulator/Peripherals/Joystick/GamePadDatabase.h b/Emulator/Peripherals/Joystick/GamePadDatabase.h index d9734bfa6..082b90e87 100644 --- a/Emulator/Peripherals/Joystick/GamePadDatabase.h +++ b/Emulator/Peripherals/Joystick/GamePadDatabase.h @@ -26,76 +26,204 @@ static std::vector gamePads = { .button1 = HID_B2, .button2 = HID_B1, },{ - .name = "2 In 1 Joystick", - .vendorID = 3727, - .productID = 3, - .version = 265, + .name = "3 In 1 Conversion Box", + .vendorID = 3888, + .productID = 266, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "3 In 1 Conversion Box", + .vendorID = 6650, + .productID = 36241, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, .button1 = HID_B2, .button2 = HID_B1, + },{ + .name = "3dRudder Foot Motion Controller", + .vendorID = 11770, + .productID = 1, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + },{ + .name = "4Play Adapter", + .vendorID = 5840, + .productID = 3332, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B3, + },{ + .name = "4Play Adapter", + .vendorID = 5840, + .productID = 3333, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B3, + },{ + .name = "4Play Adapter", + .vendorID = 5840, + .productID = 3334, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B3, + },{ + .name = "4Play Adapter", + .vendorID = 5840, + .productID = 3335, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B3, + },{ + .name = "4Play Adapter", + .vendorID = 5840, + .productID = 2656, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B3, },{ .name = "8BitDo Adapter", .vendorID = 11720, .productID = 12544, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Adapter 2", .vendorID = 11720, .productID = 12549, - .version = 512, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Dogbone", .vendorID = 11720, .productID = 20745, - .version = 256, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A2, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo F30", + .vendorID = 32768, + .productID = 4098, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo F30 Arcade Joystick", + .vendorID = 4661, + .productID = 43793, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "8BitDo F30 Arcade Joystick", + .vendorID = 11720, + .productID = 10256, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo F30 Arcade Joystick", + .vendorID = 11720, + .productID = 43793, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo FC30 Pro", + .name = "8BitDo F30 Arcade Stick", + .vendorID = 4224, + .productID = 9, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo F30 Pro", .vendorID = 11720, - .productID = 36864, - .version = 1, + .productID = 14352, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A5, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo FC30 Pro", .vendorID = 11720, - .productID = 14352, - .version = 256, + .productID = 36864, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo GameCube", .vendorID = 11720, .productID = 10346, - .version = 256, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -106,338 +234,383 @@ static std::vector gamePads = { .name = "8BitDo Lite 2", .vendorID = 11720, .productID = 20754, - .version = 256, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B0, - },{ - .name = "8BitDo Lite 2", - .vendorID = 11720, - .productID = 20754, - .version = 512, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo Lite SE", .vendorID = 11720, .productID = 20753, - .version = 256, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo Lite SE", + .name = "8BitDo M30", .vendorID = 11720, - .productID = 20753, - .version = 512, + .productID = 20481, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A5, .button1 = HID_B1, .button2 = HID_B0, - },{ - .name = "8BitDo M30", - .vendorID = 3235, - .productID = 36, - .version = 518, - .button1 = HID_B2, - .button2 = HID_B1, },{ .name = "8BitDo M30", .vendorID = 11720, .productID = 20737, - .version = 256, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, + .rightx = HID_A3, + .lefty = HID_A2, + .righty = HID_A5, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo M30", .vendorID = 11720, .productID = 20486, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo M30", .vendorID = 11720, .productID = 1617, - .version = 256, - .button1 = HID_B1, - .button2 = HID_B0, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, },{ .name = "8BitDo Micro", .vendorID = 11720, .productID = 36896, - .version = 256, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo N30", .vendorID = 11720, - .productID = 20740, - .version = 256, + .productID = 4099, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B0, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "8BitDo N30 Pro 2", + .name = "8BitDo N30", .vendorID = 11720, - .productID = 36885, - .version = 1, + .productID = 20740, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, + .rightx = HID_A3, + .lefty = HID_A2, + .righty = HID_A5, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo N30 Pro 2", + .name = "8BitDo N30", .vendorID = 11720, - .productID = 10341, - .version = 256, + .productID = 10272, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A5, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo N64", + .name = "8BitDo N30", .vendorID = 11720, - .productID = 10345, - .version = 256, + .productID = 4224, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "8BitDo NEOGEO", + .name = "8BitDo N30", .vendorID = 11720, - .productID = 36901, - .version = 256, + .productID = 736, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "8BitDo NEOGEO", + .name = "8BitDo N30 Pro", .vendorID = 11720, - .productID = 36901, - .version = 1, + .productID = 36865, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30 Pro 2", + .vendorID = 11720, + .productID = 36885, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30 Pro 2", + .vendorID = 11720, + .productID = 10341, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N64", + .vendorID = 11720, + .productID = 36866, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo N64", + .vendorID = 11720, + .productID = 14384, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo N64", + .vendorID = 11720, + .productID = 10345, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo NEOGEO", .vendorID = 11720, - .productID = 36902, - .version = 256, + .productID = 36901, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo NES30", .vendorID = 4661, .productID = 43794, - .version = 1, - .button1 = HID_B1, - .button2 = HID_B0, - },{ - .name = "8BitDo NES30", - .vendorID = 11720, - .productID = 43794, - .version = 1, - .button1 = HID_B0, + .version = 0, + .button1 = HID_B2, .button2 = HID_B1, },{ .name = "8BitDo NES30", .vendorID = 11720, - .productID = 10272, - .version = 256, - .button1 = HID_B0, - .button2 = HID_B1, + .productID = 43794, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, },{ .name = "8BitDo NES30 Pro", .vendorID = 8194, .productID = 36864, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo NES30 Pro", .vendorID = 14368, .productID = 9, - .version = 256, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo NES30 Pro", .vendorID = 11720, - .productID = 36865, - .version = 1, + .productID = 14368, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo P30", .vendorID = 11720, .productID = 20743, - .version = 256, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, + .rightx = HID_A3, + .lefty = HID_A2, + .righty = HID_A5, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo P30", .vendorID = 11720, .productID = 20744, - .version = 256, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, + .rightx = HID_A3, + .lefty = HID_A2, + .righty = HID_A5, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Pro 2", .vendorID = 11720, - .productID = 24582, - .version = 256, + .productID = 24579, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Pro 2", + .vendorID = 11720, + .productID = 24835, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo Pro 2", .vendorID = 11720, .productID = 24582, - .version = 512, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo Receiver", .vendorID = 11720, .productID = 12545, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo Receiver", .vendorID = 11720, .productID = 12546, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo Receiver", .vendorID = 11720, .productID = 12547, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo Receiver", .vendorID = 11720, .productID = 12548, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo S30", .vendorID = 11720, .productID = 26408, - .version = 256, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, + .rightx = HID_A3, + .lefty = HID_A2, + .righty = HID_A5, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "8Bitdo SFC30 Gamepad", + .name = "8BitDo SF30", .vendorID = 11720, - .productID = 10288, - .version = 256, + .productID = 12289, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo SFC30 Joystick", - .vendorID = 10256, - .productID = 9, + .name = "8BitDo SF30 Pro", + .vendorID = 11720, + .productID = 24576, .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo SN30", + .name = "8BitDo SF30 Pro", .vendorID = 11720, - .productID = 20739, - .version = 256, + .productID = 24832, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -445,145 +618,224 @@ static std::vector gamePads = { .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo SN30", + .name = "8BitDo SFC30", + .vendorID = 10256, + .productID = 9, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SFC30", .vendorID = 11720, - .productID = 36882, - .version = 1, + .productID = 43809, + .version = 0, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo SN30", + .name = "8BitDo SFC30", .vendorID = 11720, - .productID = 10304, - .version = 256, + .productID = 10288, + .version = 0, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo SN30 Pro", + .name = "8BitDo SN30", + .vendorID = 4661, + .productID = 43808, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo SN30", .vendorID = 11720, - .productID = 24577, - .version = 1, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, + .productID = 12288, + .version = 0, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo SN30 Pro", + .name = "8BitDo SN30", .vendorID = 11720, - .productID = 24833, - .version = 256, + .productID = 20739, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, + .rightx = HID_A3, + .lefty = HID_A2, .righty = HID_A5, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo SN30 Pro Plus", + .name = "8BitDo SN30", .vendorID = 11720, - .productID = 24578, - .version = 1, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, + .productID = 36882, + .version = 0, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo SN30 Pro Plus", + .name = "8BitDo SN30", .vendorID = 11720, - .productID = 24834, - .version = 256, + .productID = 43808, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A5, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "8BitDo Ultimate", + .name = "8BitDo SN30", .vendorID = 11720, - .productID = 12306, - .version = 256, + .productID = 10304, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30", + .vendorID = 11720, + .productID = 10338, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 8448, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 24577, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 24833, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 11720, + .productID = 24578, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 11720, + .productID = 24834, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Ultimate", + .vendorID = 11720, + .productID = 12306, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Ultimate 2C", .vendorID = 11720, .productID = 12315, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Ultimate 2C", .vendorID = 11720, .productID = 12317, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Ultimate C", .vendorID = 11720, .productID = 12309, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Ultimate C", .vendorID = 11720, .productID = 12310, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Ultimate C", .vendorID = 11720, .productID = 12311, - .version = 1, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Ultimate Wired", .vendorID = 11720, .productID = 12305, - .version = 512, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Ultimate Wireless", .vendorID = 11720, .productID = 12307, - .version = 1, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -591,270 +843,211 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "8BitDo Ultimate Wireless Controller", + .name = "8BitDo Xbox One SN30 Pro", .vendorID = 11720, - .productID = 12307, - .version = 512, + .productID = 8449, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, - },{ - .name = "8BitDo Zero", - .vendorID = 1440, - .productID = 12850, - .version = 264, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Zero", .vendorID = 1440, .productID = 12850, - .version = 265, + .version = 0, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "8BitDo Zero 2", .vendorID = 11720, .productID = 36888, - .version = 1, + .version = 0, .button1 = HID_B1, .button2 = HID_B0, },{ .name = "8BitDo Zero 2", .vendorID = 11720, .productID = 12848, - .version = 256, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A31, + .righty = HID_A3, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "Amazon Luna Controller", - .vendorID = 6473, - .productID = 1049, - .version = 257, + .name = "Acme GA02", + .vendorID = 3727, + .productID = 18, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A5, + .righty = HID_A2, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Amazon Luna Controller", - .vendorID = 369, - .productID = 1049, - .version = 256, + .name = "Acrux", + .vendorID = 4544, + .productID = 21763, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, - },{ - .name = "Anbernic Gamepad", - .vendorID = 4104, - .productID = 485, - .version = 1049, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A4, - .button1 = HID_B0, - .button2 = HID_B1, + .button1 = HID_B1, + .button2 = HID_B2, },{ - .name = "Anbernic RG P01", - .vendorID = 13623, - .productID = 4166, - .version = 1, + .name = "Acteck AGJ 3200", + .vendorID = 6650, + .productID = 65520, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, - },{ - .name = "Astro City Mini", - .vendorID = 3235, - .productID = 39, - .version = 771, - .button1 = HID_B2, - .button2 = HID_B1, - },{ - .name = "Astro City Mini", - .vendorID = 3235, - .productID = 40, - .version = 771, - .leftx = HID_A3, - .lefty = HID_A4, .button1 = HID_B2, .button2 = HID_B1, },{ - .name = "ASUS Gamepad", - .vendorID = 2821, - .productID = 17664, - .version = 49, + .name = "ADT1", + .vendorID = 6353, + .productID = 11328, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A5, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "ASUS ROG Kunai 3", - .vendorID = 2821, - .productID = 30981, - .version = 256, + .name = "Afterglow Deluxe Nintendo Switch Controller", + .vendorID = 3695, + .productID = 392, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, + .button1 = HID_B1, + .button2 = HID_B2, },{ - .name = "ASUS ROG Kunai 3", - .vendorID = 2821, - .productID = 30982, - .version = 256, + .name = "Afterglow PS3 Controller", + .vendorID = 6708, + .productID = 2102, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, - },{ - .name = "Atari VCS Classic", - .vendorID = 12880, - .productID = 4097, - .version = 325, - .button1 = HID_B0, - .button2 = HID_B1, - },{ - .name = "Atari VCS Classic Controller", - .vendorID = 12880, - .productID = 4097, - .version = 327, - .button1 = HID_B0, - .button2 = HID_B1, + .button1 = HID_B1, + .button2 = HID_B2, },{ - .name = "Atari VCS Modern Controller", - .vendorID = 12880, - .productID = 4098, - .version = 327, + .name = "Afterglow PS3 Controller", + .vendorID = 3695, + .productID = 25346, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, + .button1 = HID_B1, + .button2 = HID_B2, },{ - .name = "Backbone One", - .vendorID = 13706, - .productID = 513, - .version = 256, + .name = "Afterglow PS3 Controller", + .vendorID = 3695, + .productID = 273, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, - .button1 = HID_B0, - .button2 = HID_B1, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, },{ - .name = "Backbone One", - .vendorID = 13706, - .productID = 258, - .version = 256, + .name = "Afterglow PS3 Controller", + .vendorID = 3695, + .productID = 276, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, - },{ - .name = "Backbone One", - .vendorID = 13706, - .productID = 514, - .version = 256, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, - .button1 = HID_B0, - .button2 = HID_B1, + .button1 = HID_B1, + .button2 = HID_B2, },{ - .name = "Backbone One", - .vendorID = 13706, - .productID = 516, - .version = 256, + .name = "Afterglow PS3 Controller", + .vendorID = 3695, + .productID = 532, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, + .button1 = HID_B1, + .button2 = HID_B2, },{ - .name = "Backbone One PlayStation Edition", - .vendorID = 13706, - .productID = 515, - .version = 256, + .name = "Afterglow PS3 Controller", + .vendorID = 3695, + .productID = 281, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, - .button1 = HID_B0, - .button2 = HID_B1, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, },{ - .name = "BDA MOGA XP5-X Plus", - .vendorID = 9414, - .productID = 35098, - .version = 256, + .name = "Afterglow PS3 Controller", + .vendorID = 3695, + .productID = 282, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, + .button1 = HID_B1, + .button2 = HID_B2, },{ - .name = "BDA MOGA XP5-X Plus", - .vendorID = 9414, - .productID = 35099, - .version = 256, + .name = "Afterglow Xbox Controller", + .vendorID = 3695, + .productID = 275, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "BDA PS4 Fightpad", - .vendorID = 8406, - .productID = 31018, - .version = 256, + .name = "Afterglow Xbox Controller", + .vendorID = 3695, + .productID = 531, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Brook Mars PS4 Controller", - .vendorID = 3090, - .productID = 3616, - .version = 256, + .name = "Afterglow Xbox Controller", + .vendorID = 3695, + .productID = 1043, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Brook Mars PS4 Controller", - .vendorID = 3090, - .productID = 3617, - .version = 256, + .name = "Afterglow Xbox Controller", + .vendorID = 3695, + .productID = 4884, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -862,137 +1055,115 @@ static std::vector gamePads = { .button1 = HID_B1, .button2 = HID_B2, },{ - .name = "Cideko AK08b", - .vendorID = 1411, - .productID = 45105, + .name = "Afterglow Xbox Controller", + .vendorID = 3695, + .productID = 313, .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Cthulhu", - .vendorID = 5336, - .productID = 53198, + .name = "Afterglow Xbox Controller", + .vendorID = 4779, + .productID = 769, .version = 0, - .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "Cyber Gadget GameCube Controller", - .vendorID = 2342, - .productID = 34952, - .version = 648, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3_REV, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Cyborg V3 Rumble Pad PlayStation Controller", - .vendorID = 1699, - .productID = 63010, - .version = 769, + .name = "Afterglow Xbox Controller", + .vendorID = 7085, + .productID = 63744, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Akishop Customs PS360", + .vendorID = 16, + .productID = 130, + .version = 0, .button1 = HID_B1, .button2 = HID_B2, },{ - .name = "Dual Box Wii Classic Adapter", - .vendorID = 7545, - .productID = 769, - .version = 265, + .name = "Alienware Dual Compatible PlayStation Controller", + .vendorID = 6268, + .productID = 1536, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B2, - .button2 = HID_B1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, },{ - .name = "Elecom JC-W01U", - .vendorID = 1390, - .productID = 8199, - .version = 528, + .name = "Amazon Luna Controller", + .vendorID = 6473, + .productID = 1049, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B2, - .button2 = HID_B3, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Faceoff Deluxe Nintendo Switch Controller", - .vendorID = 3695, - .productID = 388, - .version = 259, + .name = "Amazon Luna Controller", + .vendorID = 369, + .productID = 1049, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "Flydigi Vader 2", - .vendorID = 6421, - .productID = 64, - .version = 1, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B14, - .button2 = HID_B15, + .button2 = HID_B0, },{ - .name = "Flydigi Vader 2", - .vendorID = 1204, - .productID = 9233, - .version = 1025, + .name = "Anbernic Game Pad", + .vendorID = 4104, + .productID = 485, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, },{ - .name = "Flydigi Vader 2", - .vendorID = 1204, - .productID = 9234, - .version = 771, + .name = "Anbernic RG P01", + .vendorID = 1282, + .productID = 4873, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A5, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "GameCube Controller Adapter", - .vendorID = 121, - .productID = 6214, - .version = 256, - .leftx = HID_A0, - .rightx = HID_A20, - .lefty = HID_A4, - .righty = HID_A8, - .button1 = HID_B4, - .button2 = HID_B0, - },{ - .name = "GameSir-T3 2.02", - .vendorID = 1452, - .productID = 1562, - .version = 514, + .name = "Anbernic RG P01", + .vendorID = 13623, + .productID = 4103, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Gamestop BB070 X360 Controller", - .vendorID = 7085, - .productID = 63745, + .name = "Anbernic RG P01", + .vendorID = 13623, + .productID = 4166, .version = 0, .leftx = HID_A0, .rightx = HID_A3, @@ -1001,21 +1172,19 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "GameStop Gamepad", - .vendorID = 21319, - .productID = 28001, - .version = 25697, + .name = "Arcade", + .vendorID = 1411, + .productID = 24577, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "GameStop PS4 Fun Controller", - .vendorID = 4544, - .productID = 16385, - .version = 256, + .name = "Armor 3", + .vendorID = 3090, + .productID = 3600, + .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -1023,32 +1192,17986 @@ static std::vector gamePads = { .button1 = HID_B1, .button2 = HID_B2, },{ - .name = "GameStop Xbox 360 Controller", - .vendorID = 3695, - .productID = 513, + .name = "ASCII Seamic Controller", + .vendorID = 2889, + .productID = 1604, .version = 0, .leftx = HID_A0, - .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Astro C40 TR PS4 Controller", + .vendorID = 39046, + .productID = 37, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Astro City Mini", + .vendorID = 3235, + .productID = 39, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Astro City Mini", + .vendorID = 3235, + .productID = 40, + .version = 0, + .leftx = HID_A3, + .lefty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "ASUS ROG Kunai 3", + .vendorID = 2821, + .productID = 30981, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "ASUS ROG Kunai 3", + .vendorID = 2821, + .productID = 30982, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Classic Controller", + .vendorID = 12880, + .productID = 4097, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Modern Controller", + .vendorID = 12880, + .productID = 4098, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "AtGames Legends Gamer Pro", + .vendorID = 2104, + .productID = 35096, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 513, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B4, + .button2 = HID_B5, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 258, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B4, + .button2 = HID_B5, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 515, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B4, + .button2 = HID_B5, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 516, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B4, + .button2 = HID_B5, + },{ + .name = "Batarang", + .vendorID = 5604, + .productID = 16144, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Batarang PlayStation Controller", + .vendorID = 8406, + .productID = 22501, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Battalife Joystick", + .vendorID = 4544, + .productID = 21011, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B6, + .button2 = HID_B7, + },{ + .name = "Battlefield 4 PS3 Controller", + .vendorID = 3695, + .productID = 306, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "BB 070", + .vendorID = 7085, + .productID = 63745, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "BDA PS4 Fightpad", + .vendorID = 8406, + .productID = 31018, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Beitong G3", + .vendorID = 8380, + .productID = 20562, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Belkin Nostromo N40", + .vendorID = 1293, + .productID = 2050, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Betop 2126F", + .vendorID = 8380, + .productID = 4704, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Betop BFM", + .vendorID = 8380, + .productID = 21760, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Betop Controller", + .vendorID = 8380, + .productID = 4707, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Betop Controller", + .vendorID = 8380, + .productID = 8547, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Betop Controller", + .vendorID = 8380, + .productID = 4708, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Betop Controller", + .vendorID = 4544, + .productID = 21765, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Betop Controller", + .vendorID = 4544, + .productID = 21766, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Betop Gamepad", + .vendorID = 121, + .productID = 7, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Betop Gamepad", + .vendorID = 33664, + .productID = 3, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "BF One", + .vendorID = 3695, + .productID = 356, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Bigben", + .vendorID = 3888, + .productID = 514, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Bigben", + .vendorID = 5227, + .productID = 2306, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Bigben PS3 Controller", + .vendorID = 5227, + .productID = 21760, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Bigben PS3 Controller", + .vendorID = 5227, + .productID = 769, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Brook Mars PS4 Controller", + .vendorID = 3090, + .productID = 3616, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Brook Mars PS4 Controller", + .vendorID = 3090, + .productID = 3617, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Brook PS2 Adapter", + .vendorID = 3090, + .productID = 3825, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Brook Super Converter", + .vendorID = 3090, + .productID = 3121, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Buffalo BSGP1601 Series", + .vendorID = 7640, + .productID = 11, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B5, + .button2 = HID_B3, + },{ + .name = "Capcom Home Arcade Controller", + .vendorID = 7259, + .productID = 36, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "Capcom Home Arcade Controller", + .vendorID = 7259, + .productID = 37, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "ChillStream", + .vendorID = 1133, + .productID = 49730, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Cideko AK08b", + .vendorID = 8424, + .productID = 22624, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Cobra", + .vendorID = 30021, + .productID = 260, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Competition Pro", + .vendorID = 1035, + .productID = 25907, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "CronusMax Adapter", + .vendorID = 1356, + .productID = 1477, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Cthulhu", + .vendorID = 5336, + .productID = 52487, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Cthulhu", + .vendorID = 5336, + .productID = 64206, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Cyber Gadget GameCube Controller", + .vendorID = 2342, + .productID = 34952, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Cyborg", + .vendorID = 1848, + .productID = 51970, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Cyborg V.3 Rumble", + .vendorID = 1699, + .productID = 63010, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "DA Leader", + .vendorID = 1784, + .productID = 41728, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B7, + .button2 = HID_B6, + },{ + .name = "Datel Arcade Joystick", + .vendorID = 7194, + .productID = 256, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Defender Game Racer X7", + .vendorID = 4933, + .productID = 12296, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Dual Box Wii", + .vendorID = 7545, + .productID = 769, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Dual Controller", + .vendorID = 5824, + .productID = 1505, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Dual Power", + .vendorID = 1103, + .productID = 3847, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B8, + .button2 = HID_B9, + },{ + .name = "Dual Power 3", + .vendorID = 1103, + .productID = 45842, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Dual Trigger", + .vendorID = 1103, + .productID = 45856, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Dual Vibration Joystick", + .vendorID = 4797, + .productID = 57346, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "DualForce", + .vendorID = 4607, + .productID = 13105, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "EA Sports PS3 Controller", + .vendorID = 3695, + .productID = 304, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Easy Grip", + .vendorID = 1276, + .productID = 20482, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "EasySMX Controller", + .vendorID = 8380, + .productID = 37120, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Elecom DUX60 MMO", + .vendorID = 1390, + .productID = 8202, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Elecom Gamepad", + .vendorID = 1464, + .productID = 4100, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Elecom Gamepad", + .vendorID = 1464, + .productID = 4102, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Elecom P301U PlayStation Controller Adapter", + .vendorID = 1390, + .productID = 8197, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Elecom U1012", + .vendorID = 4673, + .productID = 20548, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Elecom U3613M", + .vendorID = 1390, + .productID = 8195, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Elecom U3912T", + .vendorID = 1390, + .productID = 8206, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Elecom U4013S", + .vendorID = 1390, + .productID = 8207, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Elecom U4113", + .vendorID = 1390, + .productID = 8211, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Elecom U4113S", + .vendorID = 1390, + .productID = 8208, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Elecom W01U", + .vendorID = 1390, + .productID = 8199, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Eliminator AfterShock", + .vendorID = 1149, + .productID = 16390, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A4, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Elite", + .vendorID = 3090, + .productID = 7414, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "EMS Production PS2 Adapter", + .vendorID = 2883, + .productID = 3, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "ESM 9110", + .vendorID = 12068, + .productID = 46848, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Essential", + .vendorID = 7184, + .productID = 7192, + .version = 0, + .leftx = HID_A1, + .rightx = HID_A3, + .lefty = HID_A0, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "EXEQ", + .vendorID = 3727, + .productID = 12559, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "EXEQ RF Gamepad", + .vendorID = 6708, + .productID = 2049, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Faceoff Deluxe Nintendo Switch Controller", + .vendorID = 3695, + .productID = 388, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Faceoff Deluxe Pro Nintendo Switch Controller", + .vendorID = 3695, + .productID = 385, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Faceoff Pro Nintendo Switch Controller", + .vendorID = 3695, + .productID = 384, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "FC30 Pro", + .vendorID = 4098, + .productID = 36864, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "FC801", + .vendorID = 1041, + .productID = 198, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "FF GP1", + .vendorID = 8581, + .productID = 258, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Fightpad", + .vendorID = 7085, + .productID = 61480, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Fightpad", + .vendorID = 7085, + .productID = 61486, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Fightpad TE", + .vendorID = 7085, + .productID = 61496, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Final Fantasy XIV Online Controller", + .vendorID = 8581, + .productID = 0, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Firestorm", + .vendorID = 1784, + .productID = 41729, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B9, + .button2 = HID_B7, + },{ + .name = "Firestorm 2", + .vendorID = 1973, + .productID = 39171, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B4, + },{ + .name = "Firestorm D3", + .vendorID = 1973, + .productID = 531, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Flydigi Apex", + .vendorID = 1204, + .productID = 9232, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Flydigi Vader 2", + .vendorID = 6421, + .productID = 64, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B27, + .button2 = HID_B26, + },{ + .name = "Flydigi Vader 2", + .vendorID = 1204, + .productID = 9233, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Flydigi Vader 2", + .vendorID = 1204, + .productID = 9234, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "G08XU", + .vendorID = 1411, + .productID = 40960, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Game VIB Joystick", + .vendorID = 63334, + .productID = 1, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "GameCube Controller", + .vendorID = 2342, + .productID = 9510, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameCube Controller", + .vendorID = 6708, + .productID = 63237, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "GameCube Controller", + .vendorID = 2883, + .productID = 5, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "GameCube Controller", + .vendorID = 121, + .productID = 6215, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "GameCube Controller Adapter", + .vendorID = 121, + .productID = 6214, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Gamepad 3 Turbo", + .vendorID = 3727, + .productID = 12557, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "GameSir G3", + .vendorID = 1452, + .productID = 829, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameSir G3w", + .vendorID = 1452, + .productID = 1371, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "GameSir G4", + .vendorID = 1452, + .productID = 557, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameSir G4", + .vendorID = 1452, + .productID = 1101, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameSir-T3 2.02", + .vendorID = 1452, + .productID = 1562, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Gamester", + .vendorID = 3660, + .productID = 13584, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameStick Controller", + .vendorID = 3853, + .productID = 4113, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameStop", + .vendorID = 21319, + .productID = 28001, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameStop PS4 Fun Controller", + .vendorID = 4544, + .productID = 16385, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Gametel GT004 01", + .vendorID = 9654, + .productID = 1, + .version = 0, + .button1 = HID_B3, + .button2 = HID_B0, + },{ + .name = "Gamo2 Divaller", + .vendorID = 3727, + .productID = 4372, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Gator Claw", + .vendorID = 3090, + .productID = 22440, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "GC100XF", + .vendorID = 4553, + .productID = 22000, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Genius", + .vendorID = 1411, + .productID = 40969, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Genius Maxfire Blaze 3", + .vendorID = 1411, + .productID = 45105, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Genius Maxfire Grandias 12", + .vendorID = 4933, + .productID = 4096, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Genius MaxFire Grandias 12V", + .vendorID = 6748, + .productID = 12339, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GGE909 Recoil", + .vendorID = 3888, + .productID = 267, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Gioteck PlayStation Controller", + .vendorID = 9712, + .productID = 33730, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Gioteck PS3 Controller", + .vendorID = 9712, + .productID = 49441, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Gioteck PS3 Controller", + .vendorID = 9712, + .productID = 49457, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Gioteck VX2 PlayStation Controller", + .vendorID = 9712, + .productID = 33731, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Gioteck VX2 PlayStation Controller", + .vendorID = 9712, + .productID = 33732, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Google Stadia Controller", + .vendorID = 6353, + .productID = 37888, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GP XID", + .vendorID = 1103, + .productID = 45862, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GPD Win", + .vendorID = 121, + .productID = 6356, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GPX", + .vendorID = 9414, + .productID = 23298, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Gravis Destroyer Tilt", + .vendorID = 1149, + .productID = 16392, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Gravis Eliminator Pro", + .vendorID = 1149, + .productID = 16389, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Gravis GamePad Pro", + .vendorID = 1064, + .productID = 16385, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "GreenAsia", + .vendorID = 3727, + .productID = 4102, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "GT2a", + .vendorID = 1452, + .productID = 1387, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hama Scorpad", + .vendorID = 6708, + .productID = 515, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hatsune Miku Sho PS3 Controller", + .vendorID = 3853, + .productID = 73, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Havit HV G60", + .vendorID = 2064, + .productID = 57601, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "HEXT", + .vendorID = 3853, + .productID = 12, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "HitBox Edition Cthulhu", + .vendorID = 5336, + .productID = 25096, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "HJD X", + .vendorID = 9571, + .productID = 1318, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori DOA", + .vendorID = 3853, + .productID = 10, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Fighting Commander 2016 PS3", + .vendorID = 3853, + .productID = 133, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 3", + .vendorID = 3853, + .productID = 37, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 3 Pro", + .vendorID = 3853, + .productID = 45, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 4 PS3", + .vendorID = 3853, + .productID = 95, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 4 PS4", + .vendorID = 3853, + .productID = 94, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 5", + .vendorID = 3853, + .productID = 132, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander Octa", + .vendorID = 3853, + .productID = 354, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander Octa", + .vendorID = 3853, + .productID = 356, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Fighting Commander PS3", + .vendorID = 3853, + .productID = 81, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander Xbox 360", + .vendorID = 3853, + .productID = 134, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Fighting Commander Xbox 360", + .vendorID = 3853, + .productID = 186, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Fighting Stick mini 4 PS3", + .vendorID = 3853, + .productID = 136, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Stick mini 4 PS4", + .vendorID = 3853, + .productID = 135, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fightstick", + .vendorID = 3853, + .productID = 16, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fightstick 3W", + .vendorID = 3853, + .productID = 50, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fightstick 4", + .vendorID = 3853, + .productID = 192, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Fightstick EX2", + .vendorID = 3853, + .productID = 13, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Fightstick Mini", + .vendorID = 3853, + .productID = 311, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Hori Fightstick Mini 3", + .vendorID = 3853, + .productID = 64, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fightstick V3", + .vendorID = 3853, + .productID = 33, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fightstick V3", + .vendorID = 3853, + .productID = 39, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Grip TAC4", + .vendorID = 3853, + .productID = 160, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Miku Project Diva X HD PS4 Controller", + .vendorID = 3853, + .productID = 165, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Miku Project Diva X HD PS4 Controller", + .vendorID = 3853, + .productID = 166, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Mini Hatsune Miku FT", + .vendorID = 3853, + .productID = 257, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Pad 3", + .vendorID = 3853, + .productID = 84, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Pad 3 Turbo", + .vendorID = 3853, + .productID = 9, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Pad A", + .vendorID = 3853, + .productID = 77, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori PC Engine Mini Controller", + .vendorID = 3853, + .productID = 312, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Pokken Tournament DX Pro", + .vendorID = 3853, + .productID = 146, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori PS4 Controller Light", + .vendorID = 3853, + .productID = 291, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Real Arcade Pro 3", + .vendorID = 3853, + .productID = 17, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 3P", + .vendorID = 3853, + .productID = 38, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 3W", + .vendorID = 3853, + .productID = 75, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 4", + .vendorID = 3853, + .productID = 106, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 4", + .vendorID = 3853, + .productID = 107, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 4", + .vendorID = 3853, + .productID = 138, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 4", + .vendorID = 3853, + .productID = 139, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 4 VLX", + .vendorID = 3853, + .productID = 111, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 4 VLX", + .vendorID = 3853, + .productID = 112, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro N3", + .vendorID = 3853, + .productID = 61, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro N4", + .vendorID = 3853, + .productID = 174, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Real Arcade Pro P4", + .vendorID = 3853, + .productID = 140, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Real Arcade Pro S", + .vendorID = 3853, + .productID = 170, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro S", + .vendorID = 3853, + .productID = 216, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Real Arcade Pro V3", + .vendorID = 3853, + .productID = 34, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro V4", + .vendorID = 3853, + .productID = 91, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro V4", + .vendorID = 3853, + .productID = 92, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro VHS", + .vendorID = 3853, + .productID = 175, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro VX", + .vendorID = 3853, + .productID = 27, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Real Arcade Pro VX", + .vendorID = 7085, + .productID = 62722, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori TAC Pro", + .vendorID = 3853, + .productID = 156, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Taiko Controller", + .vendorID = 3853, + .productID = 201, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad 3TP", + .vendorID = 3853, + .productID = 100, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad 3W", + .vendorID = 3853, + .productID = 19, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad 4 FPS", + .vendorID = 3853, + .productID = 85, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad 4 PS3", + .vendorID = 3853, + .productID = 110, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad 4 PS4", + .vendorID = 3853, + .productID = 102, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad A", + .vendorID = 3853, + .productID = 66, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad EXT2", + .vendorID = 7085, + .productID = 62721, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Horipad Mini 4", + .vendorID = 3853, + .productID = 238, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad Nintendo Switch Controller", + .vendorID = 3853, + .productID = 193, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad Nintendo Switch Controller", + .vendorID = 3853, + .productID = 246, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Horipad One", + .vendorID = 3853, + .productID = 103, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Horipad Steam", + .vendorID = 3853, + .productID = 406, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Horipad Switch", + .vendorID = 3853, + .productID = 220, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hyperkin Admiral N64 Controller", + .vendorID = 11812, + .productID = 8203, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Hyperkin N64 Adapter", + .vendorID = 11812, + .productID = 3071, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hyperkin N64 Controller Adapter", + .vendorID = 121, + .productID = 38222, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hyperkin RetroN Sq", + .vendorID = 11812, + .productID = 18538, + .version = 0, + .button1 = HID_B3, + .button2 = HID_B7, + },{ + .name = "Hyperkin Scout", + .vendorID = 12068, + .productID = 8202, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hyperkin Trooper 2", + .vendorID = 11812, + .productID = 14442, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "iBuffalo AC02 Arcade Joystick", + .vendorID = 7640, + .productID = 14, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "iBuffalo BSGP1204 Series", + .vendorID = 7640, + .productID = 15, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "iBuffalo BSGP1204P Series", + .vendorID = 7640, + .productID = 16, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "iDroidCon", + .vendorID = 2652, + .productID = 34050, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "iDroidCon Controller", + .vendorID = 25705, + .productID = 25705, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "iGUGU Gamecore", + .vendorID = 7505, + .productID = 12290, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + },{ + .name = "Impact Black", + .vendorID = 1973, + .productID = 788, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Injustice Fightstick PS3 Controller", + .vendorID = 3695, + .productID = 292, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "InterAct ActionPad", + .vendorID = 1411, + .productID = 12369, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "InterAct AxisPad", + .vendorID = 1519, + .productID = 3, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "InterAct AxisPad", + .vendorID = 1533, + .productID = 12290, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Interact GoPad", + .vendorID = 1533, + .productID = 12288, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "InterAct Hammerhead", + .vendorID = 1533, + .productID = 569, + .version = 0, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "InterAct Hammerhead FX", + .vendorID = 1533, + .productID = 9770, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "InterAct Hammerhead FX", + .vendorID = 1533, + .productID = 9775, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B4, + .button2 = HID_B5, + },{ + .name = "InterAct ProPad", + .vendorID = 1533, + .productID = 595, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "Ipega Controller", + .vendorID = 1452, + .productID = 556, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Ipega PG9023", + .vendorID = 6473, + .productID = 1026, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Ipega PG9087", + .vendorID = 6473, + .productID = 1027, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (L)", + .vendorID = 1406, + .productID = 8198, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (R)", + .vendorID = 1406, + .productID = 8199, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joypad Adapter", + .vendorID = 2341, + .productID = 5888, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Joypad Alpha Shock", + .vendorID = 4797, + .productID = 49155, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "JPD FFB", + .vendorID = 4607, + .productID = 13120, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "JYS Adapter", + .vendorID = 12068, + .productID = 45, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "JYS Adapter", + .vendorID = 12068, + .productID = 138, + .version = 0, + .rightx = HID_A3, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "KADE", + .vendorID = 4292, + .productID = 33472, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Keio", + .vendorID = 33410, + .productID = 32769, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B4, + .button2 = HID_B5, + },{ + .name = "King PS3 Controller", + .vendorID = 121, + .productID = 2, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Leadership", + .vendorID = 4797, + .productID = 57345, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Logic3", + .vendorID = 3695, + .productID = 769, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logic3", + .vendorID = 3695, + .productID = 1025, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logic3", + .vendorID = 3727, + .productID = 19, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Logitech ChillStream", + .vendorID = 1133, + .productID = 51921, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech Cordless Precision", + .vendorID = 1133, + .productID = 51922, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech Cordless Wingman", + .vendorID = 1133, + .productID = 49681, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech Dual Action", + .vendorID = 1133, + .productID = 49686, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech F310", + .vendorID = 1133, + .productID = 49693, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech F510", + .vendorID = 1133, + .productID = 49688, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech F510", + .vendorID = 1133, + .productID = 49694, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech F710", + .vendorID = 1133, + .productID = 49689, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech F710", + .vendorID = 1133, + .productID = 49695, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech Precision", + .vendorID = 1133, + .productID = 49690, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech WingMan", + .vendorID = 1133, + .productID = 49673, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech WingMan Action Pad", + .vendorID = 1133, + .productID = 49675, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech WingMan RumblePad", + .vendorID = 1133, + .productID = 49674, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Lynx", + .vendorID = 1848, + .productID = 17750, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Macally", + .vendorID = 8738, + .productID = 96, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Arcade Fightstick TE S Plus PS3", + .vendorID = 1848, + .productID = 34872, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Arcade Fightstick TE S PS3", + .vendorID = 1848, + .productID = 12933, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz CTRLR", + .vendorID = 1848, + .productID = 21091, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz CTRLR", + .vendorID = 1848, + .productID = 21094, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightpad Pro PS3", + .vendorID = 1848, + .productID = 12880, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightpad Pro PS4", + .vendorID = 1848, + .productID = 33360, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz FightStick Alpha PS3 ", + .vendorID = 1848, + .productID = 12672, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightstick TE", + .vendorID = 1848, + .productID = 46904, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mad Catz Fightstick TE S PS3", + .vendorID = 1848, + .productID = 13188, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightstick TE S PS4", + .vendorID = 1848, + .productID = 33668, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightstick TE2 PS3", + .vendorID = 1848, + .productID = 13441, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightstick TE2 PS4", + .vendorID = 1848, + .productID = 33921, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Micro CTRLR", + .vendorID = 1848, + .productID = 21090, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz PlayStation Brawlpad", + .vendorID = 1848, + .productID = 12930, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz PlayStation Fightstick", + .vendorID = 1848, + .productID = 12679, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz PS3 Controller", + .vendorID = 1848, + .productID = 43094, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz SFIV Fightstick PS3", + .vendorID = 1848, + .productID = 34840, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mad Catz SFV Arcade Fightstick Alpha PS4", + .vendorID = 1848, + .productID = 33152, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Street Fighter 4 Xbox 360 FightStick", + .vendorID = 1848, + .productID = 18200, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mad Catz TE2 PS3 Fightstick", + .vendorID = 1848, + .productID = 13440, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz TE2 PS4 Fightstick", + .vendorID = 1848, + .productID = 33920, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Matricom", + .vendorID = 1578, + .productID = 9232, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MaxJoypad Virtual Controller", + .vendorID = 159, + .productID = 48045, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash Arcade Stick", + .vendorID = 2341, + .productID = 10241, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash Controller Adapter", + .vendorID = 3727, + .productID = 12307, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3_REV, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash F101", + .vendorID = 12068, + .productID = 55, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash F300 Arcade Joystick", + .vendorID = 121, + .productID = 6192, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash F300 Elite Arcade Joystick", + .vendorID = 12068, + .productID = 57, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash GameCube Controller", + .vendorID = 121, + .productID = 6212, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash GameCube Controller Adapter", + .vendorID = 121, + .productID = 6211, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash Magic NS", + .vendorID = 12068, + .productID = 115, + .version = 0, + .rightx = HID_A3, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Mayflash Magic NS", + .vendorID = 121, + .productID = 6354, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Mayflash Magic NS", + .vendorID = 8406, + .productID = 42768, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash N64 Adapter", + .vendorID = 11812, + .productID = 245, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Mayflash N64 Controller Adapter", + .vendorID = 12068, + .productID = 244, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash N64 Controller Adapter", + .vendorID = 121, + .productID = 6265, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash Saturn Adapter", + .vendorID = 3727, + .productID = 12304, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mayflash Wii Classic Adapter", + .vendorID = 2341, + .productID = 1000, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Mayflash Wii DolphinBar", + .vendorID = 121, + .productID = 6147, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Mayflash Wii U Pro Adapter", + .vendorID = 121, + .productID = 6144, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mega Drive Controller", + .vendorID = 121, + .productID = 6180, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mega Drive Controller", + .vendorID = 121, + .productID = 6318, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mega Drive Controller", + .vendorID = 5824, + .productID = 2713, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Dual Strike", + .vendorID = 1118, + .productID = 40, + .version = 0, + .rightx = HID_A0, + .righty = HID_A1_REV, + .button1 = HID_B3, + .button2 = HID_B2, + },{ + .name = "Microsoft SideWinder", + .vendorID = 1118, + .productID = 3, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft SideWinder", + .vendorID = 1118, + .productID = 7, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft SideWinder Freestyle Pro", + .vendorID = 1118, + .productID = 14, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft SideWinder Plug and Play", + .vendorID = 1118, + .productID = 39, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Miller Lite Cantroller", + .vendorID = 3368, + .productID = 514, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MLG", + .vendorID = 7085, + .productID = 61475, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MLG Fightstick TE", + .vendorID = 7085, + .productID = 61502, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MLG PS3 Controller", + .vendorID = 1848, + .productID = 33379, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mobapad Chitu HD", + .vendorID = 9029, + .productID = 57365, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mobapad Chitu HD", + .vendorID = 6473, + .productID = 1033, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mocute M053", + .vendorID = 65535, + .productID = 0, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B3, + .button2 = HID_B2, + },{ + .name = "Moga 2", + .vendorID = 8406, + .productID = 35301, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Moga Pro", + .vendorID = 8406, + .productID = 25201, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Moga Pro", + .vendorID = 8406, + .productID = 3501, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Moga XP5A Plus", + .vendorID = 9414, + .productID = 35114, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Moga XP5A Plus", + .vendorID = 9414, + .productID = 35115, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Moga XP5X Plus", + .vendorID = 9414, + .productID = 35098, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Moga XP5X Plus", + .vendorID = 9414, + .productID = 35099, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MP-8866 Super Dual Box", + .vendorID = 2341, + .productID = 34918, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "MUSIA PlayStation 2 Input Display", + .vendorID = 4617, + .productID = 34884, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "N64 Adaptoid", + .vendorID = 1783, + .productID = 1, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B3, + },{ + .name = "N64 Controller", + .vendorID = 3695, + .productID = 4371, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Nacon GC 400ES", + .vendorID = 5227, + .productID = 3073, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nacon Revolution 3 PS4 Controller", + .vendorID = 5227, + .productID = 1553, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Nacon Revolution 5 Pro", + .vendorID = 12933, + .productID = 3351, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Nacon Revolution 5 Pro", + .vendorID = 12933, + .productID = 3353, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Nacon Revolution Infinity PS4 Controller", + .vendorID = 5227, + .productID = 3344, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Nacon Revolution Unlimited Pro Controller", + .vendorID = 5227, + .productID = 3336, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Nebular", + .vendorID = 4797, + .productID = 49153, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "NeGcon Adapter", + .vendorID = 1003, + .productID = 0, + .version = 0, + .leftx = HID_A1, + .button1 = HID_A2, + .button2 = HID_B13, + },{ + .name = "NEO SE", + .vendorID = 1848, + .productID = 48879, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NeoGeo X Arcade Stick", + .vendorID = 4754, + .productID = 20039, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NES 2 port Adapter", + .vendorID = 4754, + .productID = 17995, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NES Controller", + .vendorID = 3840, + .productID = 1, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NES Controller", + .vendorID = 4754, + .productID = 17987, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NEXILUX GameCube Controller Adapter", + .vendorID = 121, + .productID = 6213, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NEXT SNES Controller", + .vendorID = 2064, + .productID = 58625, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Nexus", + .vendorID = 2821, + .productID = 17664, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NGDS", + .vendorID = 8213, + .productID = 33281, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nostromo N45", + .vendorID = 1293, + .productID = 2051, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NSO N64 Controller", + .vendorID = 1406, + .productID = 8217, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NSO SNES Controller", + .vendorID = 1406, + .productID = 8215, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NVIDIA Controller", + .vendorID = 2389, + .productID = 29204, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A6, + .button1 = HID_B11, + .button2 = HID_B10, + },{ + .name = "NVIDIA Shield", + .vendorID = 2389, + .productID = 29200, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B9, + .button2 = HID_B8, + },{ + .name = "NVIDIA Virtual", + .vendorID = 2389, + .productID = 46080, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nyko Air Flo Xbox Controller", + .vendorID = 3090, + .productID = 34818, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NYKO Airflo EX", + .vendorID = 4683, + .productID = 19713, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nyko Airflo PS3 Controller", + .vendorID = 8406, + .productID = 22301, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Nyko Playpad", + .vendorID = 7545, + .productID = 9, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Onlive Controller", + .vendorID = 9080, + .productID = 4106, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B15, + .button2 = HID_B14, + },{ + .name = "Onyx", + .vendorID = 3853, + .productID = 260, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Onza CE", + .vendorID = 5769, + .productID = 64769, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Onza TE", + .vendorID = 5769, + .productID = 64768, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "OPP PS3 Controller", + .vendorID = 8406, + .productID = 22381, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Orange Controller", + .vendorID = 5227, + .productID = 41217, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "OUYA Controller", + .vendorID = 10294, + .productID = 1, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B3, + },{ + .name = "P4 Gamepad", + .vendorID = 3090, + .productID = 3830, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PC Controller", + .vendorID = 121, + .productID = 290, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PDP Fightpad Pro GameCube Controller", + .vendorID = 3695, + .productID = 389, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "PDP PS3 Versus Fighting", + .vendorID = 3695, + .productID = 265, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PDP Realmz Nintendo Switch Controller", + .vendorID = 3695, + .productID = 393, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PlaySega", + .vendorID = 3727, + .productID = 65, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "PowerA Core Controller", + .vendorID = 8406, + .productID = 42769, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Fusion Nintendo Switch Arcade Stick", + .vendorID = 25309, + .productID = 42773, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Fusion Nintendo Switch Fight Pad", + .vendorID = 8406, + .productID = 42770, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Fusion Pro Nintendo Switch Controller", + .vendorID = 25309, + .productID = 42774, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Nintendo Switch Controller", + .vendorID = 8406, + .productID = 42771, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA OPS Pro Wireless Controller", + .vendorID = 8406, + .productID = 16435, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA OPS Wireless Controller", + .vendorID = 8406, + .productID = 16422, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA Pro Ex", + .vendorID = 8406, + .productID = 51821, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA PS3 Controller", + .vendorID = 1634, + .productID = 28885, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PowerA Spectra Nintendo Switch Controller", + .vendorID = 8406, + .productID = 42772, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Precision", + .vendorID = 1133, + .productID = 51844, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Pro Elite PS3 Controller", + .vendorID = 8406, + .productID = 22421, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Pro Ex Mini", + .vendorID = 9414, + .productID = 21274, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Pro Ex mini PS3 Controller", + .vendorID = 8406, + .productID = 12703, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Pro Ex mini PS3 Controller", + .vendorID = 8406, + .productID = 22471, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Pro5", + .vendorID = 3090, + .productID = 3601, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS1 Controller", + .vendorID = 2064, + .productID = 1, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS1 Controller", + .vendorID = 3727, + .productID = 12405, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button2 = HID_B2, + },{ + .name = "PS2 Controller", + .vendorID = 2064, + .productID = 3, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A4, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS2 Controller", + .vendorID = 2341, + .productID = 34816, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS2 Controller", + .vendorID = 2341, + .productID = 34920, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS2 Controller", + .vendorID = 2341, + .productID = 34952, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS2 Controller", + .vendorID = 5227, + .productID = 771, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS2 Controller", + .vendorID = 3485, + .productID = 12307, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS2 Dual Plus Adapter", + .vendorID = 6677, + .productID = 8802, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 2578, + .productID = 1, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 3090, + .productID = 1811, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS3 Controller", + .vendorID = 3090, + .productID = 61724, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS3 Controller", + .vendorID = 3090, + .productID = 3833, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS3 Controller", + .vendorID = 2341, + .productID = 6145, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 2341, + .productID = 6146, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 2341, + .productID = 5, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 8015, + .productID = 8, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS3 Controller", + .vendorID = 9571, + .productID = 1397, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 34952, + .productID = 776, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 34952, + .productID = 1032, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "PS3 Controller", + .vendorID = 3727, + .productID = 3, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 3727, + .productID = 12564, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS3 Controller", + .vendorID = 8890, + .productID = 4128, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 1800, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 7697, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 7698, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 3603, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 3605, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 3608, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 7704, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 7705, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 3614, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 22441, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 22442, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 7410, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 7411, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 7412, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 7413, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3090, + .productID = 3831, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3602, + .productID = 3090, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 3606, + .productID = 3090, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 7706, + .productID = 3090, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2976, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Access Controller", + .vendorID = 1356, + .productID = 3679, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3570, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PSX", + .vendorID = 1411, + .productID = 8272, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Qanba 2", + .vendorID = 3888, + .productID = 4353, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba 2P", + .vendorID = 3888, + .productID = 4354, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Qanba Arcade Stick 1008", + .vendorID = 3888, + .productID = 4352, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Arcade Stick 4018", + .vendorID = 3888, + .productID = 4374, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Dragon Arcade Joystick", + .vendorID = 11298, + .productID = 9472, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Drone Arcade Stick", + .vendorID = 11298, + .productID = 8192, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Joystick", + .vendorID = 3888, + .productID = 4370, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Joystick Plus", + .vendorID = 3888, + .productID = 4114, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Qanba Joystick Q4RAF", + .vendorID = 6708, + .productID = 1025, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B5, + .button2 = HID_B6, + },{ + .name = "Qanba Obsidian Arcade Stick PS3", + .vendorID = 11298, + .productID = 8962, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Obsidian Arcade Stick PS4", + .vendorID = 11298, + .productID = 8960, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "R1 Mobile Controller", + .vendorID = 9354, + .productID = 33382, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B3, + .button2 = HID_B1, + },{ + .name = "RadioShack", + .vendorID = 26376, + .productID = 9830, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Ramox FPS Controller", + .vendorID = 4607, + .productID = 13127, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Raphnet 3DO Adapter", + .vendorID = 10395, + .productID = 35, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Raphnet 3DO Adapter", + .vendorID = 10395, + .productID = 105, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Raphnet Dreamcast Adapter", + .vendorID = 10395, + .productID = 8, + .version = 0, + .leftx = HID_A0, + .righty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Raphnet Dreamcast Adapter", + .vendorID = 10395, + .productID = 208, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Raphnet GameCube Adapter", + .vendorID = 10395, + .productID = 98, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B7, + },{ + .name = "Raphnet GC and N64 Adapter", + .vendorID = 10395, + .productID = 50, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B7, + },{ + .name = "Raphnet GC and N64 Adapter", + .vendorID = 10395, + .productID = 96, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B7, + },{ + .name = "Raphnet Jaguar Adapter", + .vendorID = 10395, + .productID = 24, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Raphnet N64 Adapter", + .vendorID = 10395, + .productID = 97, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Raphnet N64 Adapter", + .vendorID = 10395, + .productID = 99, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Raphnet NES Adapter", + .vendorID = 10395, + .productID = 2, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B7, + .button2 = HID_B6, + },{ + .name = "Raphnet PS1 and PS2 Adapter", + .vendorID = 10395, + .productID = 68, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Raphnet Saturn", + .vendorID = 10395, + .productID = 67, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Raphnet Saturn Adapter 2.0", + .vendorID = 10395, + .productID = 5, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Raphnet SNES Adapter", + .vendorID = 10395, + .productID = 3, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B4, + },{ + .name = "Raphnet SNES Adapter", + .vendorID = 10395, + .productID = 38, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Raphnet SNES Adapter", + .vendorID = 10395, + .productID = 46, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Raphnet SNES Adapter", + .vendorID = 10395, + .productID = 47, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Raphnet SNES Adapter", + .vendorID = 10395, + .productID = 86, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Raphnet SNES Adapter", + .vendorID = 10395, + .productID = 87, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Raphnet Vectrex Adapter", + .vendorID = 10395, + .productID = 30, + .version = 0, + .leftx = HID_A1, + .lefty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Raphnet Wii Classic Adapter", + .vendorID = 10395, + .productID = 43, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Raphnet Wii Classic Adapter", + .vendorID = 10395, + .productID = 44, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Raphnet Wii Classic Adapter", + .vendorID = 10395, + .productID = 128, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Rapoo Gamepad", + .vendorID = 121, + .productID = 6287, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Razer Hydra", + .vendorID = 5426, + .productID = 768, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Kishi", + .vendorID = 10232, + .productID = 3007, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B6, + .button2 = HID_B7, + },{ + .name = "Razer Panthera PS3 Controller", + .vendorID = 5426, + .productID = 1026, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Panthera PS4", + .vendorID = 5426, + .productID = 1025, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raiju", + .vendorID = 5426, + .productID = 4096, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raiju Mobile", + .vendorID = 5426, + .productID = 1797, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Raiju Mobile", + .vendorID = 5426, + .productID = 1799, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Raiju TE", + .vendorID = 5426, + .productID = 4103, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raiju TE", + .vendorID = 5426, + .productID = 4106, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raiju UE", + .vendorID = 5426, + .productID = 4100, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raiju UE", + .vendorID = 5426, + .productID = 4105, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raion PS4 Fightpad", + .vendorID = 5426, + .productID = 4352, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Serval", + .vendorID = 5426, + .productID = 2304, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Retro Bit Sega Genesis Controller Adapter", + .vendorID = 4754, + .productID = 18245, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Retro Controller", + .vendorID = 121, + .productID = 17, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Retro Controller", + .vendorID = 1411, + .productID = 8288, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Retrode Adapter", + .vendorID = 1027, + .productID = 38849, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B4, + },{ + .name = "Retrolink Sega Saturn Classic Controller", + .vendorID = 4797, + .productID = 53267, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Retrolink SNES Controller", + .vendorID = 4797, + .productID = 53269, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "RetroUSB N64 RetroPort", + .vendorID = 4660, + .productID = 4, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B7, + .button2 = HID_B6, + },{ + .name = "RetroUSB RetroPad", + .vendorID = 61440, + .productID = 3, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B5, + },{ + .name = "RetroUSB Super RetroPort", + .vendorID = 61440, + .productID = 241, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B5, + },{ + .name = "Revenger", + .vendorID = 1411, + .productID = 24585, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Revolution Pro Controller", + .vendorID = 5227, + .productID = 3329, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Revolution Pro Controller 2", + .vendorID = 5227, + .productID = 3330, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Revolution Pro Controller 3", + .vendorID = 5227, + .productID = 3347, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Rock Candy", + .vendorID = 3695, + .productID = 287, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Rock Candy", + .vendorID = 3695, + .productID = 326, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Rock Candy Controller", + .vendorID = 9414, + .productID = 64254, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Rock Candy Nintendo Switch Controller", + .vendorID = 3695, + .productID = 391, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Rock Candy PS3 Controller", + .vendorID = 3695, + .productID = 286, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Rock Candy PS3 Controller", + .vendorID = 3695, + .productID = 296, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Rock Candy PS3 Controller", + .vendorID = 3695, + .productID = 303, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "ROG Chakram", + .vendorID = 2821, + .productID = 6371, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "ROG Chakram", + .vendorID = 2821, + .productID = 6373, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "ROG Chakram Core", + .vendorID = 2821, + .productID = 6488, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "ROG Chakram X", + .vendorID = 2821, + .productID = 6680, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "ROG Chakram X", + .vendorID = 2821, + .productID = 6682, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "ROG Chakram X", + .vendorID = 2821, + .productID = 6684, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Rumble Force", + .vendorID = 1103, + .productID = 53249, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "RX Gamepad", + .vendorID = 3853, + .productID = 173, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B4, + },{ + .name = "Sabertooth", + .vendorID = 5769, + .productID = 65024, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sabertooth", + .vendorID = 9414, + .productID = 23812, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Saitek Cyborg", + .vendorID = 1699, + .productID = 62746, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek Cyborg V.1 Game", + .vendorID = 1699, + .productID = 63011, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek Dual Analog", + .vendorID = 3888, + .productID = 274, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Saitek P220", + .vendorID = 1699, + .productID = 263, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Saitek P2500 Force Rumble", + .vendorID = 1699, + .productID = 65292, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Saitek P2600", + .vendorID = 1699, + .productID = 24333, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek P2600", + .vendorID = 1699, + .productID = 65293, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek P2900", + .vendorID = 1699, + .productID = 1036, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek P3200", + .vendorID = 1699, + .productID = 62744, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek P480 Rumble", + .vendorID = 3888, + .productID = 272, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Saitek P880", + .vendorID = 1699, + .productID = 265, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Saitek P990", + .vendorID = 1699, + .productID = 1035, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek PS1000 PlayStation Controller", + .vendorID = 1699, + .productID = 1569, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek PS2700 PlayStation Controller", + .vendorID = 1699, + .productID = 63008, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek Rumble", + .vendorID = 3888, + .productID = 273, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Samsung EIGP20", + .vendorID = 1256, + .productID = 40960, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sanwa Easy Grip", + .vendorID = 4544, + .productID = 20994, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sanwa Micro Grip P3", + .vendorID = 4544, + .productID = 20547, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Sanwa Micro Grip Pro", + .vendorID = 4673, + .productID = 20549, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A1, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Sanwa Micro Grip Pro", + .vendorID = 4544, + .productID = 20545, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Sanwa Online Grip", + .vendorID = 4544, + .productID = 20548, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sanwa PlayOnline Mobile", + .vendorID = 1907, + .productID = 260, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sanwa Smart Grip II", + .vendorID = 1411, + .productID = 8289, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Satechi Controller", + .vendorID = 4544, + .productID = 20736, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Score A", + .vendorID = 1103, + .productID = 45864, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Scuf PS4 Controller", + .vendorID = 11925, + .productID = 30501, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Sega Genesis Mini 3B Controller", + .vendorID = 3235, + .productID = 37, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sega Mega Drive Mini 6B Controller", + .vendorID = 3235, + .productID = 36, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sega Multi Controller", + .vendorID = 1240, + .productID = 59014, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sega Saturn Adapter", + .vendorID = 1280, + .productID = 39720, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Sega Saturn Controller", + .vendorID = 61440, + .productID = 8, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Sega Saturn Controller", + .vendorID = 1907, + .productID = 262, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sega Saturn Controller", + .vendorID = 1204, + .productID = 266, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SFX", + .vendorID = 1851, + .productID = 41220, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Shogun Bros Chameleon X1", + .vendorID = 8696, + .productID = 25, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "SnakeByte 4S PS4 Controller", + .vendorID = 3090, + .productID = 7708, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "SNES Controller", + .vendorID = 788, + .productID = 6153, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SNES Controller", + .vendorID = 6017, + .productID = 2710, + .version = 0, + .button1 = HID_B4, + .button2 = HID_B0, + },{ + .name = "SNES Controller", + .vendorID = 6017, + .productID = 2717, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B4, + },{ + .name = "SNES Controller", + .vendorID = 10379, + .productID = 3, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B4, + },{ + .name = "SNES Controller", + .vendorID = 4754, + .productID = 21318, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B4, + },{ + .name = "Sony DualShock 2", + .vendorID = 3727, + .productID = 4105, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sony DualShock 3", + .vendorID = 29489, + .productID = 1, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Adapter", + .vendorID = 26214, + .productID = 1639, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Adapter", + .vendorID = 1507, + .productID = 1430, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Classic Controller", + .vendorID = 1356, + .productID = 3290, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Controller", + .vendorID = 9571, + .productID = 1571, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Controller", + .vendorID = 9712, + .productID = 33729, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Sony PlayStation Controller Adapter", + .vendorID = 1241, + .productID = 3862, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Portable", + .vendorID = 255, + .productID = 459, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Vita", + .vendorID = 1356, + .productID = 4919, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Speedlink 6555", + .vendorID = 6708, + .productID = 2050, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Speedlink 6566", + .vendorID = 6708, + .productID = 2057, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Speedlink Competition Pro", + .vendorID = 1848, + .productID = 8727, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Speedlink Strike FX", + .vendorID = 3727, + .productID = 8, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Speedlink Torid", + .vendorID = 4544, + .productID = 37125, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Steam Virtual Gamepad", + .vendorID = 10462, + .productID = 4604, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Steam Virtual Gamepad", + .vendorID = 10462, + .productID = 4607, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Steel Play Metaltech PS4 Controller", + .vendorID = 3090, + .productID = 3606, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "SteelSeries", + .vendorID = 273, + .productID = 5145, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Free", + .vendorID = 4152, + .productID = 5138, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus Duo", + .vendorID = 273, + .productID = 5169, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus Duo", + .vendorID = 4152, + .productID = 5168, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus Duo", + .vendorID = 4152, + .productID = 5169, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus XL", + .vendorID = 4152, + .productID = 5144, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Street Fighter Fightstick TE", + .vendorID = 1848, + .productID = 18232, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Super Famicom Controller", + .vendorID = 2079, + .productID = 58369, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Super Famicom Controller", + .vendorID = 121, + .productID = 6148, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Super Racer", + .vendorID = 4660, + .productID = 19, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Szmy Power PC Gamepad", + .vendorID = 30021, + .productID = 4386, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "T16000M", + .vendorID = 1103, + .productID = 45322, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "TAC GEAR", + .vendorID = 3853, + .productID = 123, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Taito Egret II Mini Control Panel", + .vendorID = 2788, + .productID = 1795, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B4, + .button2 = HID_B2, + },{ + .name = "Taito Egret II Mini Controller", + .vendorID = 2788, + .productID = 1794, + .version = 0, + .button1 = HID_B4, + .button2 = HID_B2, + },{ + .name = "TE Kitty", + .vendorID = 5336, + .productID = 40961, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Team 5", + .vendorID = 6650, + .productID = 1543, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Techmobility X6-38V", + .vendorID = 1973, + .productID = 786, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Technology Innovation PS2 Adapter", + .vendorID = 8890, + .productID = 263, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Tencent Xianyou Gamepad", + .vendorID = 4550, + .productID = 16, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "TGZ Controller", + .vendorID = 121, + .productID = 6172, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "TGZ Controller", + .vendorID = 121, + .productID = 294, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "THEC64 Joystick", + .vendorID = 7257, + .productID = 36, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "THEGamepad", + .vendorID = 7257, + .productID = 38, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Thrustmaster Dual Analog 4", + .vendorID = 1103, + .productID = 45845, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Dual Trigger PlayStation Controller", + .vendorID = 1103, + .productID = 45859, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thrustmaster eSwap Pro Controller", + .vendorID = 1103, + .productID = 53262, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Ferrari 150 PlayStation Controller", + .vendorID = 1103, + .productID = 53256, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Firestorm Dual Power", + .vendorID = 1103, + .productID = 45824, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Firestorm Dual Power", + .vendorID = 1103, + .productID = 45828, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Run N Drive PlayStation Controller", + .vendorID = 1103, + .productID = 53251, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Run N Drive PlayStation Controller", + .vendorID = 1103, + .productID = 53257, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thunderpad", + .vendorID = 1133, + .productID = 51848, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "TigerGame PlayStation Adapter", + .vendorID = 26214, + .productID = 34818, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "TigerGame PlayStation Adapter", + .vendorID = 26214, + .productID = 34820, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "TMini", + .vendorID = 1103, + .productID = 53255, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Tomee NES Controller Adapter", + .vendorID = 7511, + .productID = 33, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Tomee SNES Controller Adapter", + .vendorID = 7511, + .productID = 32, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Tournament PS3 Controller", + .vendorID = 8406, + .productID = 96, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Tronsmart", + .vendorID = 4544, + .productID = 21760, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Trust Gamepad", + .vendorID = 5215, + .productID = 453, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Trust Gamepad", + .vendorID = 1464, + .productID = 4098, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "TWCS Throttle", + .vendorID = 1103, + .productID = 46727, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + },{ + .name = "Twin Shock", + .vendorID = 4673, + .productID = 20484, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "TwinShock PS2 Controller", + .vendorID = 1241, + .productID = 2, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Uniplay U6", + .vendorID = 6421, + .productID = 30806, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "uRage Gamepad", + .vendorID = 7184, + .productID = 7191, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "USB Controller", + .vendorID = 1035, + .productID = 25904, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "USB Controller", + .vendorID = 12068, + .productID = 110, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "USB Controller", + .vendorID = 3888, + .productID = 263, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "USB Controller", + .vendorID = 6708, + .productID = 2083, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "USB Controller", + .vendorID = 26214, + .productID = 34817, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "USB Controller", + .vendorID = 5227, + .productID = 770, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "USB Controller", + .vendorID = 121, + .productID = 10, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "USB Controller", + .vendorID = 1204, + .productID = 50817, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "USB Controller", + .vendorID = 1973, + .productID = 789, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "USB Controller", + .vendorID = 4797, + .productID = 53266, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "USB Controller", + .vendorID = 4607, + .productID = 13121, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A4, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "USB Vibration Joystick", + .vendorID = 9571, + .productID = 1315, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "V5 Game Pad", + .vendorID = 10376, + .productID = 1283, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Venom", + .vendorID = 121, + .productID = 6170, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Venom Arcade Joystick", + .vendorID = 121, + .productID = 6171, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Victrix PS4 Pro Fightstick", + .vendorID = 3695, + .productID = 515, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Victrix PS4 Pro Fightstick", + .vendorID = 3695, + .productID = 519, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "vJoy Device", + .vendorID = 4660, + .productID = 48813, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Warrior Joypad JS083", + .vendorID = 3090, + .productID = 22443, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Wii U Pro", + .vendorID = 1406, + .productID = 816, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Wildcat", + .vendorID = 5426, + .productID = 2563, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Wolverine", + .vendorID = 5426, + .productID = 2580, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 5678, + .productID = 48879, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1848, + .productID = 18198, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1848, + .productID = 17696, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1848, + .productID = 17446, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1848, + .productID = 18214, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1848, + .productID = 46886, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1848, + .productID = 18230, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A7, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 1817, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 654, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 657, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 7085, + .productID = 64768, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 7085, + .productID = 64769, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 7085, + .productID = 61462, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 7085, + .productID = 654, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 9414, + .productID = 21248, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 9414, + .productID = 64253, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Fightpad", + .vendorID = 1848, + .productID = 18216, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Wireless Receiver", + .vendorID = 1118, + .productID = 673, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Adaptive Controller", + .vendorID = 1118, + .productID = 2826, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 3090, + .productID = 34826, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 3090, + .productID = 34832, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 1578, + .productID = 32, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 1848, + .productID = 17686, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 1848, + .productID = 17702, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 1848, + .productID = 17718, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 1848, + .productID = 17798, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 1118, + .productID = 514, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 1118, + .productID = 645, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 1118, + .productID = 647, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 1118, + .productID = 649, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 2828, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 721, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 733, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 736, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 739, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 746, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 765, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 767, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 3695, + .productID = 680, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 3695, + .productID = 712, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 9414, + .productID = 21562, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xeox", + .vendorID = 6708, + .productID = 2054, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xeox SL6556BK", + .vendorID = 3141, + .productID = 17184, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "XGear", + .vendorID = 3695, + .productID = 3, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Xiaomi Black Shark (L)", + .vendorID = 65504, + .productID = 258, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + },{ + .name = "Xiaomi Controller", + .vendorID = 10007, + .productID = 12612, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xiaomi XMGP01YM", + .vendorID = 10007, + .productID = 20531, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xiaomi XMGP01YM", + .vendorID = 8380, + .productID = 24656, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xterminator Digital Gamepad", + .vendorID = 1149, + .productID = 16387, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Yawman Arrow", + .vendorID = 13868, + .productID = 1, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B4, + .button2 = HID_B5, + },{ + .name = "ZDT Android Controller", + .vendorID = 121, + .productID = 6223, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Zeroplus Adapter", + .vendorID = 3090, + .productID = 5, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Zeroplus P4 Gamepad", + .vendorID = 3090, + .productID = 7696, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "2 In 1 Joystick", + .vendorID = 3727, + .productID = 3, + .version = 265, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "8BitDo Adapter", + .vendorID = 11720, + .productID = 12544, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Adapter 2", + .vendorID = 11720, + .productID = 12549, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Dogbone", + .vendorID = 11720, + .productID = 20745, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo FC30 Pro", + .vendorID = 11720, + .productID = 36864, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo FC30 Pro", + .vendorID = 11720, + .productID = 14352, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo GameCube", + .vendorID = 11720, + .productID = 10346, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B3, + },{ + .name = "8BitDo Lite 2", + .vendorID = 11720, + .productID = 20754, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite 2", + .vendorID = 11720, + .productID = 20754, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite SE", + .vendorID = 11720, + .productID = 20753, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite SE", + .vendorID = 11720, + .productID = 20753, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo M30", + .vendorID = 3235, + .productID = 36, + .version = 518, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 11720, + .productID = 20737, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 11720, + .productID = 20486, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 11720, + .productID = 1617, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Micro", + .vendorID = 11720, + .productID = 36896, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30", + .vendorID = 11720, + .productID = 20740, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30 Pro 2", + .vendorID = 11720, + .productID = 36885, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30 Pro 2", + .vendorID = 11720, + .productID = 10341, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N64", + .vendorID = 11720, + .productID = 10345, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NEOGEO", + .vendorID = 11720, + .productID = 36901, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NEOGEO", + .vendorID = 11720, + .productID = 36901, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NEOGEO", + .vendorID = 11720, + .productID = 36902, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NES30", + .vendorID = 4661, + .productID = 43794, + .version = 1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo NES30", + .vendorID = 11720, + .productID = 43794, + .version = 1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NES30", + .vendorID = 11720, + .productID = 10272, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NES30 Pro", + .vendorID = 8194, + .productID = 36864, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo NES30 Pro", + .vendorID = 14368, + .productID = 9, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo NES30 Pro", + .vendorID = 11720, + .productID = 36865, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo P30", + .vendorID = 11720, + .productID = 20743, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo P30", + .vendorID = 11720, + .productID = 20744, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Pro 2", + .vendorID = 11720, + .productID = 24582, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Pro 2", + .vendorID = 11720, + .productID = 24582, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Receiver", + .vendorID = 11720, + .productID = 12545, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Receiver", + .vendorID = 11720, + .productID = 12546, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Receiver", + .vendorID = 11720, + .productID = 12547, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Receiver", + .vendorID = 11720, + .productID = 12548, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo S30", + .vendorID = 11720, + .productID = 26408, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8Bitdo SFC30 Gamepad", + .vendorID = 11720, + .productID = 10288, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SFC30 Joystick", + .vendorID = 10256, + .productID = 9, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30", + .vendorID = 11720, + .productID = 20739, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30", + .vendorID = 11720, + .productID = 36882, + .version = 1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30", + .vendorID = 11720, + .productID = 10304, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 24577, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 24833, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 11720, + .productID = 24578, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 11720, + .productID = 24834, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Ultimate", + .vendorID = 11720, + .productID = 12306, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate 2C", + .vendorID = 11720, + .productID = 12315, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate 2C", + .vendorID = 11720, + .productID = 12317, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate C", + .vendorID = 11720, + .productID = 12309, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate C", + .vendorID = 11720, + .productID = 12310, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate C", + .vendorID = 11720, + .productID = 12311, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate Wired", + .vendorID = 11720, + .productID = 12305, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate Wireless", + .vendorID = 11720, + .productID = 12307, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate Wireless Controller", + .vendorID = 11720, + .productID = 12307, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Zero", + .vendorID = 1440, + .productID = 12850, + .version = 264, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Zero", + .vendorID = 1440, + .productID = 12850, + .version = 265, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Zero 2", + .vendorID = 11720, + .productID = 36888, + .version = 1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Zero 2", + .vendorID = 11720, + .productID = 12848, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A31, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Amazon Luna Controller", + .vendorID = 6473, + .productID = 1049, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Amazon Luna Controller", + .vendorID = 369, + .productID = 1049, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Anbernic Gamepad", + .vendorID = 4104, + .productID = 485, + .version = 1049, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Anbernic RG P01", + .vendorID = 13623, + .productID = 4166, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Astro City Mini", + .vendorID = 3235, + .productID = 39, + .version = 771, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Astro City Mini", + .vendorID = 3235, + .productID = 40, + .version = 771, + .leftx = HID_A3, + .lefty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "ASUS Gamepad", + .vendorID = 2821, + .productID = 17664, + .version = 49, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "ASUS ROG Kunai 3", + .vendorID = 2821, + .productID = 30981, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "ASUS ROG Kunai 3", + .vendorID = 2821, + .productID = 30982, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Classic", + .vendorID = 12880, + .productID = 4097, + .version = 325, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Classic Controller", + .vendorID = 12880, + .productID = 4097, + .version = 327, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Modern Controller", + .vendorID = 12880, + .productID = 4098, + .version = 327, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 513, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 258, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 514, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 516, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Backbone One PlayStation Edition", + .vendorID = 13706, + .productID = 515, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "BDA MOGA XP5-X Plus", + .vendorID = 9414, + .productID = 35098, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "BDA MOGA XP5-X Plus", + .vendorID = 9414, + .productID = 35099, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "BDA PS4 Fightpad", + .vendorID = 8406, + .productID = 31018, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Brook Mars PS4 Controller", + .vendorID = 3090, + .productID = 3616, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Brook Mars PS4 Controller", + .vendorID = 3090, + .productID = 3617, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Cideko AK08b", + .vendorID = 1411, + .productID = 45105, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Cthulhu", + .vendorID = 5336, + .productID = 53198, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Cyber Gadget GameCube Controller", + .vendorID = 2342, + .productID = 34952, + .version = 648, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Cyborg V3 Rumble Pad PlayStation Controller", + .vendorID = 1699, + .productID = 63010, + .version = 769, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Dual Box Wii Classic Adapter", + .vendorID = 7545, + .productID = 769, + .version = 265, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Elecom JC-W01U", + .vendorID = 1390, + .productID = 8199, + .version = 528, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Faceoff Deluxe Nintendo Switch Controller", + .vendorID = 3695, + .productID = 388, + .version = 259, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Flydigi Vader 2", + .vendorID = 6421, + .productID = 64, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B15, + },{ + .name = "Flydigi Vader 2", + .vendorID = 1204, + .productID = 9233, + .version = 1025, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Flydigi Vader 2", + .vendorID = 1204, + .productID = 9234, + .version = 771, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameCube Controller Adapter", + .vendorID = 121, + .productID = 6214, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A20, + .lefty = HID_A4, + .righty = HID_A8, + .button1 = HID_B4, + .button2 = HID_B0, + },{ + .name = "GameSir-T3 2.02", + .vendorID = 1452, + .productID = 1562, + .version = 514, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Gamestop BB070 X360 Controller", + .vendorID = 7085, + .productID = 63745, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameStop Gamepad", + .vendorID = 21319, + .productID = 28001, + .version = 25697, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameStop PS4 Fun Controller", + .vendorID = 4544, + .productID = 16385, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "GameStop Xbox 360 Controller", + .vendorID = 3695, + .productID = 513, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ .name = "GameWare PC Control Pad", .vendorID = 4607, - .productID = 13105, + .productID = 13105, + .version = 263, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Google Stadia Controller", + .vendorID = 6353, + .productID = 37888, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Gravis Eliminator Pro", + .vendorID = 1149, + .productID = 16389, + .version = 257, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Gravis GamePad Pro", + .vendorID = 1064, + .productID = 16385, + .version = 512, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "GreenAsia Joystick", + .vendorID = 3727, + .productID = 3, + .version = 263, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Hori Fighting Commander 3 Pro", + .vendorID = 3853, + .productID = 45, + .version = 4096, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 4 PS3", + .vendorID = 3853, + .productID = 95, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 4 PS3", + .vendorID = 3853, + .productID = 95, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 4 PS4", + .vendorID = 3853, + .productID = 94, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 4 PS4", + .vendorID = 3853, + .productID = 94, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander PS3", + .vendorID = 3853, + .productID = 132, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander PS3", + .vendorID = 3853, + .productID = 133, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Stick Mini", + .vendorID = 6708, + .productID = 515, + .version = 276, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Stick mini 4 PS3", + .vendorID = 3853, + .productID = 136, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Stick mini 4 PS4", + .vendorID = 3853, + .productID = 135, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Gem Pad 3", + .vendorID = 3853, + .productID = 77, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori PC Engine Mini Controller", + .vendorID = 3853, + .productID = 312, + .version = 264, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Pokken Tournament DX Pro", + .vendorID = 3853, + .productID = 146, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro for Nintendo Switch", + .vendorID = 3853, + .productID = 170, + .version = 1394, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Hori Split Pad Fit", + .vendorID = 3853, + .productID = 512, + .version = 279, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Switch Split Pad Pro", + .vendorID = 3853, + .productID = 512, + .version = 277, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad 4 PS3", + .vendorID = 3853, + .productID = 110, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad 4 PS4", + .vendorID = 3853, + .productID = 102, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad FPS Plus 4", + .vendorID = 3853, + .productID = 102, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad Mini 4", + .vendorID = 3853, + .productID = 238, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad Nintendo Switch Controller", + .vendorID = 3853, + .productID = 193, + .version = 1394, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hyperkin N64 Adapter", + .vendorID = 11812, + .productID = 3071, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hyperkin N64 Controller Adapter", + .vendorID = 121, + .productID = 38222, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "iBuffalo Super Famicom Controller", + .vendorID = 1411, + .productID = 8288, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "InterAct AxisPad", + .vendorID = 1519, + .productID = 3, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Interact GoPad", + .vendorID = 1533, + .productID = 12288, + .version = 272, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "Joy-Con (L)", + .vendorID = 1406, + .productID = 8198, + .version = 1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (R)", + .vendorID = 1406, + .productID = 8199, + .version = 1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "JYS Adapter", + .vendorID = 12068, + .productID = 45, + .version = 263, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Logitech Controller", + .vendorID = 1133, + .productID = 49689, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech Dual Action", + .vendorID = 1133, + .productID = 49686, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech Dual Action", + .vendorID = 1133, + .productID = 49686, + .version = 768, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech Dual Action", + .vendorID = 1133, + .productID = 49686, + .version = 1044, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech F310", + .vendorID = 1133, + .productID = 49686, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech F510", + .vendorID = 1133, + .productID = 49688, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech F710", + .vendorID = 1133, + .productID = 49689, + .version = 773, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech F710", + .vendorID = 1133, + .productID = 49695, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech RumblePad 2", + .vendorID = 1133, + .productID = 49688, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz PS3 Fightpad Pro", + .vendorID = 1848, + .productID = 12880, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz PS3 Fightstick TE S Plus", + .vendorID = 1848, + .productID = 13188, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz PS4 Fightpad Pro", + .vendorID = 1848, + .productID = 33360, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz PS4 Fightstick TE S Plus", + .vendorID = 1848, + .productID = 33668, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Marvo GT-004", + .vendorID = 121, + .productID = 6, + .version = 263, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Mayflash Controller Adapter", + .vendorID = 3727, + .productID = 12307, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A6_REV, + .lefty = HID_A2, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B4, + },{ + .name = "Mayflash GameCube Adapter", + .vendorID = 121, + .productID = 6211, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A20, + .lefty = HID_A4, + .righty = HID_A8, + .button1 = HID_B4, + .button2 = HID_B0, + },{ + .name = "Mayflash GameCube Controller", + .vendorID = 121, + .productID = 6212, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash Magic NS", + .vendorID = 12068, + .productID = 115, + .version = 512, + .rightx = HID_A2, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Mayflash Magic NS", + .vendorID = 121, + .productID = 6354, + .version = 294, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Mayflash Magic NS", + .vendorID = 8406, + .productID = 42768, + .version = 259, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash Saturn Adapter", + .vendorID = 3727, + .productID = 12304, + .version = 273, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Mayflash Wii Classic Adapter", + .vendorID = 2341, + .productID = 1000, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Mayflash Wii DolphinBar", + .vendorID = 121, + .productID = 6147, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A8, + .lefty = HID_A4, + .righty = HID_A12, + .button1 = HID_B8, + .button2 = HID_B12, + },{ + .name = "Mayflash Wii U Pro Adapter", + .vendorID = 121, + .productID = 6144, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A8, + .lefty = HID_A4, + .righty = HID_A12, + .button1 = HID_B4, + .button2 = HID_B8, + },{ + .name = "Mayflash Wii U Pro Adapter", + .vendorID = 121, + .productID = 6144, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A8, + .lefty = HID_A4, + .righty = HID_A12, + .button1 = HID_B4, + .button2 = HID_B8, + },{ + .name = "Microsoft Dual Strike", + .vendorID = 1118, + .productID = 40, + .version = 258, + .rightx = HID_A0, + .righty = HID_A1_REV, + .button1 = HID_B3, + .button2 = HID_B2, + },{ + .name = "Microsoft SideWinder", + .vendorID = 1118, + .productID = 3, + .version = 262, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft SideWinder", + .vendorID = 1118, + .productID = 7, + .version = 262, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft SideWinder Plug and Play", + .vendorID = 1118, + .productID = 39, + .version = 257, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mobapad Chitu HD", + .vendorID = 9029, + .productID = 57365, + .version = 1394, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Moga Pro 2", + .vendorID = 8406, + .productID = 25201, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MOGA XP5A Plus", + .vendorID = 9414, + .productID = 35114, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MOGA XP5A Plus", + .vendorID = 9414, + .productID = 35115, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NeoGeo mini PAD Controller", + .vendorID = 9571, + .productID = 1397, + .version = 512, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NES 2-port Adapter", + .vendorID = 4754, + .productID = 17995, + .version = 515, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NEXT SNES Controller", + .vendorID = 2064, + .productID = 58625, + .version = 262, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 528, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 2047, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NSO N64 Controller", + .vendorID = 1406, + .productID = 8217, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NSO SNES Controller", + .vendorID = 1406, + .productID = 8215, + .version = 1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NVIDIA Controller", + .vendorID = 2389, + .productID = 29204, + .version = 1317, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nyko Airflo EX", + .vendorID = 4683, + .productID = 19713, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PB Tails Choc", + .vendorID = 121, + .productID = 6172, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP PS3 Versus Fighting", + .vendorID = 3695, + .productID = 265, + .version = 258, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Piranha Xtreme PS3 Controller", + .vendorID = 3727, + .productID = 3, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PowerA Core Plus Gamecube Controller", + .vendorID = 8406, + .productID = 42769, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "PowerA Nintendo Switch Controller", + .vendorID = 8406, + .productID = 42769, + .version = 1296, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Pro Ex", + .vendorID = 8406, + .productID = 51821, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS2 Adapter", + .vendorID = 2064, + .productID = 3, + .version = 262, + .leftx = HID_A0, + .rightx = HID_A4, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 1394, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2976, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Access Controller", + .vendorID = 1356, + .productID = 3679, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3570, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3570, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PXN P30 Pro Mobile", + .vendorID = 1118, + .productID = 736, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Qanba Dragon Arcade Joystick PS3", + .vendorID = 11298, + .productID = 9474, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Drone Arcade Stick", + .vendorID = 11298, + .productID = 8192, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Raphnet SNES Adapter", + .vendorID = 10395, + .productID = 86, + .version = 544, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Raphnet Wii Classic Adapter", + .vendorID = 10395, + .productID = 128, + .version = 546, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Razer Onza TE", + .vendorID = 5769, + .productID = 64768, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Panthera PS3 Controller", + .vendorID = 5426, + .productID = 1026, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Panthera PS4", + .vendorID = 5426, + .productID = 1025, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raiju", + .vendorID = 5426, + .productID = 4096, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raiju Mobile", + .vendorID = 5426, + .productID = 1797, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Raion PS4 Fightpad", + .vendorID = 5426, + .productID = 4352, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Serval", + .vendorID = 5426, + .productID = 2304, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Serval", + .vendorID = 5426, + .productID = 2304, + .version = 14870, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Wildcat", + .vendorID = 5426, + .productID = 2563, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Redgear", + .vendorID = 9571, + .productID = 1408, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Retro Bit Sega Genesis Controller Adapter", + .vendorID = 4754, + .productID = 18245, + .version = 512, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Retro Controller", + .vendorID = 121, + .productID = 17, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Retro Controller", + .vendorID = 121, + .productID = 17, + .version = 261, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Retro Controller", + .vendorID = 1411, + .productID = 8288, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Retrode Adapter", + .vendorID = 1027, + .productID = 38849, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B4, + },{ + .name = "Retrolink SNES Controller", + .vendorID = 121, + .productID = 17, + .version = 262, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "RetroUSB N64 RetroPort", + .vendorID = 4660, + .productID = 4, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B7, + .button2 = HID_B6, + },{ + .name = "Revolution Pro Controller", + .vendorID = 5227, + .productID = 3329, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Revolution Pro Controller 3", + .vendorID = 5227, + .productID = 3347, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Rii RK707", + .vendorID = 1356, + .productID = 616, + .version = 4098, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "Rock Candy Nintendo Switch Controller", + .vendorID = 3695, + .productID = 391, + .version = 261, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Rock Candy PS3", + .vendorID = 9414, + .productID = 64254, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Samsung EIGP20", + .vendorID = 1256, + .productID = 40960, + .version = 283, + .leftx = HID_A1, + .rightx = HID_A4, + .lefty = HID_A3, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B3, + },{ + .name = "Sanwa PlayOnline Mobile", + .vendorID = 1907, + .productID = 260, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sega Genesis Mini 3B Controller", + .vendorID = 3235, + .productID = 37, + .version = 518, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sega Saturn", + .vendorID = 6017, + .productID = 1406, + .version = 0, + .leftx = HID_A0, + .lefty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B4, + },{ + .name = "Sega Saturn", + .vendorID = 1204, + .productID = 266, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SFC30 Joystick", + .vendorID = 4661, + .productID = 43809, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "SNES RetroPort", + .vendorID = 61440, + .productID = 241, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Sony DualShock 4 Adapter", + .vendorID = 1356, + .productID = 2976, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Sony DualShock 4 V2", + .vendorID = 1356, + .productID = 2508, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Sony PlayStation Adapter", + .vendorID = 26214, + .productID = 1639, + .version = 648, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Classic Controller", + .vendorID = 1356, + .productID = 3290, + .version = 256, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Vita", + .vendorID = 1356, + .productID = 4919, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Steam Virtual Gamepad", + .vendorID = 1118, + .productID = 654, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Nimbus", + .vendorID = 273, + .productID = 5152, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Nimbus", + .vendorID = 273, + .productID = 5152, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Nimbus", + .vendorID = 4152, + .productID = 5152, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Nimbus Plus", + .vendorID = 18760, + .productID = 25924, + .version = 25955, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Nimbus Plus", + .vendorID = 26958, + .productID = 29557, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus Duo", + .vendorID = 4152, + .productID = 5168, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus Duo", + .vendorID = 4152, + .productID = 5169, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus XL", + .vendorID = 273, + .productID = 5143, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus XL", + .vendorID = 273, + .productID = 5143, + .version = 288, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Switch Hori Pad", + .vendorID = 3853, + .productID = 246, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SZMY Power PC Gamepad", + .vendorID = 30021, + .productID = 4386, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Taito Egret II Mini Control Panel", + .vendorID = 2788, + .productID = 1795, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B4, + .button2 = HID_B2, + },{ + .name = "Taito Egret II Mini Controller", + .vendorID = 2788, + .productID = 1794, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B4, + .button2 = HID_B2, + },{ + .name = "TGZ Controller", + .vendorID = 121, + .productID = 6172, + .version = 4099, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "THEC64 Joystick", + .vendorID = 7257, + .productID = 36, + .version = 33, + .leftx = HID_A0, + .lefty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "THEGamepad", + .vendorID = 7257, + .productID = 38, + .version = 33, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Thrustmaster Dual Analog 3.2", + .vendorID = 1103, + .productID = 45845, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Thrustmaster eSwap Pro Controller", + .vendorID = 1103, + .productID = 53262, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Firestorm Dual Power", + .vendorID = 1103, + .productID = 45824, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Tomee NES Controller Adapter", + .vendorID = 7511, + .productID = 33, + .version = 33, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Tomee Retro Controller", + .vendorID = 4797, + .productID = 53269, + .version = 256, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Tomee SNES Controller", + .vendorID = 4797, + .productID = 53269, + .version = 0, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Tomee SNES Controller Adapter", + .vendorID = 7511, + .productID = 32, + .version = 33, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Trust Gamepad", + .vendorID = 5215, + .productID = 453, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Twin USB Joystick", + .vendorID = 2064, + .productID = 1, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A6, + .lefty = HID_A2, + .righty = HID_A4, + .button1 = HID_B4, + .button2 = HID_B2, + },{ + .name = "Uberwith Controller", + .vendorID = 9571, + .productID = 1318, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Uniplay U6", + .vendorID = 6421, + .productID = 30806, + .version = 272, + .leftx = HID_A1, + .rightx = HID_A4, + .lefty = HID_A3, + .righty = HID_A5, + .button1 = HID_B3, + .button2 = HID_B6, + },{ + .name = "Victrix PS4 Pro Fightstick", + .vendorID = 3695, + .productID = 515, + .version = 1061, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Victrix PS4 Pro Fightstick", + .vendorID = 3695, + .productID = 519, + .version = 1539, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Wii Remote", + .vendorID = 26967, + .productID = 29807, + .version = 12328, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B4, + .button2 = HID_B5, + },{ + .name = "Wii U Pro Controller", + .vendorID = 26967, + .productID = 29807, + .version = 12584, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B16, + .button2 = HID_B15, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 654, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 3695, + .productID = 1025, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 9414, + .productID = 23812, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Adaptive Controller", + .vendorID = 1118, + .productID = 2826, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Elite Controller Series 2", + .vendorID = 1118, + .productID = 2821, + .version = 2307, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1297, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 2848, + .version = 1297, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 2848, + .version = 1299, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 2848, + .version = 1301, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 721, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 733, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 736, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 736, + .version = 2307, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 739, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 746, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 765, + .version = 2307, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One PowerA Controller", + .vendorID = 9414, + .productID = 21562, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1281, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1285, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1289, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1299, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1301, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Wireless Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1287, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Wireless Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1303, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Wireless Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1314, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Wireless Controller", + .vendorID = 1118, + .productID = 2850, + .version = 1303, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "XiaoMi Controller", + .vendorID = 10007, + .productID = 12612, + .version = 297, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Zeroplus P4", + .vendorID = 3090, + .productID = 3600, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Zeroplus P4", + .vendorID = 3090, + .productID = 7696, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "8BitDo Adapter", + .vendorID = 11720, + .productID = 12544, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Adapter 2", + .vendorID = 11720, + .productID = 12550, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Dogbone", + .vendorID = 11720, + .productID = 20745, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo FC30 Pro", + .vendorID = 4098, + .productID = 36864, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo FC30 Pro", + .vendorID = 11720, + .productID = 36864, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo FC30 Pro", + .vendorID = 11720, + .productID = 14352, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo GameCube", + .vendorID = 11720, + .productID = 10346, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B3, + },{ + .name = "8BitDo Lite 2", + .vendorID = 11720, + .productID = 20754, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite 2", + .vendorID = 11720, + .productID = 20754, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite SE", + .vendorID = 11720, + .productID = 20753, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite SE", + .vendorID = 11720, + .productID = 20753, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo M30", + .vendorID = 11720, + .productID = 20737, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 11720, + .productID = 20486, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 11720, + .productID = 1617, + .version = 256, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30 Xbox", + .vendorID = 11720, + .productID = 8202, + .version = 512, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Micro", + .vendorID = 11720, + .productID = 36896, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Micro", + .vendorID = 11720, + .productID = 36896, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30", + .vendorID = 11720, + .productID = 20740, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30 Pro 2", + .vendorID = 11720, + .productID = 36885, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30 Pro 2", + .vendorID = 11720, + .productID = 10341, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N64", + .vendorID = 11720, + .productID = 10345, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo N64", + .vendorID = 11720, + .productID = 10345, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NEOGEO", + .vendorID = 11720, + .productID = 36901, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NES30", + .vendorID = 32768, + .productID = 4098, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "8BitDo NES30", + .vendorID = 11720, + .productID = 4099, + .version = 273, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NES30", + .vendorID = 11720, + .productID = 4224, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NES30 Pro", + .vendorID = 8194, + .productID = 36864, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo NES30 Pro", + .vendorID = 11720, + .productID = 36865, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo NES30 Pro", + .vendorID = 14368, + .productID = 9, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo NES30 Pro", + .vendorID = 11720, + .productID = 14368, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo P30", + .vendorID = 11720, + .productID = 20743, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo P30", + .vendorID = 11720, + .productID = 20744, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Pro 2", + .vendorID = 11720, + .productID = 24582, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Pro 2", + .vendorID = 11720, + .productID = 12304, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Pro 2", + .vendorID = 11720, + .productID = 24582, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Pro 2 for Xbox", + .vendorID = 11720, + .productID = 8192, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Pro 2 for Xbox", + .vendorID = 11720, + .productID = 8192, + .version = 262, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Receiver", + .vendorID = 11720, + .productID = 12545, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Receiver", + .vendorID = 11720, + .productID = 12546, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Receiver", + .vendorID = 11720, + .productID = 12547, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Receiver", + .vendorID = 11720, + .productID = 12548, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo S30", + .vendorID = 11720, + .productID = 26408, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo SF30 Pro", + .vendorID = 11720, + .productID = 24576, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SF30 Pro", + .vendorID = 11720, + .productID = 24576, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SF30 Pro", + .vendorID = 11720, + .productID = 24832, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SFC30", + .vendorID = 4661, + .productID = 43794, + .version = 272, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "8BitDo SFC30", + .vendorID = 4661, + .productID = 43809, + .version = 272, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SFC30", + .vendorID = 11720, + .productID = 43809, + .version = 272, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SFC30", + .vendorID = 10256, + .productID = 9, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SFC30", + .vendorID = 11720, + .productID = 10288, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30", + .vendorID = 11720, + .productID = 20739, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 24577, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 24577, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 24833, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 36882, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 24833, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 10338, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 11720, + .productID = 24578, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 11720, + .productID = 24834, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SNES30", + .vendorID = 10272, + .productID = 9, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Ultimate", + .vendorID = 11720, + .productID = 12306, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate 2C", + .vendorID = 11720, + .productID = 12554, + .version = 276, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate 2C", + .vendorID = 11720, + .productID = 12317, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate 2C", + .vendorID = 11720, + .productID = 12315, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate C", + .vendorID = 11720, + .productID = 12309, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate C", + .vendorID = 11720, + .productID = 12310, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate C", + .vendorID = 11720, + .productID = 12311, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate Wired", + .vendorID = 11720, + .productID = 12305, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate Wireless", + .vendorID = 11720, + .productID = 12550, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate Wireless", + .vendorID = 11720, + .productID = 24583, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Ultimate Wireless", + .vendorID = 11720, + .productID = 12306, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate Wireless", + .vendorID = 11720, + .productID = 12307, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Ultimate Wireless Controller", + .vendorID = 11720, + .productID = 12550, + .version = 276, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Xbox One SN30 Pro", + .vendorID = 11720, + .productID = 8449, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Xbox One SN30 Pro", + .vendorID = 11720, + .productID = 8449, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Zero", + .vendorID = 1440, + .productID = 12850, + .version = 1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Zero", + .vendorID = 1440, + .productID = 12850, + .version = 264, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Zero 2", + .vendorID = 11720, + .productID = 36888, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Zero 2", + .vendorID = 11720, + .productID = 12848, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Acrux Gamepad", + .vendorID = 4544, + .productID = 21763, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Afterglow Deluxe Nintendo Switch Controller", + .vendorID = 3695, + .productID = 392, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Afterglow Prismatic Controller", + .vendorID = 3695, + .productID = 313, + .version = 17152, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Afterglow Prismatic Controller 048-007-NA", + .vendorID = 3695, + .productID = 313, + .version = 531, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Afterglow Xbox 360 Controller", + .vendorID = 3695, + .productID = 531, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Afterglow Xbox One Controller", + .vendorID = 3695, + .productID = 313, + .version = 1568, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Akishop Customs PS360", + .vendorID = 16, + .productID = 130, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Alienware Dual Compatible Game PlayStation Controller", + .vendorID = 6268, + .productID = 1536, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Amazon Fire Controller", + .vendorID = 6473, + .productID = 1026, + .version = 33, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Amazon Luna Controller", + .vendorID = 6473, + .productID = 1049, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Amazon Luna Controller", + .vendorID = 369, + .productID = 1049, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Anbernic Gamepad", + .vendorID = 4104, + .productID = 485, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Anbernic RG P01", + .vendorID = 1282, + .productID = 4873, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Anbernic RG P01", + .vendorID = 13623, + .productID = 4103, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Anbernic RG P01", + .vendorID = 1118, + .productID = 654, + .version = 1394, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Anbernic RG P01", + .vendorID = 13623, + .productID = 4166, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Arcade Fightstick F300", + .vendorID = 121, + .productID = 6192, + .version = 273, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Astro City Mini", + .vendorID = 3235, + .productID = 39, + .version = 273, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Astro City Mini", + .vendorID = 3235, + .productID = 40, + .version = 273, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "ASUS Gamepad", + .vendorID = 2821, + .productID = 17664, + .version = 49, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "ASUS Gamepad", + .vendorID = 2821, + .productID = 17664, + .version = 64, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "ASUS ROG Kunai 3", + .vendorID = 2821, + .productID = 30981, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "ASUS ROG Kunai 3", + .vendorID = 2821, + .productID = 30982, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Classic Controller", + .vendorID = 12880, + .productID = 4097, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Classic Controller", + .vendorID = 12880, + .productID = 4097, + .version = 273, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Classic Controller", + .vendorID = 12880, + .productID = 4097, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Classic Controller", + .vendorID = 12880, + .productID = 4097, + .version = 324, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Classic Controller", + .vendorID = 12880, + .productID = 4097, + .version = 326, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Modern Controller", + .vendorID = 12880, + .productID = 4098, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Modern Controller", + .vendorID = 12880, + .productID = 4098, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Modern Controller", + .vendorID = 12880, + .productID = 4098, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Modern Controller", + .vendorID = 12880, + .productID = 4098, + .version = 325, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Modern Controller", + .vendorID = 12880, + .productID = 4098, + .version = 326, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Modern Controller", + .vendorID = 12880, + .productID = 4098, + .version = 327, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 258, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 514, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 515, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 516, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "BDA MOGA XP5X Plus", + .vendorID = 9414, + .productID = 35099, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "BDA PS4 Fightpad", + .vendorID = 8406, + .productID = 31018, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Be1 GC101 Controller 1.03", + .vendorID = 4546, + .productID = 37127, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Be1 GC101 Controller 1.03", + .vendorID = 4547, + .productID = 37127, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Be1 GC101 Xbox 360", + .vendorID = 1118, + .productID = 654, + .version = 771, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Beitong A1T2 BFM", + .vendorID = 8380, + .productID = 20557, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Betop AX1 BFM", + .vendorID = 8380, + .productID = 21760, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Betop Controller", + .vendorID = 8380, + .productID = 4708, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Bigben", + .vendorID = 5227, + .productID = 2306, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Brook Mars PS4 Controller", + .vendorID = 3090, + .productID = 3616, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Brook Mars PS4 Controller", + .vendorID = 3090, + .productID = 3617, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Brook Universal Fighting Board", + .vendorID = 3090, + .productID = 3831, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Cideko AK08b", + .vendorID = 8424, + .productID = 22624, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Clockwork Pi DevTerm", + .vendorID = 7855, + .productID = 36, + .version = 272, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Competition Pro", + .vendorID = 1035, + .productID = 25907, + .version = 256, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Cyber Gadget GameCube Controller", + .vendorID = 2342, + .productID = 34952, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Cyborg V3 Rumble", + .vendorID = 1699, + .productID = 63010, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Data Frog S80", + .vendorID = 1118, + .productID = 654, + .version = 258, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Dual Box Wii Classic Adapter", + .vendorID = 7545, + .productID = 769, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "EA Sports PS3 Controller", + .vendorID = 3695, + .productID = 304, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "EasySMX", + .vendorID = 4545, + .productID = 37121, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "EasySMX ESM-9101", + .vendorID = 12068, + .productID = 145, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Elecom U3613M", + .vendorID = 1390, + .productID = 8195, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Elecom W01U", + .vendorID = 1390, + .productID = 8199, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Eliminator AfterShock", + .vendorID = 1149, + .productID = 16390, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A4, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "EMS Production PS2 Adapter", + .vendorID = 2883, + .productID = 3, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Faceoff Deluxe Nintendo Switch Controller", + .vendorID = 3695, + .productID = 388, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Faceoff Deluxe Pro Nintendo Switch Controller", + .vendorID = 3695, + .productID = 385, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Faceoff Pro Nintendo Switch Controller", + .vendorID = 3695, + .productID = 384, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Final Fantasy XIV Online Controller", + .vendorID = 8581, + .productID = 258, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Flydigi Vader 2", + .vendorID = 1204, + .productID = 9233, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Flydigi Vader 2", + .vendorID = 1204, + .productID = 9234, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Flydigi Vader 2", + .vendorID = 6421, + .productID = 64, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameCube Adapter", + .vendorID = 1406, + .productID = 823, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameForce Controller", + .vendorID = 3, + .productID = 3, + .version = 770, + .leftx = HID_A1, + .rightx = HID_A3, + .lefty = HID_A0, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "GameSir G3w", + .vendorID = 1452, + .productID = 1371, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "GameSir G3w", + .vendorID = 8380, + .productID = 21760, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameSir G4 Pro", + .vendorID = 34133, + .productID = 1563, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameSir G4s", + .vendorID = 1452, + .productID = 557, + .version = 283, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameSir G5", + .vendorID = 1452, + .productID = 1402, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameSir T4w", + .vendorID = 8380, + .productID = 22102, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "GameSir-T3 2.02", + .vendorID = 1452, + .productID = 1562, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameStop Gamepad", + .vendorID = 21319, + .productID = 28001, + .version = 25697, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Gamestop Logic3 Controller", + .vendorID = 3695, + .productID = 1025, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Gasia PlayStation Gamepad", + .vendorID = 3727, + .productID = 8, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Genius Maxfire Grandias 12", + .vendorID = 4933, + .productID = 4096, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GO-Advance Controller", + .vendorID = 18507, + .productID = 4096, + .version = 256, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "GO-Advance Controller", + .vendorID = 18507, + .productID = 4096, + .version = 257, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "GO-Super Controller", + .vendorID = 18507, + .productID = 4352, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Goodbetterbest Controller", + .vendorID = 9712, + .productID = 33729, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Google Stadia Controller", + .vendorID = 6353, + .productID = 37888, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Google Stadia Controller", + .vendorID = 6353, + .productID = 37888, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GPD Win 2 Controller", + .vendorID = 121, + .productID = 6356, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GPD Win Max 2 6800U Controller", + .vendorID = 1118, + .productID = 654, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Gravis Eliminator Pro", + .vendorID = 1149, + .productID = 16389, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Gravis GamePad Pro", + .vendorID = 1064, + .productID = 16385, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "GreenAsia Electronics Controller", + .vendorID = 3727, + .productID = 4102, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "GreenAsia Joystick", + .vendorID = 3727, + .productID = 18, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GS gamepad", + .vendorID = 21319, + .productID = 28001, + .version = 25697, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GT VX2", + .vendorID = 9712, + .productID = 33731, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Hidromancer Controller", + .vendorID = 57005, + .productID = 48879, + .version = 258, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "HitBox PS3 PC Analog Mode", + .vendorID = 5336, + .productID = 25096, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "HJC Gamepad", + .vendorID = 4553, + .productID = 22000, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori EDGE 301", + .vendorID = 3853, + .productID = 109, + .version = 288, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Fighting Commander", + .vendorID = 3853, + .productID = 132, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 4 PS3", + .vendorID = 3853, + .productID = 95, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander 4 PS4", + .vendorID = 3853, + .productID = 94, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander Octa Xbox One", + .vendorID = 3853, + .productID = 336, + .version = 1033, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Fighting Commander PS3", + .vendorID = 3853, + .productID = 133, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Commander Xbox 360", + .vendorID = 3853, + .productID = 134, + .version = 258, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Fighting Stick Mini", + .vendorID = 3853, + .productID = 311, + .version = 275, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Hori Fighting Stick mini 4 PS3", + .vendorID = 3853, + .productID = 136, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fighting Stick mini 4 PS4", + .vendorID = 3853, + .productID = 135, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fightstick 3", + .vendorID = 3853, + .productID = 16, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Fightstick VX", + .vendorID = 7085, + .productID = 62723, + .version = 1331, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Gem Pad 3", + .vendorID = 3853, + .productID = 77, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Pad EX Turbo 2", + .vendorID = 7085, + .productID = 62721, + .version = 1331, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori PC Engine Mini Controller", + .vendorID = 3853, + .productID = 312, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Pokken Tournament DX Pro", + .vendorID = 3853, + .productID = 146, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 3", + .vendorID = 3853, + .productID = 17, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 3", + .vendorID = 3853, + .productID = 34, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 4", + .vendorID = 3853, + .productID = 106, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro 4", + .vendorID = 3853, + .productID = 107, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hori Real Arcade Pro EXSE", + .vendorID = 3853, + .productID = 22, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Real Arcade Pro for Nintendo Switch", + .vendorID = 3853, + .productID = 170, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Hori Split Pad Fit", + .vendorID = 3853, + .productID = 389, + .version = 279, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Switch Split Pad Pro", + .vendorID = 3853, + .productID = 389, + .version = 277, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Horipad 4 PS3", + .vendorID = 3853, + .productID = 110, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad 4 PS4", + .vendorID = 3853, + .productID = 102, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad Mini 4", + .vendorID = 3853, + .productID = 238, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad Nintendo Switch Controller", + .vendorID = 3853, + .productID = 193, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Horipad One", + .vendorID = 3853, + .productID = 103, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Horipad Switch Pro Controller", + .vendorID = 3853, + .productID = 246, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "HuiJia GameCube Controller Adapter", + .vendorID = 6708, + .productID = 63237, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hyperkin Admiral N64 Controller", + .vendorID = 11812, + .productID = 8203, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Hyperkin N64 Adapter", + .vendorID = 11812, + .productID = 3071, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Hyperkin Trooper 2", + .vendorID = 11812, + .productID = 14442, + .version = 272, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hyperkin X91", + .vendorID = 11812, + .productID = 5768, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "HyperX Clutch", + .vendorID = 1008, + .productID = 909, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "iBuffalo Super Famicom Controller", + .vendorID = 1411, + .productID = 8288, + .version = 272, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "iCode Retro Adapter", + .vendorID = 3727, + .productID = 12307, + .version = 257, + .leftx = HID_A0, + .lefty = HID_A1, + .button2 = HID_B3, + },{ + .name = "idroidcon Controller", + .vendorID = 25705, + .productID = 25705, + .version = 28271, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Impact", + .vendorID = 1973, + .productID = 789, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "IMS PCU0", + .vendorID = 1240, + .productID = 130, + .version = 3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "InterAct AxisPad", + .vendorID = 3090, + .productID = 5, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "InterAct AxisPad", + .vendorID = 1519, + .productID = 3, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "InterAct GoPad", + .vendorID = 1533, + .productID = 12288, + .version = 256, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "InterAct HammerHead FX", + .vendorID = 1533, + .productID = 9770, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "Ipega PG 9069", + .vendorID = 6473, + .productID = 1026, + .version = 283, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Ipega PG 9099", + .vendorID = 9571, + .productID = 1397, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Ipega PG9099", + .vendorID = 6473, + .productID = 1027, + .version = 283, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Ipega PG9118", + .vendorID = 6473, + .productID = 1026, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Jess Tech Dual Analog Rumble", + .vendorID = 3888, + .productID = 272, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Jess Tech GGE909 PC Recoil", + .vendorID = 3888, + .productID = 267, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Jess Technology Controller", + .vendorID = 8890, + .productID = 4128, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Joy-Con (L)", + .vendorID = 1406, + .productID = 8198, + .version = 1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (L)", + .vendorID = 1406, + .productID = 8198, + .version = 1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (R)", + .vendorID = 1406, + .productID = 8199, + .version = 1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (R)", + .vendorID = 1406, + .productID = 8199, + .version = 1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joypad Alpha Shock", + .vendorID = 4797, + .productID = 49155, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "JYS Adapter", + .vendorID = 12068, + .productID = 45, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "JYS Adapter", + .vendorID = 12068, + .productID = 138, + .version = 273, + .rightx = HID_A2, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Logic3 Controller", + .vendorID = 3695, + .productID = 769, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech Chillstream", + .vendorID = 1133, + .productID = 51921, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech Chillstream", + .vendorID = 1133, + .productID = 51921, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech Cordless RumblePad 2", + .vendorID = 1133, + .productID = 49689, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech Dual Action", + .vendorID = 1133, + .productID = 49686, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech Dual Action", + .vendorID = 1133, + .productID = 49686, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech F310", + .vendorID = 1133, + .productID = 49693, + .version = 16404, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech F510", + .vendorID = 1133, + .productID = 49694, + .version = 8217, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech F510", + .vendorID = 1133, + .productID = 49694, + .version = 8224, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech F710", + .vendorID = 1133, + .productID = 49689, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech F710", + .vendorID = 1133, + .productID = 49695, + .version = 773, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech RumblePad 2", + .vendorID = 1133, + .productID = 49688, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Logitech WingMan Cordless RumblePad", + .vendorID = 1133, + .productID = 49681, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech WingMan RumblePad", + .vendorID = 1133, + .productID = 49674, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mad Catz CTRLR", + .vendorID = 1848, + .productID = 21094, + .version = 293, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightpad", + .vendorID = 1848, + .productID = 12933, + .version = 272, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightpad Pro PS3", + .vendorID = 1848, + .productID = 12880, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightpad Pro PS4", + .vendorID = 1848, + .productID = 33360, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightpad SFxT", + .vendorID = 7085, + .productID = 61486, + .version = 1168, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mad Catz Fightstick PS3", + .vendorID = 1848, + .productID = 13440, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightstick PS4", + .vendorID = 1848, + .productID = 33920, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightstick TE S PS3", + .vendorID = 1848, + .productID = 13188, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Fightstick TE S PS4", + .vendorID = 1848, + .productID = 33668, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Joystick", + .vendorID = 1848, + .productID = 34840, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Joystick", + .vendorID = 1848, + .productID = 34872, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mad Catz Xbox 360 Controller", + .vendorID = 1848, + .productID = 18198, + .version = 1040, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mad Catz Xbox 360 Controller", + .vendorID = 1848, + .productID = 18232, + .version = 1168, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mad Catz Xbox 360 Controller", + .vendorID = 7085, + .productID = 61462, + .version = 1168, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Manta DualShock 2", + .vendorID = 3090, + .productID = 5, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mayflash Controller Adapter", + .vendorID = 3727, + .productID = 12307, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3_REV, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash GameCube Adapter", + .vendorID = 121, + .productID = 6211, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Mayflash GameCube Controller", + .vendorID = 121, + .productID = 6212, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Mayflash Magic NS", + .vendorID = 12068, + .productID = 115, + .version = 273, + .rightx = HID_A2, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Mayflash Magic NS", + .vendorID = 121, + .productID = 6354, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash Magic NS", + .vendorID = 8406, + .productID = 42768, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mayflash Magic S Pro", + .vendorID = 12068, + .productID = 247, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mayflash Saturn Adapter", + .vendorID = 3727, + .productID = 12304, + .version = 272, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mayflash Wii Classic Adapter", + .vendorID = 2341, + .productID = 1000, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Mayflash Wii DolphinBar", + .vendorID = 121, + .productID = 6147, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Mayflash Wii U Pro Adapter", + .vendorID = 121, + .productID = 6144, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Mega World Logic 3 Controller", + .vendorID = 1973, + .productID = 786, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Mega World Logic 3 Controller", + .vendorID = 1973, + .productID = 79, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Microntek Joystick", + .vendorID = 120, + .productID = 6, + .version = 272, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Microsoft Dual Strike", + .vendorID = 1118, + .productID = 40, + .version = 256, + .rightx = HID_A0, + .righty = HID_A1_REV, + .button1 = HID_B3, + .button2 = HID_B2, + },{ + .name = "Microsoft SideWinder", + .vendorID = 1118, + .productID = 3, + .version = 256, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft SideWinder", + .vendorID = 1118, + .productID = 7, + .version = 256, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft SideWinder Freestyle Pro", + .vendorID = 1118, + .productID = 14, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft SideWinder Plug and Play", + .vendorID = 1118, + .productID = 39, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox", + .vendorID = 1118, + .productID = 645, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox", + .vendorID = 1118, + .productID = 649, + .version = 289, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox 360", + .vendorID = 1118, + .productID = 654, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox 360", + .vendorID = 1118, + .productID = 654, + .version = 260, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox 360", + .vendorID = 1118, + .productID = 654, + .version = 8534, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox 360", + .vendorID = 1118, + .productID = 654, + .version = 9058, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox One", + .vendorID = 1118, + .productID = 721, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox One", + .vendorID = 1118, + .productID = 721, + .version = 515, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox One", + .vendorID = 1118, + .productID = 733, + .version = 515, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox One", + .vendorID = 1118, + .productID = 746, + .version = 1032, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox One", + .vendorID = 1118, + .productID = 2834, + .version = 1289, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox One Elite", + .vendorID = 1118, + .productID = 739, + .version = 515, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox One Elite 2", + .vendorID = 1118, + .productID = 2816, + .version = 1031, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox One Elite 2", + .vendorID = 1118, + .productID = 2816, + .version = 1032, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox One Elite 2", + .vendorID = 1118, + .productID = 2821, + .version = 2307, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox One Elite 2", + .vendorID = 1118, + .productID = 654, + .version = 4400, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1291, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox Series X Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1281, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Miroof", + .vendorID = 3, + .productID = 3, + .version = 2, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Mobapad Chitu HD", + .vendorID = 121, + .productID = 6172, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mocute 053X", + .vendorID = 20301, + .productID = 17748, + .version = 13109, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mocute 053X M59", + .vendorID = 1256, + .productID = 1134, + .version = 283, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Mocute 054X", + .vendorID = 20301, + .productID = 17748, + .version = 12341, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Moga 2", + .vendorID = 8406, + .productID = 35301, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Moga Pro", + .vendorID = 8406, + .productID = 3501, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Moga Pro 2", + .vendorID = 8406, + .productID = 25201, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MOGA XP5A Plus", + .vendorID = 9414, + .productID = 35115, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MOGA XP5A Plus", + .vendorID = 9414, + .productID = 35114, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MOGA XP5X Plus", + .vendorID = 9414, + .productID = 35098, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "MP8866 Super Dual Box", + .vendorID = 2341, + .productID = 34918, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "MSI GC20 V2", + .vendorID = 1118, + .productID = 654, + .version = 528, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "N64 Adaptoid", + .vendorID = 1783, + .productID = 1, + .version = 256, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B3, + },{ + .name = "N64 Controller", + .vendorID = 3695, + .productID = 4371, + .version = 273, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Nacon Asymmetric Wireless PS4 Controller", + .vendorID = 5227, + .productID = 1545, + .version = 276, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nacon GC 400ES", + .vendorID = 5227, + .productID = 3073, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nacon GC-100", + .vendorID = 12933, + .productID = 1543, + .version = 274, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nacon Revolution 5 Pro", + .vendorID = 12933, + .productID = 3351, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Nacon Revolution 5 Pro", + .vendorID = 12933, + .productID = 3353, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Natec Genesis P44", + .vendorID = 3853, + .productID = 9, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "NeoGeo PS3", + .vendorID = 8015, + .productID = 8, + .version = 273, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "NeoGeo X Arcade Stick", + .vendorID = 4754, + .productID = 20039, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nexilux GameCube Controller Adapter", + .vendorID = 121, + .productID = 6213, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NEXT SNES Controller", + .vendorID = 2064, + .productID = 58625, + .version = 272, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Nintendo 3DS", + .vendorID = 1406, + .productID = 4919, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo GameCube Controller", + .vendorID = 1406, + .productID = 823, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1_REV, + .righty = HID_A3_REV, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Nintendo GameCube Controller Adapter", + .vendorID = 121, + .productID = 6214, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A5_REV, + .lefty = HID_A1, + .righty = HID_A2_REV, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Nintendo Switch Combined Joy-Cons", + .vendorID = 26958, + .productID = 28261, + .version = 21280, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Combined Joy-Cons", + .vendorID = 1406, + .productID = 8198, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Combined Joy-Cons", + .vendorID = 1406, + .productID = 8200, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Controller", + .vendorID = 26956, + .productID = 29264, + .version = 28483, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Left Joy-Con", + .vendorID = 1406, + .productID = 8198, + .version = 32769, + .leftx = HID_A1, + .lefty = HID_A0_REV, + .button1 = HID_B16, + .button2 = HID_B15, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 33041, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 32769, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Right Joy-Con", + .vendorID = 1406, + .productID = 8199, + .version = 32769, + .leftx = HID_A1_REV, + .lefty = HID_A0, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Nintendo Wii Remote", + .vendorID = 1, + .productID = 1, + .version = 3, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Wii U Pro Controller", + .vendorID = 1406, + .productID = 816, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nostromo n45 Dual Analog", + .vendorID = 1293, + .productID = 2051, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NSO N64 Controller", + .vendorID = 1406, + .productID = 8217, + .version = 33041, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NSO N64 Controller", + .vendorID = 1406, + .productID = 8217, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NSO N64 Controller", + .vendorID = 1406, + .productID = 8217, + .version = 32769, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NSO SNES Controller", + .vendorID = 1406, + .productID = 8215, + .version = 33041, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NSO SNES Controller", + .vendorID = 1406, + .productID = 8215, + .version = 1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NSO SNES Controller", + .vendorID = 1406, + .productID = 8215, + .version = 32769, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "NVIDIA Controller", + .vendorID = 2389, + .productID = 29200, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NVIDIA Controller", + .vendorID = 2389, + .productID = 29204, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NVIDIA Controller", + .vendorID = 2389, + .productID = 29204, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NYKO Airflo EX", + .vendorID = 4683, + .productID = 19713, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NYKO CORE", + .vendorID = 4933, + .productID = 12296, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "ODROID Go 2", + .vendorID = 1, + .productID = 1, + .version = 257, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "ODROID Go 2", + .vendorID = 1, + .productID = 2, + .version = 17, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "OUYA Controller", + .vendorID = 10294, + .productID = 1, + .version = 258, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B3, + },{ + .name = "OUYA Controller", + .vendorID = 10294, + .productID = 1, + .version = 259, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B3, + },{ + .name = "OUYA Controller", + .vendorID = 10294, + .productID = 1, + .version = 260, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B3, + },{ + .name = "Padix Rockfire PlayStation Bridge", + .vendorID = 1411, + .productID = 8272, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PC Controller", + .vendorID = 4607, + .productID = 13105, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PDP Afterglow Xbox One Controller", + .vendorID = 3695, + .productID = 696, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP Afterglow Xbox One Controller", + .vendorID = 3695, + .productID = 696, + .version = 531, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP Battlefield One", + .vendorID = 3695, + .productID = 356, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP Black Camo Wired Xbox Series X Controller", + .vendorID = 3695, + .productID = 727, + .version = 25606, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP EA Sports Controller", + .vendorID = 3695, + .productID = 305, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP Fightpad Pro Gamecube Controller", + .vendorID = 3695, + .productID = 389, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "PDP Kingdom Hearts Controller", + .vendorID = 3695, + .productID = 712, + .version = 274, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP PS3 Rock Candy Controller", + .vendorID = 3695, + .productID = 296, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PDP PS3 Versus Fighting", + .vendorID = 3695, + .productID = 265, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PDP Wired PS3 Controller", + .vendorID = 3695, + .productID = 303, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PDP Xbox 360 Versus Fighting", + .vendorID = 7085, + .productID = 63748, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP Xbox One Controller", + .vendorID = 3695, + .productID = 680, + .version = 547, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP Xbox One Raven Black", + .vendorID = 3695, + .productID = 679, + .version = 547, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP Xbox Series Controller", + .vendorID = 3695, + .productID = 728, + .version = 25606, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PDP Xbox Series Kinetic Wired Controller", + .vendorID = 3695, + .productID = 751, + .version = 25607, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA", + .vendorID = 9414, + .productID = 21248, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA 1428124-01", + .vendorID = 9414, + .productID = 21562, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA Core Controller", + .vendorID = 8406, + .productID = 42769, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Fusion Nintendo Switch Arcade Stick", + .vendorID = 25309, + .productID = 42773, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Fusion Nintendo Switch Fight Pad", + .vendorID = 8406, + .productID = 42770, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Fusion Pro 2 Controller", + .vendorID = 8406, + .productID = 16385, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA Fusion Pro Nintendo Switch Controller", + .vendorID = 25309, + .productID = 42774, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Mini Pro Ex", + .vendorID = 9414, + .productID = 21274, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA Nintendo Switch Controller", + .vendorID = 8406, + .productID = 42771, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Pro Ex", + .vendorID = 8406, + .productID = 51821, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Spectra Nintendo Switch Controller", + .vendorID = 8406, + .productID = 42772, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PowerA Xbox One", + .vendorID = 9414, + .productID = 22554, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA Xbox One Controller", + .vendorID = 8406, + .productID = 8194, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA Xbox One Controller", + .vendorID = 8406, + .productID = 10242, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA Xbox One Mini Controller", + .vendorID = 9414, + .productID = 21530, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA Xbox One Spectra Infinity", + .vendorID = 8406, + .productID = 16386, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA Xbox Series Controller", + .vendorID = 8406, + .productID = 8207, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PowerA Xbox Series X Controller", + .vendorID = 8406, + .productID = 8203, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Precision Controller", + .vendorID = 1133, + .productID = 51922, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS/SS/N64 Adapter", + .vendorID = 2341, + .productID = 5888, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2_REV, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS2 Controller", + .vendorID = 4607, + .productID = 13121, + .version = 272, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 6708, + .productID = 2102, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 33040, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 33041, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 5215, + .productID = 561, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 3695, + .productID = 532, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS3 Controller", + .vendorID = 3727, + .productID = 3, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 32768, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 33024, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS3 Controller", + .vendorID = 19536, + .productID = 21587, + .version = 20297, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B14, + .button2 = HID_B13, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2976, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2976, + .version = 33041, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 33024, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 33041, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 33041, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS4 Controller", + .vendorID = 4544, + .productID = 16385, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 33024, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 32769, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 33024, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 32769, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS5 Access Controller", + .vendorID = 1356, + .productID = 3679, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 33041, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3570, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3570, + .version = 33041, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 33024, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3570, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3570, + .version = 33024, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Qanba Arcade Joystick", + .vendorID = 3888, + .productID = 4370, + .version = 273, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B0, + },{ + .name = "Qanba Dragon Arcade Joystick PS3", + .vendorID = 11298, + .productID = 9474, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Dragon Arcade Joystick PS4", + .vendorID = 11298, + .productID = 9472, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Drone 2 Arcade Joystick PS4", + .vendorID = 11298, + .productID = 8210, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Drone 2 Arcade Joystick PS5", + .vendorID = 11298, + .productID = 8208, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Drone Arcade PS4 Joystick", + .vendorID = 11298, + .productID = 8192, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Joystick Plus", + .vendorID = 3888, + .productID = 4114, + .version = 272, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Qanba Obsidian Arcade Joystick PS3", + .vendorID = 11298, + .productID = 8962, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Qanba Obsidian Arcade Joystick PS4", + .vendorID = 11298, + .productID = 8960, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Raphnet 4nes4snes", + .vendorID = 10395, + .productID = 3, + .version = 257, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B4, + },{ + .name = "Raphnet Dual NES Adapter", + .vendorID = 10395, + .productID = 66, + .version = 257, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Raphnet GameCube Adapter", + .vendorID = 10395, + .productID = 101, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B7, + },{ + .name = "Raphnet GameCube Adapter", + .vendorID = 10395, + .productID = 101, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B7, + },{ + .name = "Raphnet GC and N64 Adapter", + .vendorID = 10395, + .productID = 50, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B7, + },{ + .name = "Raphnet GC and N64 Adapter", + .vendorID = 10395, + .productID = 96, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B7, + },{ + .name = "Raphnet Wii Classic Adapter", + .vendorID = 10395, + .productID = 128, + .version = 544, + .button1 = HID_B1, + .button2 = HID_B4, + },{ + .name = "Razer Kishi", + .vendorID = 10232, + .productID = 3007, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Onza Classic Edition", + .vendorID = 5769, + .productID = 64769, + .version = 292, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Panthera PS3", + .vendorID = 5426, + .productID = 1026, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Panthera PS4", + .vendorID = 5426, + .productID = 1025, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Panthera PS4 Evo Arcade Stick", + .vendorID = 5426, + .productID = 4104, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raiju", + .vendorID = 5426, + .productID = 4096, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raiju Mobile", + .vendorID = 5426, + .productID = 1797, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Raiju Tournament Edition", + .vendorID = 5426, + .productID = 4106, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Raion PS4 Fightpad", + .vendorID = 5426, + .productID = 4352, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Razer Sabertooth", + .vendorID = 5769, + .productID = 65024, + .version = 292, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Sabertooth", + .vendorID = 9414, + .productID = 23812, + .version = 292, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Sabertooth", + .vendorID = 9414, + .productID = 23812, + .version = 293, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Serval", + .vendorID = 5426, + .productID = 2304, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Serval", + .vendorID = 5426, + .productID = 2304, + .version = 14870, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Wildcat", + .vendorID = 5426, + .productID = 2563, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Razer Wolverine PS5 Controller", + .vendorID = 5426, + .productID = 4107, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Retro Bit Legacy16", + .vendorID = 3853, + .productID = 193, + .version = 272, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Retro Bit Legacy16", + .vendorID = 3853, + .productID = 193, + .version = 1394, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Retro Controller", + .vendorID = 121, + .productID = 17, + .version = 272, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Retrode Adapter", + .vendorID = 1027, + .productID = 38849, + .version = 273, + .button1 = HID_B0, + .button2 = HID_B4, + },{ + .name = "RetroGame Joypad", + .vendorID = 18507, + .productID = 4353, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Retronic Adapter", + .vendorID = 6017, + .productID = 2713, + .version = 257, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + },{ + .name = "RetroPad", + .vendorID = 61440, + .productID = 3, + .version = 256, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B5, + },{ + .name = "RetroStone 2 Controller", + .vendorID = 25938, + .productID = 21359, + .version = 25966, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "RetroUSB N64 RetroPort", + .vendorID = 4660, + .productID = 4, + .version = 256, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B7, + .button2 = HID_B6, + },{ + .name = "Revolution Pro Controller", + .vendorID = 5227, + .productID = 3329, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Revolution Pro Controller 3", + .vendorID = 5227, + .productID = 3347, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Rock Candy", + .vendorID = 3695, + .productID = 287, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Rock Candy Nintendo Switch Controller", + .vendorID = 3695, + .productID = 391, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Rock Candy PS3 Controller", + .vendorID = 3695, + .productID = 286, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Rock Candy Xbox 360 Controller", + .vendorID = 9414, + .productID = 64254, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Rock Candy Xbox One Controller", + .vendorID = 3695, + .productID = 326, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Saitek Cyborg PlayStation Controller", + .vendorID = 1699, + .productID = 63011, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek P150", + .vendorID = 1699, + .productID = 1296, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Saitek P220", + .vendorID = 1699, + .productID = 263, + .version = 256, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Saitek P2500 Force Rumble", + .vendorID = 1699, + .productID = 65292, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Saitek P2900", + .vendorID = 1699, + .productID = 1036, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek P3200 Rumble", + .vendorID = 1699, + .productID = 62744, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek P380", + .vendorID = 3888, + .productID = 274, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Saitek P880", + .vendorID = 1699, + .productID = 265, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Saitek P990 Dual Analog", + .vendorID = 1699, + .productID = 1035, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Saitek PS2700 Rumble", + .vendorID = 1699, + .productID = 63008, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Samsung EIGP20", + .vendorID = 1256, + .productID = 40960, + .version = 283, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Savior", + .vendorID = 7640, + .productID = 14, + .version = 272, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Scuf Envision", + .vendorID = 11925, + .productID = 17227, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Scuf Envision", + .vendorID = 11925, + .productID = 17229, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Scuf Envision", + .vendorID = 11925, + .productID = 17230, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sega Genesis Mini 3B Controller", + .vendorID = 3235, + .productID = 37, + .version = 273, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sega Saturn", + .vendorID = 121, + .productID = 17, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Sega Saturn", + .vendorID = 121, + .productID = 290, + .version = 273, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sega Saturn", + .vendorID = 1204, + .productID = 266, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SFC Controller", + .vendorID = 2079, + .productID = 58369, + .version = 272, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "ShanWan Gamepad", + .vendorID = 9571, + .productID = 1315, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Shanwan Gamepad", + .vendorID = 9571, + .productID = 1318, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Shanwan Gamepad", + .vendorID = 9571, + .productID = 1397, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Shanwan Gamepad", + .vendorID = 8380, + .productID = 21760, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Shanwan Gioteck PS3 Controller", + .vendorID = 9712, + .productID = 49441, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "SL6566", + .vendorID = 6708, + .productID = 2057, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Snakebyte Xbox Series Controller", + .vendorID = 10571, + .productID = 12292, + .version = 17, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sony DualShock 4", + .vendorID = 1356, + .productID = 2508, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Sony PlayStation Adapter", + .vendorID = 26214, + .productID = 1639, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Controller", + .vendorID = 1356, + .productID = 3290, + .version = 273, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Controller Adapter", + .vendorID = 1241, + .productID = 3862, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Portable", + .vendorID = 255, + .productID = 459, + .version = 272, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Vita", + .vendorID = 1356, + .productID = 4919, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Sony PS2 pad with SmartJoy Adapter", + .vendorID = 2341, + .productID = 5, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Speedlink Torid", + .vendorID = 1118, + .productID = 654, + .version = 1395, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SpeedLink Xeox Pro Analog", + .vendorID = 1118, + .productID = 654, + .version = 8224, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4609, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4609, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4354, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4354, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4418, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4418, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B3, + },{ + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4604, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4610, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4357, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4358, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Steam Deck", + .vendorID = 10462, + .productID = 4613, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "Steam Deck", + .vendorID = 10462, + .productID = 4613, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B3, + .button2 = HID_B4, + },{ + .name = "Steam Virtual Gamepad", + .vendorID = 10462, + .productID = 4607, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Nimbus Plus", + .vendorID = 26958, + .productID = 29557, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus Duo", + .vendorID = 4152, + .productID = 5168, + .version = 373, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus Duo", + .vendorID = 4152, + .productID = 5169, + .version = 373, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus Duo", + .vendorID = 273, + .productID = 5169, + .version = 283, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Stratus XL", + .vendorID = 273, + .productID = 5145, + .version = 265, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Street Fighter IV Fightstick TE", + .vendorID = 7085, + .productID = 61496, + .version = 1168, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Suncom SFX Plus", + .vendorID = 1851, + .productID = 41220, + .version = 256, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Super Joy Box 5 Pro", + .vendorID = 26214, + .productID = 34820, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Super RetroPort", + .vendorID = 61440, + .productID = 241, + .version = 256, + .button1 = HID_B1, + .button2 = HID_B5, + },{ + .name = "SZMY Power 3 Turbo", + .vendorID = 3727, + .productID = 12557, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "SZMY Power DS4 Wired Controller", + .vendorID = 30021, + .productID = 260, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "SZMY Power Gamepad", + .vendorID = 30021, + .productID = 4386, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "SZMY Power PS3", + .vendorID = 3727, + .productID = 12564, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Taito Egret II Mini Control Panel", + .vendorID = 2788, + .productID = 1795, + .version = 273, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B4, + .button2 = HID_B2, + },{ + .name = "Taito Egret II Mini Controller", + .vendorID = 2788, + .productID = 1794, + .version = 273, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B4, + .button2 = HID_B2, + },{ + .name = "Technology Innovation PS2 Adapter", + .vendorID = 8890, + .productID = 263, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "TGZ Controller", + .vendorID = 121, + .productID = 6172, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "THEC64 Joystick", + .vendorID = 7257, + .productID = 36, + .version = 272, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "THEGamepad", + .vendorID = 7257, + .productID = 38, + .version = 272, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Thrustmaster Dual Analog 3.2", + .vendorID = 1103, + .productID = 45845, + .version = 257, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Dual Analog 4", + .vendorID = 1103, + .productID = 45845, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Dual Trigger", + .vendorID = 1103, + .productID = 45856, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Dual Trigger PlayStation Controller", + .vendorID = 1103, + .productID = 45859, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thrustmaster eSwap Pro Controller", + .vendorID = 1103, + .productID = 53262, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Firestorm Digital 2", + .vendorID = 1973, + .productID = 39171, + .version = 256, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B2, + .button2 = HID_B4, + },{ + .name = "Thrustmaster Firestorm Dual Analog 2", + .vendorID = 1103, + .productID = 45827, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Firestorm Dual Power", + .vendorID = 1103, + .productID = 45824, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Firestorm Dual Power", + .vendorID = 1103, + .productID = 45828, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Thrustmaster GP XID", + .vendorID = 1103, + .productID = 45862, + .version = 1026, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Thrustmaster GPX", + .vendorID = 9414, + .productID = 23298, + .version = 514, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Thrustmaster Run N Drive PlayStation Controller", + .vendorID = 1103, + .productID = 53256, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Run N Drive PlayStation Controller", + .vendorID = 1103, + .productID = 53257, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thrustmaster T Mini", + .vendorID = 1103, + .productID = 53255, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Thrustmaster Vibrating Gamepad", + .vendorID = 1103, + .productID = 45842, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "Tomee SNES Adapter", + .vendorID = 7511, + .productID = 32, + .version = 272, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Tomee SNES Controller", + .vendorID = 4797, + .productID = 53269, + .version = 272, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Toodles 2008 Chimp PC PS3", + .vendorID = 5336, + .productID = 52487, + .version = 273, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Torid", + .vendorID = 1118, + .productID = 654, + .version = 1392, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Torid", + .vendorID = 4544, + .productID = 37125, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "TRBot Virtual Joypad", + .vendorID = 2664, + .productID = 3, + .version = 3, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B11, + .button2 = HID_B12, + },{ + .name = "TRBot Virtual Joypad", + .vendorID = 888, + .productID = 3, + .version = 3, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B11, + .button2 = HID_B12, + },{ + .name = "TRBot Virtual Joypad", + .vendorID = 3552, + .productID = 3, + .version = 3, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B11, + .button2 = HID_B12, + },{ + .name = "TRBot Virtual Joypad", + .vendorID = 1776, + .productID = 3, + .version = 3, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B11, + .button2 = HID_B12, + },{ + .name = "Trust Gamepad", + .vendorID = 5215, + .productID = 453, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Turtle Beach Recon", + .vendorID = 4341, + .productID = 28680, + .version = 259, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Twin PS2 Adapter", + .vendorID = 2064, + .productID = 1, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Uniplay U6", + .vendorID = 6421, + .productID = 30806, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "USB Gamepad", + .vendorID = 2064, + .productID = 3, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "USB gamepad", + .vendorID = 121, + .productID = 6, + .version = 263, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "USB Gamepad", + .vendorID = 121, + .productID = 17, + .version = 256, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Victrix Pro Fightstick PS4", + .vendorID = 3695, + .productID = 515, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Victrix Pro Fightstick PS4", + .vendorID = 3695, + .productID = 519, + .version = 273, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "VR Box Controller", + .vendorID = 1452, + .productID = 12850, + .version = 1, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "VX Gaming Command Series", + .vendorID = 20291, + .productID = 20033, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 25176, + .productID = 13088, + .version = 22304, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 1817, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 654, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 654, + .version = 276, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 657, + .version = 263, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 673, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 673, .version = 263, .leftx = HID_A0, - .rightx = HID_A3, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 673, + .version = 1584, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Controller", + .vendorID = 3695, + .productID = 789, + .version = 512, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 EasySMX", + .vendorID = 1118, + .productID = 654, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox 360 Receiver", + .vendorID = 1118, + .productID = 673, + .version = 276, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 1118, + .productID = 514, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 3695, + .productID = 1043, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Controller", + .vendorID = 65535, + .productID = 65535, + .version = 256, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Gamepad", + .vendorID = 25176, + .productID = 18208, + .version = 28773, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 2826, + .version = 1029, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 721, + .version = 258, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 746, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 746, + .version = 769, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 736, + .version = 2307, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 765, + .version = 2307, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 765, + .version = 4400, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Elite", + .vendorID = 1118, + .productID = 739, + .version = 2306, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Elite 2 Controller", + .vendorID = 1118, + .productID = 2850, + .version = 1299, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Elite Series 2", + .vendorID = 1118, + .productID = 2821, + .version = 2306, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One S Controller", + .vendorID = 1118, + .productID = 746, + .version = 1297, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One S Controller", + .vendorID = 1118, + .productID = 746, + .version = 1301, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One S Controller", + .vendorID = 1118, + .productID = 746, + .version = 1291, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One S Controller", + .vendorID = 1118, + .productID = 746, + .version = 1293, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One S Controller", + .vendorID = 1118, + .productID = 746, + .version = 1302, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1281, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1285, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1287, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1289, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1293, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1295, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1301, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1285, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1281, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1285, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1287, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1289, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1297, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1299, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1301, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1287, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1291, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1295, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series X Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1297, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series X Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1300, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series X Controller", + .vendorID = 1118, + .productID = 2835, + .version = 1303, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Series X Controller", + .vendorID = 1118, + .productID = 2834, + .version = 1293, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Wireless Controller", + .vendorID = 1118, + .productID = 2848, + .version = 1299, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Wireless Controller", + .vendorID = 1118, + .productID = 2848, + .version = 1303, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox Wireless Controller", + .vendorID = 1118, + .productID = 2850, + .version = 1303, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "XEOX SL6556 BK", + .vendorID = 3141, + .productID = 17184, + .version = 272, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "XiaoMi Controller", + .vendorID = 10007, + .productID = 12612, + .version = 297, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "XinMo Dual Arcade", + .vendorID = 5824, + .productID = 1505, + .version = 257, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B4, + .button2 = HID_B3, + },{ + .name = "XInput Adapter", + .vendorID = 1118, + .productID = 654, + .version = 288, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Zeroplus P4", + .vendorID = 3090, + .productID = 3600, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "Zeroplus P4", + .vendorID = 3090, + .productID = 7696, + .version = 273, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B2, + },{ + .name = "8BitDo Adapter", + .vendorID = 12899, + .productID = 25444, + .version = 12596, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Adapter 2", + .vendorID = 26161, + .productID = 25913, + .version = 14388, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Arcade Stick", + .vendorID = 28484, + .productID = 25458, + .version = 8293, + .rightx = HID_A2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Arcade Stick", + .vendorID = 25700, + .productID = 13880, + .version = 25393, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Arcade Stick", + .vendorID = 24884, + .productID = 13154, + .version = 26210, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Arcade Stick", + .vendorID = 24888, + .productID = 25906, + .version = 25398, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Dogbone", + .vendorID = 13621, + .productID = 13414, + .version = 13622, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Dogbone", + .vendorID = 28484, + .productID = 26479, + .version = 25966, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo FC30 Pro", + .vendorID = 12855, + .productID = 26164, + .version = 14132, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo GameCube", + .vendorID = 28484, + .productID = 17223, + .version = 25711, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B2, + },{ + .name = "8BitDo Lite", + .vendorID = 28484, + .productID = 26946, + .version = 8303, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite 2", + .vendorID = 13879, + .productID = 25394, + .version = 13623, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite 2", + .vendorID = 28484, + .productID = 29801, + .version = 50, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite 2", + .vendorID = 25698, + .productID = 13366, + .version = 13621, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite SE", + .vendorID = 25697, + .productID = 25136, + .version = 25906, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite SE", + .vendorID = 28484, + .productID = 29801, + .version = 17747, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Lite SE", + .vendorID = 25953, + .productID = 26212, + .version = 25654, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo M30", + .vendorID = 11720, + .productID = 20486, + .version = 65535, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo M30", + .vendorID = 11720, + .productID = 1617, + .version = 65535, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo M30", + .vendorID = 12342, + .productID = 14134, + .version = 25656, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 13877, + .productID = 26169, + .version = 25656, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 28484, + .productID = 12339, + .version = 25711, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 12390, + .productID = 14130, + .version = 13670, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 13617, + .productID = 13369, + .version = 13366, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 24884, + .productID = 14179, + .version = 25911, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo M30", + .vendorID = 12601, + .productID = 12855, + .version = 26213, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Micro", + .vendorID = 28484, + .productID = 25449, + .version = 26400, + .leftx = HID_B0, + .rightx = HID_B2, + .lefty = HID_B1, + .righty = HID_B3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Micro", + .vendorID = 13618, + .productID = 25442, + .version = 25651, + .leftx = HID_B0, + .rightx = HID_B2, + .lefty = HID_B1, + .righty = HID_B3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Micro", + .vendorID = 25185, + .productID = 14435, + .version = 12902, + .leftx = HID_B0, + .rightx = HID_B2, + .lefty = HID_B1, + .righty = HID_B3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30", + .vendorID = 24882, + .productID = 26163, + .version = 24883, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30", + .vendorID = 28484, + .productID = 12339, + .version = 25711, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30 Pro 2", + .vendorID = 11720, + .productID = 36885, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N30 Pro 2", + .vendorID = 11720, + .productID = 10341, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo N64", + .vendorID = 14132, + .productID = 14690, + .version = 13108, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo N64", + .vendorID = 28484, + .productID = 13366, + .version = 25711, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NEOGEO", + .vendorID = 14689, + .productID = 14435, + .version = 26168, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NEOGEO", + .vendorID = 13155, + .productID = 14646, + .version = 13414, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NEOGEO", + .vendorID = 28484, + .productID = 20293, + .version = 8271, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NEOGEO", + .vendorID = 14690, + .productID = 24885, + .version = 12339, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo NES30 Pro", + .vendorID = 8194, + .productID = 36864, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo NES30 Pro", + .vendorID = 14368, + .productID = 9, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo P30", + .vendorID = 12644, + .productID = 25186, + .version = 14129, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo P30", + .vendorID = 13156, + .productID = 25912, + .version = 24931, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo P30", + .vendorID = 28484, + .productID = 12339, + .version = 24940, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Pro 2", + .vendorID = 12596, + .productID = 13155, + .version = 13109, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Pro 2", + .vendorID = 28484, + .productID = 26946, + .version = 8303, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Pro 2", + .vendorID = 28484, + .productID = 28530, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Pro 2", + .vendorID = 24886, + .productID = 12343, + .version = 24931, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Pro 2", + .vendorID = 25910, + .productID = 26161, + .version = 25912, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Receiver", + .vendorID = 12385, + .productID = 13668, + .version = 14640, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Receiver", + .vendorID = 28484, + .productID = 26946, + .version = 8303, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Receiver", + .vendorID = 12340, + .productID = 25907, + .version = 14692, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo S30", + .vendorID = 28484, + .productID = 12339, + .version = 25711, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo S30", + .vendorID = 13621, + .productID = 12387, + .version = 12642, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo SF30 Pro", + .vendorID = 11720, + .productID = 24576, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SF30 Pro", + .vendorID = 11720, + .productID = 24832, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SF30 Pro", + .vendorID = 28516, + .productID = 13126, + .version = 29264, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SFC30", + .vendorID = 25443, + .productID = 13106, + .version = 12853, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo SN30", + .vendorID = 11720, + .productID = 36882, + .version = 65535, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30", + .vendorID = 11720, + .productID = 10338, + .version = 65535, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30", + .vendorID = 14689, + .productID = 25657, + .version = 13670, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30", + .vendorID = 28484, + .productID = 13134, + .version = 28493, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30", + .vendorID = 12848, + .productID = 12645, + .version = 25698, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 PP", + .vendorID = 25140, + .productID = 12339, + .version = 13624, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo SN30 Pro", + .vendorID = 11720, + .productID = 24577, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 11720, + .productID = 24578, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 26213, + .productID = 13666, + .version = 26212, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 12601, + .productID = 13880, + .version = 13360, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 24884, + .productID = 13619, + .version = 25957, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 28484, + .productID = 13134, + .version = 29264, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 17184, + .productID = 30064, + .version = 8306, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo SN30 Pro Plus", + .vendorID = 13668, + .productID = 12338, + .version = 13623, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SNES30", + .vendorID = 10272, + .productID = 9, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo SNES30", + .vendorID = 4661, + .productID = 43808, + .version = 30720, + .button1 = HID_B21, + .button2 = HID_B20, + },{ + .name = "8BitDo Zero", + .vendorID = 24881, + .productID = 14137, + .version = 24887, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Zero", + .vendorID = 28516, + .productID = 29285, + .version = 24903, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Zero 2", + .vendorID = 11720, + .productID = 36888, + .version = 65535, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Zero 2", + .vendorID = 11720, + .productID = 12848, + .version = 65535, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Zero 2", + .vendorID = 13113, + .productID = 13104, + .version = 13360, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Zero 2", + .vendorID = 25442, + .productID = 14436, + .version = 25446, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "8BitDo Zero 2", + .vendorID = 25912, + .productID = 13363, + .version = 14390, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "8BitDo Zero 2", + .vendorID = 12898, + .productID = 26164, + .version = 25697, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Amazon Luna Controller", + .vendorID = 14177, + .productID = 25441, + .version = 12901, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Anbernic Gamepad", + .vendorID = 8312, + .productID = 14641, + .version = 12855, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Astro City Mini", + .vendorID = 8303, + .productID = 31092, + .version = 28265, + .button1 = HID_B23, + .button2 = HID_B22, + },{ + .name = "Atari VCS Classic Controller", + .vendorID = 12849, + .productID = 13409, + .version = 13922, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Atari VCS Modern Controller", + .vendorID = 13668, + .productID = 25445, + .version = 13669, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "AYN Odin", + .vendorID = 17184, + .productID = 29300, + .version = 25964, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Brook Mars PS4 Controller", + .vendorID = 24930, + .productID = 25145, + .version = 13414, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B19, + },{ + .name = "Brook Mars PS4 Controller", + .vendorID = 13620, + .productID = 12641, + .version = 24932, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B19, + },{ + .name = "Elecom JC-W01U", + .vendorID = 12596, + .productID = 25910, + .version = 12855, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B23, + .button2 = HID_B24, + },{ + .name = "Elecom JC-W01U", + .vendorID = 24937, + .productID = 11587, + .version = 21809, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B23, + .button2 = HID_B24, + },{ + .name = "Evo VR", + .vendorID = 13925, + .productID = 25400, + .version = 25144, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Flydigi Vader 2", + .vendorID = 1204, + .productID = 9233, + .version = 65503, + .leftx = HID_A0, + .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A4, - .button1 = HID_B2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GameSir G3w", + .vendorID = 8380, + .productID = 21760, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Google Nexus", + .vendorID = 13157, + .productID = 12387, + .version = 12849, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, .button2 = HID_B1, },{ .name = "Google Stadia Controller", - .vendorID = 6353, - .productID = 37888, - .version = 256, + .vendorID = 14645, + .productID = 13413, + .version = 24880, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -1056,634 +19179,908 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Gravis Eliminator Pro", - .vendorID = 1149, - .productID = 16389, - .version = 257, - .button1 = HID_B1, - .button2 = HID_B2, + .name = "Google Stadia Controller", + .vendorID = 25964, + .productID = 17228, + .version = 24948, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Gravis GamePad Pro", - .vendorID = 1064, - .productID = 16385, - .version = 512, - .button1 = HID_B1, - .button2 = HID_B2, + .name = "Google Stadia Controller", + .vendorID = 24937, + .productID = 21320, + .version = 25394, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "GreenAsia Joystick", - .vendorID = 3727, - .productID = 3, - .version = 263, + .name = "GPD XD Plus", + .vendorID = 726, + .productID = 35301, + .version = 65503, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "GPD XD Plus", + .vendorID = 726, + .productID = 35301, + .version = 65503, + .leftx = HID_A0, + .rightx = HID_A4, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hori Battle", + .vendorID = 24933, + .productID = 14136, + .version = 12898, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A2, - .button1 = HID_B2, - .button2 = HID_B3, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, },{ .name = "Hori Fighting Commander 3 Pro", - .vendorID = 3853, - .productID = 45, - .version = 4096, + .vendorID = 13364, + .productID = 14647, + .version = 25396, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Hori Fighting Commander 4 PS3", - .vendorID = 3853, - .productID = 95, + .name = "Hori Fighting Commander 3 Pro", + .vendorID = 17184, + .productID = 19500, + .version = 8238, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B19, + },{ + .name = "Hori Gem Pad 3", + .vendorID = 17184, + .productID = 19500, + .version = 8224, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B17, + },{ + .name = "Hori PC Engine Mini Controller", + .vendorID = 26212, + .productID = 12850, + .version = 24929, + .button1 = HID_B1, + .button2 = HID_B19, + },{ + .name = "Hori Real Arcade Pro 3", + .vendorID = 25906, + .productID = 12644, + .version = 25396, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B1, + .button2 = HID_B19, + },{ + .name = "Hori Switch Split Pad Pro", + .vendorID = 14645, + .productID = 24885, + .version = 13154, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "HORIPAD Switch Pro Controller", + .vendorID = 25141, + .productID = 14134, + .version = 25904, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Hyperkin Admiral N64 Controller", + .vendorID = 27506, + .productID = 20512, .version = 0, .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Hyperkin Admiral N64 Controller", + .vendorID = 12597, + .productID = 13360, + .version = 25142, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Hyperkin N64 Adapter", + .vendorID = 13622, + .productID = 13368, + .version = 14649, + .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Hori Fighting Commander 4 PS3", - .vendorID = 3853, - .productID = 95, - .version = 256, + .name = "Hyperkin N64 Adapter", + .vendorID = 24919, + .productID = 8224, + .version = 31048, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Hori Fighting Commander 4 PS4", - .vendorID = 3853, - .productID = 94, + .name = "iBuffalo SNES Controller", + .vendorID = 1411, + .productID = 8288, + .version = 65039, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "iBuffalo Super Famicom Controller", + .vendorID = 11570, + .productID = 29545, + .version = 25133, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "InterAct GoPad", + .vendorID = 12854, + .productID = 26210, + .version = 12339, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B24, + .button2 = HID_B25, + },{ + .name = "InterAct HammerHead FX", + .vendorID = 11844, + .productID = 29806, + .version = 25441, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B23, + .button2 = HID_B24, + },{ + .name = "Joy-Con", + .vendorID = 25443, + .productID = 12601, + .version = 25700, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B21, + .button2 = HID_B22, + },{ + .name = "Joy-Con (L)", + .vendorID = 12388, + .productID = 12342, + .version = 12901, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (L)", + .vendorID = 13409, + .productID = 26163, + .version = 12853, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (L)", + .vendorID = 28483, + .productID = 19496, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (R)", + .vendorID = 12387, + .productID = 26160, + .version = 25908, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (R)", + .vendorID = 14689, + .productID = 14130, + .version = 14391, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Joy-Con (R)", + .vendorID = 28483, + .productID = 21032, .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "JYS Aapter", + .vendorID = 13878, + .productID = 13872, + .version = 12901, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Hori Fighting Commander 4 PS4", - .vendorID = 3853, - .productID = 94, - .version = 256, + .name = "JYS Adapter", + .vendorID = 13624, + .productID = 26161, + .version = 24884, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, + .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B3, },{ - .name = "Hori Fighting Commander PS3", - .vendorID = 3853, - .productID = 132, - .version = 256, + .name = "Logitech F310", + .vendorID = 13619, + .productID = 14643, + .version = 14133, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech F710", + .vendorID = 13881, + .productID = 12642, + .version = 24934, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech F710", + .vendorID = 25972, + .productID = 18208, + .version = 28773, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech F710", + .vendorID = 12851, + .productID = 13155, + .version = 13104, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Logitech G Cloud", + .vendorID = 14391, + .productID = 13625, + .version = 13878, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Luna Controller", + .vendorID = 28271, + .productID = 28001, + .version = 28483, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Luna Controller", + .vendorID = 18208, + .productID = 28773, + .version = 0, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Magic NS", + .vendorID = 13666, + .productID = 13365, + .version = 12857, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, + .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Hori Fighting Commander PS3", - .vendorID = 3853, - .productID = 133, - .version = 256, + .name = "Magic NS", + .vendorID = 14649, + .productID = 25190, + .version = 25189, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "Hori Fighting Stick Mini", - .vendorID = 6708, - .productID = 515, - .version = 276, - .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Hori Fighting Stick mini 4 PS3", - .vendorID = 3853, - .productID = 136, - .version = 256, + .name = "Magic NS", + .vendorID = 25396, + .productID = 12601, + .version = 12851, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B3, },{ - .name = "Hori Fighting Stick mini 4 PS4", - .vendorID = 3853, - .productID = 135, - .version = 256, - .button1 = HID_B1, - .button2 = HID_B2, + .name = "Mayflash GameCube Adapter", + .vendorID = 24940, + .productID = 27680, + .version = 29801, + .leftx = HID_A0, + .rightx = HID_A5, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B22, + .button2 = HID_B21, },{ - .name = "Hori Gem Pad 3", - .vendorID = 3853, - .productID = 77, + .name = "Mayflash N64 Adapter", + .vendorID = 28530, + .productID = 29285, .version = 0, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Hori PC Engine Mini Controller", - .vendorID = 3853, - .productID = 312, - .version = 264, + .name = "Mayflash N64 Adapter", + .vendorID = 14435, + .productID = 24880, + .version = 12851, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Hori Pokken Tournament DX Pro", - .vendorID = 3853, - .productID = 146, - .version = 256, - .button1 = HID_B1, - .button2 = HID_B2, + .name = "Mayflash Saturn Adapter", + .vendorID = 25401, + .productID = 13670, + .version = 13616, + .button1 = HID_B21, + .button2 = HID_B22, },{ - .name = "Hori Real Arcade Pro for Nintendo Switch", - .vendorID = 3853, - .productID = 170, - .version = 1394, + .name = "Mayflash Saturn Adapter", + .vendorID = 24937, + .productID = 21333, + .version = 24903, + .button1 = HID_B21, + .button2 = HID_B22, + },{ + .name = "Mayflash Wii Classic Adapter", + .vendorID = 28717, + .productID = 29285, + .version = 17492, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B2, - .button2 = HID_B1, + .button1 = HID_B23, + .button2 = HID_B22, },{ - .name = "Hori Split Pad Fit", - .vendorID = 3853, - .productID = 512, - .version = 279, + .name = "Mayflash Wii DolphinBar", + .vendorID = 13924, + .productID = 12598, + .version = 14136, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, + .button1 = HID_B23, + .button2 = HID_B24, + },{ + .name = "Mayflash Wii U Pro Adapter", + .vendorID = 25145, + .productID = 13669, + .version = 13925, + .rightx = HID_A0, + .righty = HID_A1, + .button1 = HID_B22, + .button2 = HID_B23, + },{ + .name = "Mega Drive", + .vendorID = 14438, + .productID = 13362, + .version = 14128, + .button1 = HID_B23, + .button2 = HID_B22, + },{ + .name = "Mega Drive", + .vendorID = 12857, + .productID = 13623, + .version = 24882, + .button1 = HID_B21, + .button2 = HID_B22, + },{ + .name = "Mega Drive", + .vendorID = 26163, + .productID = 13879, + .version = 12600, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B0, },{ - .name = "Hori Switch Split Pad Pro", - .vendorID = 3853, - .productID = 512, - .version = 277, + .name = "Microsoft Dual Strike", + .vendorID = 12594, + .productID = 14181, + .version = 14694, + .rightx = HID_A0, + .righty = HID_A1_REV, + .button1 = HID_B24, + .button2 = HID_B23, + },{ + .name = "Microsoft SideWinder Pro", + .vendorID = 14433, + .productID = 14644, + .version = 12596, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Microsoft Xbox Series Controller", + .vendorID = 13877, + .productID = 13104, + .version = 24885, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Horipad 4 PS3", - .vendorID = 3853, - .productID = 110, - .version = 256, + .name = "Mobapad Chitu HD", + .vendorID = 16720, + .productID = 29264, + .version = 17480, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Horipad 4 PS4", - .vendorID = 3853, - .productID = 102, - .version = 256, + .name = "Mocute 053X", + .vendorID = 17748, + .productID = 13109, + .version = 13645, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Horipad FPS Plus 4", - .vendorID = 3853, - .productID = 102, - .version = 0, + .name = "Mocute M053", + .vendorID = 24887, + .productID = 14388, + .version = 24934, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Horipad Mini 4", - .vendorID = 3853, - .productID = 238, - .version = 256, + .name = "Mocute M053", + .vendorID = 12390, + .productID = 25445, + .version = 12390, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Horipad Nintendo Switch Controller", - .vendorID = 3853, - .productID = 193, - .version = 1394, + .name = "NEXT SNES Controller", + .vendorID = 24935, + .productID = 24944, + .version = 8224, + .button1 = HID_B2, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 65535, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Hyperkin N64 Adapter", - .vendorID = 11812, - .productID = 3071, - .version = 256, + .name = "Nintendo Switch Pro Controller", + .vendorID = 25913, + .productID = 12597, + .version = 25441, + .rightx = HID_A2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 28483, + .productID = 28530, + .version = 29285, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Hyperkin N64 Controller Adapter", - .vendorID = 121, - .productID = 38222, - .version = 256, + .name = "NSO N64 Controller", + .vendorID = 12597, + .productID = 25913, + .version = 12385, .leftx = HID_A0, - .rightx = HID_A5, .lefty = HID_A1, - .righty = HID_A2, - .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "iBuffalo Super Famicom Controller", - .vendorID = 1411, - .productID = 8288, - .version = 0, .button1 = HID_B1, .button2 = HID_B0, },{ - .name = "InterAct AxisPad", - .vendorID = 1519, - .productID = 3, - .version = 512, - .leftx = HID_A0, - .rightx = HID_A3, - .lefty = HID_A1, - .righty = HID_A2, - .button1 = HID_B2, - .button2 = HID_B3, - },{ - .name = "Interact GoPad", - .vendorID = 1533, - .productID = 12288, - .version = 272, + .name = "NSO N64 Controller", + .vendorID = 28483, + .productID = 28530, + .version = 29285, .leftx = HID_A0, .lefty = HID_A1, - .button1 = HID_B3, - .button2 = HID_B4, + .button1 = HID_B1, + .button2 = HID_B0, },{ - .name = "Joy-Con (L)", - .vendorID = 1406, - .productID = 8198, - .version = 1, + .name = "NSO SNES Controller", + .vendorID = 17184, + .productID = 29300, + .version = 25964, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Joy-Con (R)", - .vendorID = 1406, - .productID = 8199, - .version = 1, + .name = "NSO SNES Controller", + .vendorID = 24884, + .productID = 24885, + .version = 13878, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "JYS Adapter", - .vendorID = 12068, - .productID = 45, - .version = 263, + .name = "NVIDIA Controller", + .vendorID = 2389, + .productID = 29187, + .version = 32719, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B2, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Logitech Controller", - .vendorID = 1133, - .productID = 49689, - .version = 0, + .name = "NVIDIA Controller", + .vendorID = 2389, + .productID = 29200, + .version = 65535, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Logitech Dual Action", - .vendorID = 1133, - .productID = 49686, - .version = 512, + .name = "NVIDIA Controller", + .vendorID = 2389, + .productID = 29204, + .version = 32735, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Logitech Dual Action", - .vendorID = 1133, - .productID = 49686, - .version = 768, + .name = "NVIDIA Controller", + .vendorID = 2389, + .productID = 29204, + .version = 32735, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A4, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "Logitech Dual Action", - .vendorID = 1133, - .productID = 49686, - .version = 1044, + .righty = HID_A5, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "NVIDIA Controller", + .vendorID = 25446, + .productID = 25909, + .version = 12337, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Logitech F310", - .vendorID = 1133, - .productID = 49686, - .version = 0, + .name = "NVIDIA Controller", + .vendorID = 16713, + .productID = 29295, + .version = 24946, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Logitech F510", - .vendorID = 1133, - .productID = 49688, - .version = 0, + .name = "NVIDIA Controller", + .vendorID = 24933, + .productID = 12385, + .version = 24929, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Logitech F710", - .vendorID = 1133, - .productID = 49689, - .version = 773, + .name = "OUYA Controller", + .vendorID = 13361, + .productID = 14644, + .version = 13368, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B1, + .righty = HID_A4, + .button1 = HID_B0, .button2 = HID_B2, },{ - .name = "Logitech F710", - .vendorID = 1133, - .productID = 49695, - .version = 0, + .name = "OUYA Controller", + .vendorID = 18208, + .productID = 8293, + .version = 29806, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, .righty = HID_A4, .button1 = HID_B0, - .button2 = HID_B1, - },{ - .name = "Logitech RumblePad 2", - .vendorID = 1133, - .productID = 49688, - .version = 256, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, - .button1 = HID_B1, .button2 = HID_B2, },{ - .name = "Mad Catz PS3 Fightpad Pro", - .vendorID = 1848, - .productID = 12880, - .version = 256, + .name = "PDP PS3 Rock Candy Controller", + .vendorID = 29295, + .productID = 25454, + .version = 25924, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B17, },{ - .name = "Mad Catz PS3 Fightstick TE S Plus", - .vendorID = 1848, - .productID = 13188, - .version = 256, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, + .name = "Pokken", + .vendorID = 12853, + .productID = 12385, + .version = 13872, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Mad Catz PS4 Fightpad Pro", - .vendorID = 1848, - .productID = 33360, - .version = 256, + .name = "PS2", + .vendorID = 14182, + .productID = 13362, + .version = 14436, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A2, + .button1 = HID_B23, + .button2 = HID_B22, },{ - .name = "Mad Catz PS4 Fightstick TE S Plus", - .vendorID = 1848, - .productID = 33668, - .version = 256, + .name = "PS3 Controller", + .vendorID = 1356, + .productID = 616, + .version = 65503, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Marvo GT-004", - .vendorID = 121, - .productID = 6, - .version = 263, + .name = "PS3 Controller", + .vendorID = 20512, + .productID = 21337, + .version = 18772, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B2, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Mayflash Controller Adapter", - .vendorID = 3727, - .productID = 12307, - .version = 273, - .leftx = HID_A0, - .rightx = HID_A6_REV, - .lefty = HID_A2, - .righty = HID_A4, - .button1 = HID_B2, - .button2 = HID_B4, - },{ - .name = "Mayflash GameCube Adapter", - .vendorID = 121, - .productID = 6211, - .version = 256, - .leftx = HID_A0, - .rightx = HID_A20, - .lefty = HID_A4, - .righty = HID_A8, - .button1 = HID_B4, - .button2 = HID_B0, - },{ - .name = "Mayflash GameCube Controller", - .vendorID = 121, - .productID = 6212, - .version = 256, + .name = "PS3 Controller", + .vendorID = 14438, + .productID = 14438, + .version = 25443, .leftx = HID_A0, - .rightx = HID_A5, - .lefty = HID_A1, - .righty = HID_A2, - .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "Mayflash Magic NS", - .vendorID = 12068, - .productID = 115, - .version = 512, .rightx = HID_A2, + .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B4, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Mayflash Magic NS", - .vendorID = 121, - .productID = 6354, - .version = 294, + .name = "PS3 Controller", + .vendorID = 25957, + .productID = 12852, + .version = 13625, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B2, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Mayflash Magic NS", - .vendorID = 8406, - .productID = 42768, - .version = 259, + .name = "PS3 Controller", + .vendorID = 24882, + .productID = 13926, + .version = 14135, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "Mayflash Saturn Adapter", - .vendorID = 3727, - .productID = 12304, - .version = 273, .button1 = HID_B0, - .button2 = HID_B2, + .button2 = HID_B1, },{ - .name = "Mayflash Wii Classic Adapter", - .vendorID = 2341, - .productID = 1000, - .version = 0, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 30720, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B0, - },{ - .name = "Mayflash Wii DolphinBar", - .vendorID = 121, - .productID = 6147, - .version = 256, - .leftx = HID_A0, - .rightx = HID_A8, - .lefty = HID_A4, - .righty = HID_A12, - .button1 = HID_B8, - .button2 = HID_B12, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Mayflash Wii U Pro Adapter", - .vendorID = 121, - .productID = 6144, - .version = 0, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 65279, .leftx = HID_A0, - .rightx = HID_A8, - .lefty = HID_A4, - .righty = HID_A12, - .button1 = HID_B4, - .button2 = HID_B8, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B17, },{ - .name = "Mayflash Wii U Pro Adapter", - .vendorID = 121, - .productID = 6144, - .version = 256, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 65279, .leftx = HID_A0, - .rightx = HID_A8, - .lefty = HID_A4, - .righty = HID_A12, - .button1 = HID_B4, - .button2 = HID_B8, - },{ - .name = "Microsoft Dual Strike", - .vendorID = 1118, - .productID = 40, - .version = 258, - .rightx = HID_A0, - .righty = HID_A1_REV, - .button1 = HID_B3, - .button2 = HID_B2, + .rightx = HID_A4, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B17, },{ - .name = "Microsoft SideWinder", - .vendorID = 1118, - .productID = 3, - .version = 262, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 1476, + .version = 65535, .leftx = HID_A0, + .rightx = HID_A2, .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Microsoft SideWinder", - .vendorID = 1118, - .productID = 7, - .version = 262, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 65279, .leftx = HID_A0, + .rightx = HID_A2, .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Microsoft SideWinder Plug and Play", - .vendorID = 1118, - .productID = 39, - .version = 257, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 65535, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Mobapad Chitu HD", - .vendorID = 9029, - .productID = 57365, - .version = 1394, + .name = "PS4 Controller", + .vendorID = 13158, + .productID = 12902, + .version = 25138, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B17, + },{ + .name = "PS4 Controller", + .vendorID = 13880, + .productID = 26162, + .version = 25955, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B16, },{ - .name = "Moga Pro 2", - .vendorID = 8406, - .productID = 25201, - .version = 1, + .name = "PS4 Controller", + .vendorID = 25907, + .productID = 13666, + .version = 12902, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -1691,10 +20088,10 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "MOGA XP5A Plus", - .vendorID = 9414, - .productID = 35114, - .version = 256, + .name = "PS4 Controller", + .vendorID = 25395, + .productID = 12849, + .version = 13624, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -1702,10 +20099,10 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "MOGA XP5A Plus", - .vendorID = 9414, - .productID = 35115, - .version = 256, + .name = "PS4 Controller", + .vendorID = 26167, + .productID = 13153, + .version = 14384, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -1713,31 +20110,32 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "NeoGeo mini PAD Controller", - .vendorID = 9571, - .productID = 1397, - .version = 512, - .button1 = HID_B1, - .button2 = HID_B0, - },{ - .name = "NES 2-port Adapter", - .vendorID = 4754, - .productID = 17995, - .version = 515, + .name = "PS4 Controller", + .vendorID = 12336, + .productID = 12385, + .version = 13616, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, .button1 = HID_B1, - .button2 = HID_B0, + .button2 = HID_B17, },{ - .name = "NEXT SNES Controller", - .vendorID = 2064, - .productID = 58625, - .version = 262, - .button1 = HID_B2, + .name = "PS4 Controller", + .vendorID = 25139, + .productID = 14137, + .version = 13665, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Nintendo Switch Pro Controller", - .vendorID = 1406, - .productID = 8201, - .version = 0, + .name = "PS4 Controller", + .vendorID = 13364, + .productID = 25189, + .version = 25697, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -1745,10 +20143,10 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Nintendo Switch Pro Controller", - .vendorID = 1406, - .productID = 8201, - .version = 1, + .name = "PS4 Controller", + .vendorID = 25187, + .productID = 13878, + .version = 14386, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -1756,70 +20154,87 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Nintendo Switch Pro Controller", - .vendorID = 1406, - .productID = 8201, - .version = 528, + .name = "PS4 Controller", + .vendorID = 13625, + .productID = 14643, + .version = 13412, .leftx = HID_A0, - .rightx = HID_A3, + .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A4, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Nintendo Switch Pro Controller", - .vendorID = 1406, - .productID = 8201, - .version = 2047, + .name = "PS4 Controller", + .vendorID = 14390, + .productID = 14644, + .version = 26212, .leftx = HID_A0, - .rightx = HID_A3, + .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A4, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "NSO N64 Controller", - .vendorID = 1406, - .productID = 8217, - .version = 1, + .name = "PS4 Controller", + .vendorID = 25445, + .productID = 14177, + .version = 14179, .leftx = HID_A0, + .rightx = HID_A2, .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B0, + .button2 = HID_B19, },{ - .name = "NSO SNES Controller", - .vendorID = 1406, - .productID = 8215, - .version = 1, - .button1 = HID_B0, - .button2 = HID_B1, + .name = "PS4 Controller", + .vendorID = 14640, + .productID = 13365, + .version = 24888, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B19, },{ - .name = "NVIDIA Controller", - .vendorID = 2389, - .productID = 29204, - .version = 1317, + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 65279, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B17, + },{ + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 65279, + .leftx = HID_A0, + .rightx = HID_A4, + .lefty = HID_A1, + .righty = HID_A5, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Nyko Airflo EX", - .vendorID = 4683, - .productID = 19713, - .version = 256, + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 65535, .leftx = HID_A0, - .rightx = HID_A3, + .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A2, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "PB Tails Choc", - .vendorID = 121, - .productID = 6172, - .version = 256, + .name = "PS5 Controller", + .vendorID = 25908, + .productID = 25442, + .version = 12857, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -1827,255 +20242,305 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "PDP PS3 Versus Fighting", - .vendorID = 3695, - .productID = 265, - .version = 258, + .name = "PS5 Controller", + .vendorID = 14180, + .productID = 12902, + .version = 14436, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A5, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Piranha Xtreme PS3 Controller", - .vendorID = 3727, - .productID = 3, - .version = 0, + .name = "PS5 Controller", + .vendorID = 14133, + .productID = 25401, + .version = 26169, .leftx = HID_A0, - .rightx = HID_A3, + .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A2, - .button1 = HID_B2, - .button2 = HID_B1, + .righty = HID_A5, + .button1 = HID_B1, + .button2 = HID_B19, },{ - .name = "PowerA Core Plus Gamecube Controller", - .vendorID = 8406, - .productID = 42769, - .version = 512, + .name = "PS5 Controller", + .vendorID = 12597, + .productID = 25955, + .version = 13366, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A5, .button1 = HID_B1, - .button2 = HID_B0, + .button2 = HID_B19, },{ - .name = "PowerA Nintendo Switch Controller", - .vendorID = 8406, - .productID = 42769, - .version = 1296, + .name = "Qanba 4RAF", + .vendorID = 14649, + .productID = 13669, + .version = 24889, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "PowerA Pro Ex", - .vendorID = 8406, - .productID = 51821, - .version = 256, + .name = "Razer Junglecat", + .vendorID = 14389, + .productID = 25656, + .version = 13872, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "PS2 Adapter", - .vendorID = 2064, - .productID = 3, - .version = 262, + .name = "Razer Kishi", + .vendorID = 10232, + .productID = 3007, + .version = 65535, .leftx = HID_A0, - .rightx = HID_A4, + .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B2, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "PS3 Controller", - .vendorID = 1356, - .productID = 616, - .version = 0, + .name = "Razer Kishi", + .vendorID = 13156, + .productID = 25398, + .version = 14642, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B14, - .button2 = HID_B13, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "PS3 Controller", - .vendorID = 1356, - .productID = 616, - .version = 256, + .name = "Razer Raiju Mobile", + .vendorID = 5426, + .productID = 1797, + .version = 65535, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B14, - .button2 = HID_B13, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "PS3 Controller", - .vendorID = 1356, - .productID = 616, - .version = 1394, + .name = "Razer Raiju Mobile", + .vendorID = 5426, + .productID = 1799, + .version = 65535, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B14, - .button2 = HID_B13, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "PS4 Controller", - .vendorID = 1356, - .productID = 2976, - .version = 256, + .name = "Razer Serval", + .vendorID = 5426, + .productID = 2304, + .version = 32703, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "PS4 Controller", - .vendorID = 1356, - .productID = 1476, - .version = 0, + .name = "Retro Bit Saturn Controller", + .vendorID = 8309, + .productID = 29300, + .version = 26946, + .button1 = HID_B21, + .button2 = HID_B22, + },{ + .name = "Retro Bit SNES Controller", + .vendorID = 8307, + .productID = 25931, + .version = 18208, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Retro Bit SNES Controller", + .vendorID = 25904, + .productID = 13154, + .version = 24882, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Retro Controller", + .vendorID = 18031, + .productID = 8295, + .version = 25970, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Retro Controller", + .vendorID = 14133, + .productID = 25905, + .version = 12343, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "PS4 Controller", - .vendorID = 1356, - .productID = 1476, - .version = 256, + .name = "Retroid Pocket", + .vendorID = 26991, + .productID = 28496, + .version = 29797, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, + .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B0, },{ - .name = "PS4 Controller", - .vendorID = 1356, - .productID = 2508, - .version = 256, + .name = "Retroid Pocket", + .vendorID = 8312, + .productID = 29806, + .version = 27756, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "PS5 Access Controller", - .vendorID = 1356, - .productID = 3679, - .version = 256, + .name = "Retroid Pocket 2", + .vendorID = 13111, + .productID = 14389, + .version = 12341, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Retrolink", + .vendorID = 26163, + .productID = 13879, + .version = 12600, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B0, },{ - .name = "PS5 Controller", - .vendorID = 1356, - .productID = 3302, - .version = 256, + .name = "RetroUSB N64 RetroPort", + .vendorID = 13623, + .productID = 13107, + .version = 25651, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B10, + .button2 = HID_B9, },{ - .name = "PS5 Controller", - .vendorID = 1356, - .productID = 3570, - .version = 256, + .name = "RetroUSB N64 RetroPort", + .vendorID = 25961, + .productID = 28781, + .version = 28265, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, + .button1 = HID_B10, + .button2 = HID_B9, + },{ + .name = "RetroUSB SNES RetroPort", + .vendorID = 21871, + .productID = 25390, + .version = 21280, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B20, },{ - .name = "PS5 Controller", - .vendorID = 1356, - .productID = 3302, - .version = 256, + .name = "RetroUSB SNES RetroPort", + .vendorID = 12387, + .productID = 14434, + .version = 14182, + .button1 = HID_B1, + .button2 = HID_B20, + },{ + .name = "Rock Candy Switch Controller", + .vendorID = 25908, + .productID = 14385, + .version = 13622, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, + .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "PS5 Controller", - .vendorID = 1356, - .productID = 3570, - .version = 256, + .name = "RumblePad 2", + .vendorID = 26169, + .productID = 13412, + .version = 26167, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B22, + .button2 = HID_B23, },{ - .name = "PXN P30 Pro Mobile", - .vendorID = 1118, - .productID = 736, - .version = 1, + .name = "Samsung EIGP20", + .vendorID = 13360, + .productID = 26165, + .version = 13880, .leftx = HID_A0, - .rightx = HID_A3, + .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A4, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Qanba Dragon Arcade Joystick PS3", - .vendorID = 11298, - .productID = 9474, - .version = 256, + .name = "Samsung EIGP20", + .vendorID = 28277, + .productID = 24903, + .version = 20512, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Qanba Drone Arcade Stick", - .vendorID = 11298, - .productID = 8192, - .version = 256, + .name = "Sanwa PlayOnline Mobile", + .vendorID = 25145, + .productID = 13365, + .version = 13667, + .button1 = HID_B21, + .button2 = HID_B22, + },{ + .name = "Saturn", + .vendorID = 25393, + .productID = 26167, + .version = 14136, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Raphnet SNES Adapter", - .vendorID = 10395, - .productID = 86, - .version = 544, - .button1 = HID_B1, - .button2 = HID_B4, + .name = "Saturn", + .vendorID = 25913, + .productID = 14387, + .version = 25187, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Raphnet Wii Classic Adapter", - .vendorID = 10395, - .productID = 128, - .version = 546, + .name = "Saturn", + .vendorID = 25139, + .productID = 12598, + .version = 25399, .leftx = HID_A0, - .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A4, - .button1 = HID_B1, - .button2 = HID_B4, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Razer Onza TE", - .vendorID = 5769, - .productID = 64768, - .version = 0, + .name = "SG H510", + .vendorID = 13107, + .productID = 12337, + .version = 25699, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2083,43 +20548,71 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Razer Panthera PS3 Controller", - .vendorID = 5426, - .productID = 1026, - .version = 256, + .name = "SG H510", + .vendorID = 25910, + .productID = 25911, + .version = 13365, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Razer Panthera PS4", - .vendorID = 5426, - .productID = 1025, - .version = 256, + .name = "SG H510", + .vendorID = 13113, + .productID = 12597, + .version = 25445, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Razer Raiju", - .vendorID = 5426, - .productID = 4096, - .version = 256, + .name = "SN30 PP", + .vendorID = 25443, + .productID = 26163, + .version = 13877, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, + .righty = HID_A3, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B0, },{ - .name = "Razer Raiju Mobile", - .vendorID = 5426, - .productID = 1797, - .version = 257, + .name = "SNES", + .vendorID = 26214, + .productID = 25954, + .version = 24932, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SNES Adapter", + .vendorID = 21333, + .productID = 24912, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SNES Controller", + .vendorID = 24903, + .productID = 24944, + .version = 0, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Sony PlayStation Classic Controller", + .vendorID = 25138, + .productID = 25398, + .version = 25187, + .button1 = HID_B19, + .button2 = HID_B1, + },{ + .name = "Sony PlayStation Controller", + .vendorID = 18720, + .productID = 29285, + .version = 26996, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -2127,32 +20620,59 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Razer Raion PS4 Fightpad", - .vendorID = 5426, - .productID = 4352, - .version = 256, + .name = "Sony PlayStation Controller", + .vendorID = 25964, + .productID = 17184, + .version = 29300, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Sony PSP", + .vendorID = 13360, + .productID = 13921, + .version = 25958, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B21, + .button2 = HID_B22, + },{ + .name = "Sony Vita", + .vendorID = 13412, + .productID = 26167, + .version = 14434, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, .button1 = HID_B1, - .button2 = HID_B2, + .button2 = HID_B19, },{ - .name = "Razer Serval", - .vendorID = 5426, - .productID = 2304, - .version = 512, + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4357, + .version = 1, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Razer Serval", - .vendorID = 5426, - .productID = 2304, - .version = 14870, + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4358, + .version = 1, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "SteelSeries Nimbus", + .vendorID = 273, + .productID = 5152, + .version = 32271, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -2160,244 +20680,277 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Razer Wildcat", - .vendorID = 5426, - .productID = 2563, - .version = 0, + .name = "SteelSeries Nimbus Plus", + .vendorID = 25657, + .productID = 13617, + .version = 25701, .leftx = HID_A0, - .rightx = HID_A3, - .lefty = HID_A1, - .righty = HID_A4, + .rightx = HID_A2, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Redgear", - .vendorID = 9571, - .productID = 1408, - .version = 256, + .name = "Taito Egret II Mini Control Panel", + .vendorID = 13623, + .productID = 14137, + .version = 12340, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B25, + .button2 = HID_B23, + },{ + .name = "TGZ Controller", + .vendorID = 28483, + .productID = 28530, + .version = 29285, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B2, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Retro Bit Sega Genesis Controller Adapter", - .vendorID = 4754, - .productID = 18245, - .version = 512, + .name = "TGZ Controller", + .vendorID = 13621, + .productID = 14434, + .version = 25699, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, - .button2 = HID_B2, + .button2 = HID_B1, },{ - .name = "Retro Controller", - .vendorID = 121, - .productID = 17, - .version = 0, - .button1 = HID_B1, - .button2 = HID_B2, + .name = "THEC64 Joystick", + .vendorID = 14179, + .productID = 25956, + .version = 12645, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B21, + .button2 = HID_B22, },{ - .name = "Retro Controller", - .vendorID = 121, - .productID = 17, - .version = 261, - .button1 = HID_B1, - .button2 = HID_B2, + .name = "THEGamepad", + .vendorID = 25138, + .productID = 13157, + .version = 13924, + .leftx = HID_A0, + .lefty = HID_A1, + .button1 = HID_B23, + .button2 = HID_B22, },{ - .name = "Retro Controller", - .vendorID = 1411, - .productID = 8288, - .version = 256, + .name = "Thrustmaster eSwap Pro Controller", + .vendorID = 1103, + .productID = 53262, + .version = 65279, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Retrode Adapter", - .vendorID = 1027, - .productID = 38849, - .version = 0, - .button1 = HID_B0, - .button2 = HID_B4, + .name = "Twin Joystick", + .vendorID = 21792, + .productID = 18976, + .version = 29811, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A2, + .button1 = HID_B22, + .button2 = HID_B21, },{ - .name = "Retrolink SNES Controller", - .vendorID = 121, - .productID = 17, - .version = 262, - .button1 = HID_B2, + .name = "Valve Steam Controller", + .vendorID = 12340, + .productID = 12344, + .version = 13414, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "RetroUSB N64 RetroPort", - .vendorID = 4660, - .productID = 4, - .version = 0, + .name = "Valve Steam Controller", + .vendorID = 25702, + .productID = 13153, + .version = 14393, .leftx = HID_A0, + .rightx = HID_A2, .lefty = HID_A1, - .button1 = HID_B7, - .button2 = HID_B6, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Revolution Pro Controller", - .vendorID = 5227, - .productID = 3329, - .version = 256, + .name = "Wii Classic Adapter", + .vendorID = 13617, + .productID = 24929, + .version = 13111, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B23, + .button2 = HID_B22, },{ - .name = "Revolution Pro Controller 3", - .vendorID = 5227, - .productID = 3347, - .version = 256, + .name = "Wii Classic Adapter", + .vendorID = 25444, + .productID = 14691, + .version = 25656, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B23, + .button2 = HID_B22, },{ - .name = "Rii RK707", - .vendorID = 1356, - .productID = 616, - .version = 4098, + .name = "Xbox 360 Controller", + .vendorID = 1118, + .productID = 654, + .version = 30720, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B14, - .button2 = HID_B13, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Rock Candy Nintendo Switch Controller", - .vendorID = 3695, - .productID = 391, - .version = 261, + .name = "Xbox 360 Controller", + .vendorID = 12601, + .productID = 12387, + .version = 25396, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Rock Candy PS3", - .vendorID = 9414, - .productID = 64254, - .version = 0, + .name = "Xbox 360 Controller", + .vendorID = 14130, + .productID = 25656, + .version = 14435, .leftx = HID_A0, - .rightx = HID_A3, + .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A4, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Samsung EIGP20", - .vendorID = 1256, - .productID = 40960, - .version = 283, - .leftx = HID_A1, - .rightx = HID_A4, - .lefty = HID_A3, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B3, - },{ - .name = "Sanwa PlayOnline Mobile", - .vendorID = 1907, - .productID = 260, - .version = 256, + .name = "Xbox 360 Controller", + .vendorID = 13088, + .productID = 22304, + .version = 27749, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Sega Genesis Mini 3B Controller", - .vendorID = 3235, - .productID = 37, - .version = 518, - .button1 = HID_B2, + .name = "Xbox 360 Controller", + .vendorID = 26168, + .productID = 14387, + .version = 25657, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Sega Saturn", - .vendorID = 6017, - .productID = 1406, - .version = 0, + .name = "Xbox 360 Controller", + .vendorID = 26168, + .productID = 25401, + .version = 13922, .leftx = HID_A0, - .lefty = HID_A2, - .button1 = HID_B2, - .button2 = HID_B4, - },{ - .name = "Sega Saturn", - .vendorID = 1204, - .productID = 266, - .version = 0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SFC30 Joystick", - .vendorID = 4661, - .productID = 43809, - .version = 0, - .button1 = HID_B1, - .button2 = HID_B0, - },{ - .name = "SNES RetroPort", - .vendorID = 61440, - .productID = 241, - .version = 0, - .button1 = HID_B2, - .button2 = HID_B3, - },{ - .name = "Sony DualShock 4 Adapter", - .vendorID = 1356, - .productID = 2976, - .version = 0, + .name = "Xbox Controller", + .vendorID = 26994, + .productID = 11608, + .version = 8312, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Sony DualShock 4 V2", - .vendorID = 1356, - .productID = 2508, - .version = 0, + .name = "Xbox Controller", + .vendorID = 29551, + .productID = 8308, + .version = 28482, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Sony PlayStation Adapter", - .vendorID = 26214, - .productID = 1639, - .version = 648, + .name = "Xbox Controller", + .vendorID = 14641, + .productID = 25702, + .version = 12852, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B2, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Sony PlayStation Classic Controller", - .vendorID = 1356, - .productID = 3290, - .version = 256, - .button1 = HID_B2, + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 657, + .version = 2047, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Sony PlayStation Vita", - .vendorID = 1356, - .productID = 4919, - .version = 256, + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 657, + .version = 2047, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 736, + .version = 65039, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, .righty = HID_A4, - .button1 = HID_B1, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Steam Virtual Gamepad", + .name = "Xbox One Controller", .vendorID = 1118, - .productID = 654, - .version = 1, + .productID = 736, + .version = 65039, + .leftx = HID_A0, + .rightx = HID_A2, + .lefty = HID_A1, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 736, + .version = 65535, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2405,76 +20958,87 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SteelSeries Nimbus", - .vendorID = 273, - .productID = 5152, - .version = 0, + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 736, + .version = 65535, .leftx = HID_A0, .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SteelSeries Nimbus", - .vendorID = 273, - .productID = 5152, - .version = 1, + .name = "Xbox One Controller", + .vendorID = 1118, + .productID = 765, + .version = 65535, .leftx = HID_A0, .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SteelSeries Nimbus", - .vendorID = 4152, - .productID = 5152, - .version = 1, + .name = "Xbox One Controller", + .vendorID = 12850, + .productID = 13111, + .version = 25957, .leftx = HID_A0, .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SteelSeries Nimbus Plus", - .vendorID = 18760, - .productID = 25924, - .version = 25955, + .name = "Xbox One Controller", + .vendorID = 13155, + .productID = 12341, + .version = 14136, + .leftx = HID_A0, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Xbox One Controller", + .vendorID = 12855, + .productID = 14434, + .version = 25907, .leftx = HID_A0, .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SteelSeries Nimbus Plus", - .vendorID = 26958, - .productID = 29557, - .version = 0, + .name = "Xbox One Controller", + .vendorID = 13156, + .productID = 14131, + .version = 26209, .leftx = HID_A0, .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SteelSeries Stratus Duo", - .vendorID = 4152, - .productID = 5168, - .version = 0, + .name = "Xbox One Controller", + .vendorID = 22304, + .productID = 27749, + .version = 8307, .leftx = HID_A0, - .rightx = HID_A3, + .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A4, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SteelSeries Stratus Duo", - .vendorID = 4152, - .productID = 5169, - .version = 0, + .name = "Xbox One Elite 2 Controller", + .vendorID = 1118, + .productID = 2816, + .version = 30720, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2482,32 +21046,32 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SteelSeries Stratus XL", - .vendorID = 273, - .productID = 5143, - .version = 0, + .name = "Xbox One Elite 2 Controller", + .vendorID = 1118, + .productID = 2816, + .version = 30720, .leftx = HID_A0, .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SteelSeries Stratus XL", - .vendorID = 273, - .productID = 5143, - .version = 288, + .name = "Xbox One Elite 2 Controller", + .vendorID = 1118, + .productID = 2821, + .version = 65535, .leftx = HID_A0, .rightx = HID_A2, - .lefty = HID_A1_REV, - .righty = HID_A3_REV, + .lefty = HID_A1, + .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Switch Hori Pad", - .vendorID = 3853, - .productID = 246, - .version = 256, + .name = "Xbox One S Controller", + .vendorID = 1118, + .productID = 736, + .version = 30720, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -2515,39 +21079,21 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "SZMY Power PC Gamepad", - .vendorID = 30021, - .productID = 4386, - .version = 256, + .name = "Xbox One S Controller", + .vendorID = 1118, + .productID = 746, + .version = 30720, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, - .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "Taito Egret II Mini Control Panel", - .vendorID = 2788, - .productID = 1795, - .version = 1, - .leftx = HID_A0, - .lefty = HID_A1, - .button1 = HID_B4, - .button2 = HID_B2, - },{ - .name = "Taito Egret II Mini Controller", - .vendorID = 2788, - .productID = 1794, - .version = 1, - .leftx = HID_A0, - .lefty = HID_A1, - .button1 = HID_B4, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "TGZ Controller", - .vendorID = 121, - .productID = 6172, - .version = 4099, + .name = "Xbox One S Controller", + .vendorID = 1118, + .productID = 765, + .version = 32767, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, @@ -2555,165 +21101,109 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "THEC64 Joystick", - .vendorID = 7257, - .productID = 36, - .version = 33, + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 30720, .leftx = HID_A0, - .lefty = HID_A4, + .rightx = HID_A3, + .lefty = HID_A1, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "THEGamepad", - .vendorID = 7257, - .productID = 38, - .version = 33, - .button1 = HID_B2, - .button2 = HID_B1, - },{ - .name = "Thrustmaster Dual Analog 3.2", - .vendorID = 1103, - .productID = 45845, - .version = 0, + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2834, + .version = 30720, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, .button1 = HID_B0, - .button2 = HID_B2, + .button2 = HID_B1, },{ - .name = "Thrustmaster eSwap Pro Controller", - .vendorID = 1103, - .productID = 53262, - .version = 512, + .name = "Xbox Series Controller", + .vendorID = 1118, + .productID = 2835, + .version = 65535, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, + .righty = HID_A3, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Thrustmaster Firestorm Dual Power", - .vendorID = 1103, - .productID = 45824, - .version = 0, + .name = "Xbox Series Controller", + .vendorID = 14390, + .productID = 13366, + .version = 14646, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, .righty = HID_A3, .button1 = HID_B0, - .button2 = HID_B2, - },{ - .name = "Tomee NES Controller Adapter", - .vendorID = 7511, - .productID = 33, - .version = 33, - .button1 = HID_B1, - .button2 = HID_B0, - },{ - .name = "Tomee Retro Controller", - .vendorID = 4797, - .productID = 53269, - .version = 256, - .button1 = HID_B2, - .button2 = HID_B1, - },{ - .name = "Tomee SNES Controller", - .vendorID = 4797, - .productID = 53269, - .version = 0, - .button1 = HID_B2, - .button2 = HID_B1, - },{ - .name = "Tomee SNES Controller Adapter", - .vendorID = 7511, - .productID = 32, - .version = 33, - .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Trust Gamepad", - .vendorID = 5215, - .productID = 453, - .version = 512, + .name = "XiaoMi Controller", + .vendorID = 10007, + .productID = 12612, + .version = 65535, .leftx = HID_A0, .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B2, + .righty = HID_A5, + .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Twin USB Joystick", - .vendorID = 2064, + .name = "*", + .vendorID = 1452, .productID = 1, .version = 0, .leftx = HID_A0, - .rightx = HID_A6, - .lefty = HID_A2, + .rightx = HID_A3, + .lefty = HID_A1, .righty = HID_A4, - .button1 = HID_B4, - .button2 = HID_B2, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Uberwith Controller", - .vendorID = 9571, - .productID = 1318, - .version = 256, + .name = "*", + .vendorID = 1452, + .productID = 1, + .version = 1615, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Uniplay U6", - .vendorID = 6421, - .productID = 30806, - .version = 272, - .leftx = HID_A1, - .rightx = HID_A4, - .lefty = HID_A3, - .righty = HID_A5, - .button1 = HID_B3, - .button2 = HID_B6, - },{ - .name = "Victrix PS4 Pro Fightstick", - .vendorID = 3695, - .productID = 515, - .version = 1061, - .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "Victrix PS4 Pro Fightstick", - .vendorID = 3695, - .productID = 519, - .version = 1539, - .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "Wii Remote", - .vendorID = 26967, - .productID = 29807, - .version = 12328, + .name = "*", + .vendorID = 1452, + .productID = 1, + .version = 1999, .leftx = HID_A0, + .rightx = HID_A3, .lefty = HID_A1, - .button1 = HID_B4, - .button2 = HID_B5, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Wii U Pro Controller", - .vendorID = 26967, - .productID = 29807, - .version = 12584, + .name = "*", + .vendorID = 1452, + .productID = 1, + .version = 2015, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B16, - .button2 = HID_B15, + .righty = HID_A4, + .button1 = HID_B0, + .button2 = HID_B1, },{ - .name = "Xbox 360 Controller", - .vendorID = 1118, - .productID = 654, - .version = 0, + .name = "*", + .vendorID = 1452, + .productID = 1, + .version = 2047, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2721,10 +21211,24 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox 360 Controller", - .vendorID = 3695, - .productID = 1025, - .version = 0, + .name = "*", + .vendorID = 1452, + .productID = 2, + .version = 0, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "*", + .vendorID = 1452, + .productID = 2, + .version = 1615, + .button1 = HID_B0, + .button2 = HID_B1, + },{ + .name = "Backbone One", + .vendorID = 13706, + .productID = 259, + .version = 2047, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2732,10 +21236,10 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox 360 Controller", - .vendorID = 9414, - .productID = 23812, - .version = 0, + .name = "Backbone One", + .vendorID = 13706, + .productID = 260, + .version = 2047, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2743,9 +21247,9 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox Adaptive Controller", - .vendorID = 1118, - .productID = 2826, + .name = "MFi Extended Gamepad", + .vendorID = 28001, + .productID = 25697, .version = 0, .leftx = HID_A0, .rightx = HID_A3, @@ -2754,65 +21258,69 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox Elite Controller Series 2", - .vendorID = 1118, - .productID = 2821, - .version = 2307, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, + .name = "MFi Gamepad", + .vendorID = 28001, + .productID = 25697, + .version = 0, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 2835, - .version = 1297, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A3, + .name = "Nintendo Switch Joy-Con (L)", + .vendorID = 1406, + .productID = 8198, + .version = 1551, .button1 = HID_B0, - .button2 = HID_B1, + .button2 = HID_B2, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 2848, - .version = 1297, + .name = "Nintendo Switch Joy-Con (L)", + .vendorID = 1406, + .productID = 8198, + .version = 1615, + },{ + .name = "Nintendo Switch Joy-Con (L/R)", + .vendorID = 1406, + .productID = 8200, + .version = 2015, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 2848, - .version = 1299, + .name = "Nintendo Switch Joy-Con (L/R)", + .vendorID = 1406, + .productID = 8206, + .version = 2015, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 2848, - .version = 1301, + .name = "Nintendo Switch Joy-Con (R)", + .vendorID = 1406, + .productID = 8199, + .version = 1615, + .button1 = HID_B1, + .button2 = HID_B0, + },{ + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 34783, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, - .button1 = HID_B0, - .button2 = HID_B1, + .righty = HID_A4, + .button1 = HID_B1, + .button2 = HID_B0, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 721, - .version = 0, + .name = "Nintendo Switch Pro Controller", + .vendorID = 1406, + .productID = 8201, + .version = 34815, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2820,10 +21328,10 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 733, - .version = 0, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 2015, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2831,10 +21339,10 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 736, - .version = 0, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 34783, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2842,10 +21350,10 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 736, - .version = 2307, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 2047, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2853,10 +21361,10 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 739, - .version = 0, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 34815, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2864,10 +21372,10 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 746, - .version = 0, + .name = "PS4 Controller", + .vendorID = 1356, + .productID = 2508, + .version = 34815, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2875,21 +21383,21 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox One Controller", - .vendorID = 1118, - .productID = 765, - .version = 2307, + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 34783, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox One PowerA Controller", - .vendorID = 9414, - .productID = 21562, - .version = 0, + .name = "PS5 Controller", + .vendorID = 1356, + .productID = 3302, + .version = 34815, .leftx = HID_A0, .rightx = HID_A3, .lefty = HID_A1, @@ -2897,137 +21405,107 @@ static std::vector gamePads = { .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox Series Controller", - .vendorID = 1118, - .productID = 2835, - .version = 1281, + .name = "Remote", + .vendorID = 1452, + .productID = 3, + .version = 0, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, .button1 = HID_B0, - .button2 = HID_B1, + .button2 = HID_B2, },{ - .name = "Xbox Series Controller", - .vendorID = 1118, - .productID = 2835, - .version = 1285, + .name = "Remote", + .vendorID = 1452, + .productID = 3, + .version = 67, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, .button1 = HID_B0, - .button2 = HID_B1, + .button2 = HID_B2, },{ - .name = "Xbox Series Controller", - .vendorID = 1118, - .productID = 2835, - .version = 1289, + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4357, + .version = 1, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox Series Controller", - .vendorID = 1118, - .productID = 2835, - .version = 1299, + .name = "Steam Controller", + .vendorID = 10462, + .productID = 4358, + .version = 1, .leftx = HID_A0, - .rightx = HID_A2, .lefty = HID_A1, - .righty = HID_A3, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox Series Controller", + .name = "Xbox Elite Controller", .vendorID = 1118, - .productID = 2835, - .version = 1301, + .productID = 2821, + .version = 2015, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox Wireless Controller", + .name = "Xbox Elite Controller", .vendorID = 1118, - .productID = 2835, - .version = 1287, + .productID = 2821, + .version = 2047, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox Wireless Controller", + .name = "Xbox One Controller", .vendorID = 1118, - .productID = 2835, - .version = 1303, + .productID = 736, + .version = 2015, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox Wireless Controller", + .name = "Xbox One Controller", .vendorID = 1118, - .productID = 2835, - .version = 1314, + .productID = 736, + .version = 2047, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "Xbox Wireless Controller", + .name = "Xbox Series X Controller", .vendorID = 1118, - .productID = 2850, - .version = 1303, + .productID = 2835, + .version = 34783, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A3, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, },{ - .name = "XiaoMi Controller", - .vendorID = 10007, - .productID = 12612, - .version = 297, + .name = "Xbox Series X Controller", + .vendorID = 1118, + .productID = 2835, + .version = 34815, .leftx = HID_A0, - .rightx = HID_A2, + .rightx = HID_A3, .lefty = HID_A1, - .righty = HID_A5, + .righty = HID_A4, .button1 = HID_B0, .button2 = HID_B1, - },{ - .name = "Zeroplus P4", - .vendorID = 3090, - .productID = 3600, - .version = 256, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, - },{ - .name = "Zeroplus P4", - .vendorID = 3090, - .productID = 7696, - .version = 256, - .leftx = HID_A0, - .rightx = HID_A2, - .lefty = HID_A1, - .righty = HID_A5, - .button1 = HID_B1, - .button2 = HID_B2, } }; diff --git a/Emulator/Peripherals/Joystick/Joystick.cpp b/Emulator/Peripherals/Joystick/Joystick.cpp index 1fa515d28..721b7df07 100644 --- a/Emulator/Peripherals/Joystick/Joystick.cpp +++ b/Emulator/Peripherals/Joystick/Joystick.cpp @@ -317,8 +317,7 @@ Joystick::eofHandler() void Joystick::configureHID(u16 vendorID, u16 productID, u16 version) { - // Use the generic settings as fallback - traits = gamePads[0]; + debug(PRT_DEBUG, "configureHID(%d, %d, %d)\n", vendorID, productID, version); // Crawl through the database for (const auto &gamePad : gamePads) { @@ -328,7 +327,24 @@ Joystick::configureHID(u16 vendorID, u16 productID, u16 version) if (gamePad.version != version) continue; traits = gamePad; + + debug(PRT_DEBUG, "Connected %s\n", traits.name); + debug(PRT_DEBUG, " vendorID = %d\n", traits.vendorID); + debug(PRT_DEBUG, " productID = %d\n", traits.productID); + debug(PRT_DEBUG, " version = %d\n", traits.version); + + return; } + + // Fallback to the generic setting + traits = gamePads[0]; +} + +void +Joystick::trigger(isize page, isize usage, isize value, u16 vendorID, u16 productID, u16 version) +{ + debug(PRT_DEBUG, "vendorID = %ld productID = %ld version = %ld\n", vendorID, productID, version); + debug(PRT_DEBUG, "usagePage = %ld usage = %ld value = %ld\n", page, usage, value); } void diff --git a/Emulator/Peripherals/Joystick/Joystick.h b/Emulator/Peripherals/Joystick/Joystick.h index 44fc146d9..b809a9dee 100644 --- a/Emulator/Peripherals/Joystick/Joystick.h +++ b/Emulator/Peripherals/Joystick/Joystick.h @@ -212,6 +212,7 @@ class Joystick final : public SubComponent, public Inspectable { void configureHID(u16 vendorID, u16 productID, u16 version); // Processes a HID event + void trigger(isize page, isize usage, isize value, u16 vendorID, u16 productID, u16 version); void trigger(isize page, isize usage, isize value); }; diff --git a/Emulator/Peripherals/Joystick/JoystickTypes.h b/Emulator/Peripherals/Joystick/JoystickTypes.h index dceabb773..5bfdc1408 100644 --- a/Emulator/Peripherals/Joystick/JoystickTypes.h +++ b/Emulator/Peripherals/Joystick/JoystickTypes.h @@ -78,33 +78,50 @@ struct GamePadActionEnum : vamiga::util::Reflectionput(CMD_JOY_EVENT, GamePadCmd { .port = joystick->objid, .action = event }); } +void +JoystickAPI::configureHID(u16 vendorID, u16 productID, u16 version) +{ + joystick->configureHID(vendorID, productID, version); + emu->isDirty = true; +} + +void +JoystickAPI::trigger(isize page, isize usage, isize value, u16 vendorID, u16 productID, u16 version) +{ + joystick->trigger(page, usage, value, vendorID, productID, version); + emu->isDirty = true; +} + +void +JoystickAPI::trigger(isize page, isize usage, isize value) +{ + // emu->put(CMD_HID_EVENT, GamePadCmd { .port = joystick->objid, ... }); + joystick->trigger(page, usage, value); + emu->isDirty = true; +} + // // Mouse diff --git a/Emulator/VAmiga.h b/Emulator/VAmiga.h index fe8bd8045..78047de33 100644 --- a/Emulator/VAmiga.h +++ b/Emulator/VAmiga.h @@ -750,6 +750,12 @@ struct JoystickAPI : public API { /** @brief Triggers a joystick action. */ void trigger(GamePadAction event); + + /** @brief HID API (experimental) + */ + void configureHID(u16 vendorID, u16 productID, u16 version); + void trigger(isize page, isize usage, isize value, u16 vendorID, u16 productID, u16 version); + void trigger(isize page, isize usage, isize value); }; diff --git a/Emulator/config.cpp b/Emulator/config.cpp index 49a934a83..68cb10e00 100644 --- a/Emulator/config.cpp +++ b/Emulator/config.cpp @@ -108,7 +108,7 @@ debugflag POSREG_DEBUG = 0; debugflag JOYREG_DEBUG = 0; debugflag POTREG_DEBUG = 0; debugflag VID_DEBUG = 0; -debugflag PRT_DEBUG = 0; +debugflag PRT_DEBUG = 1; debugflag SER_DEBUG = 0; debugflag POT_DEBUG = 0; debugflag HOLD_MOUSE_L = 0; diff --git a/GUI/Peripherals/GamePad.swift b/GUI/Peripherals/GamePad.swift index 2c7c5d57c..819981284 100644 --- a/GUI/Peripherals/GamePad.swift +++ b/GUI/Peripherals/GamePad.swift @@ -40,10 +40,11 @@ class GamePad { // References to other objects var manager: GamePadManager + var amiga: EmulatorProxy { return manager.parent.emu } var prefs: Preferences { return manager.parent.pref } var config: Configuration { return manager.parent.config } var db: DeviceDatabase { return myAppDelegate.database } - + // The Amiga port this device is connected to (1, 2, or nil) var port: Int? @@ -52,7 +53,8 @@ class GamePad { var vendorID: String { return device?.vendorID ?? "" } var productID: String { return device?.productID ?? "" } var locationID: String { return device?.locationID ?? "" } - + var version: String { return device?.versionNumberKey ?? "" } + // Type of the managed device (joystick or mouse) var type: ControlPortDevice var isMouse: Bool { return type == .MOUSE } @@ -328,7 +330,16 @@ class GamePad { let usage = Int(IOHIDElementGetUsage(element)) // track("usagePage = \(usagePage) usage = \(usage) value = \(intValue)") - + + // New code (uses experimental HID interface) + let cp = port == 1 ? amiga.controlPort1 : amiga.controlPort2 + cp?.joystick.triggerPage(usagePage, usage: usage, value: intValue) + + + // + // Old code + // + var events: [GamePadAction]? if usagePage == kHIDPage_Button { diff --git a/GUI/Peripherals/GamePadManager.swift b/GUI/Peripherals/GamePadManager.swift index 8884d5a0e..8c430bd25 100644 --- a/GUI/Peripherals/GamePadManager.swift +++ b/GUI/Peripherals/GamePadManager.swift @@ -153,6 +153,12 @@ class GamePadManager { // Bind the new device gamePads[slot]?.port = port + + let vendor = Int(gamePads[slot]?.vendorID ?? "", radix: 10) ?? 0 + let product = Int(gamePads[slot]?.productID ?? "", radix: 10) ?? 0 + let version = Int(gamePads[slot]?.version ?? "", radix: 10) ?? 0 + + parent.emu?.controlPort1.joystick.configureHID(vendor, productID: product, version: version) } func name(slot: Int) -> String { diff --git a/GUI/Peripherals/HIDExtensions.swift b/GUI/Peripherals/HIDExtensions.swift index 9e143c056..fad5d9dd9 100644 --- a/GUI/Peripherals/HIDExtensions.swift +++ b/GUI/Peripherals/HIDExtensions.swift @@ -49,6 +49,7 @@ extension IOHIDDevice { var vendorID: String { return property(key: kIOHIDVendorIDKey) ?? "" } var productID: String { return property(key: kIOHIDProductIDKey) ?? "" } var locationID: String { return property(key: kIOHIDLocationIDKey) ?? "" } + var versionNumberKey: String { return property(key: kIOHIDVersionNumberKey) ?? "" } var manufacturerKey: String { return property(key: kIOHIDManufacturerKey) ?? "" } var usageKey: String { return property(key: kIOHIDPrimaryUsageKey) ?? "" } var builtInKey: String { return property(key: kIOHIDBuiltInKey) ?? "" } diff --git a/Proxy/EmulatorProxy.h b/Proxy/EmulatorProxy.h index 201e8b0a6..a9d7b7639 100644 --- a/Proxy/EmulatorProxy.h +++ b/Proxy/EmulatorProxy.h @@ -636,7 +636,10 @@ @interface JoystickProxy : CoreComponentProxy { } +- (void)configureHID:(NSInteger)vendorID productID:(NSInteger)productID version:(NSInteger)version; - (void)trigger:(GamePadAction)event; +- (void)triggerPage:(NSInteger)page usage:(NSInteger)usage value:(NSInteger)value; +- (void)triggerPage:(NSInteger)page usage:(NSInteger)usage value:(NSInteger)value vendorID:(u16)vendorID productID:(u16)productID version:(u16)version; @end diff --git a/Proxy/EmulatorProxy.mm b/Proxy/EmulatorProxy.mm index 968cbaf9e..d405e2e22 100644 --- a/Proxy/EmulatorProxy.mm +++ b/Proxy/EmulatorProxy.mm @@ -1023,11 +1023,26 @@ - (JoystickAPI *)joystick return (JoystickAPI *)obj; } +- (void)configureHID:(NSInteger)vendorID productID:(NSInteger)productID version:(NSInteger)version +{ + [self joystick]->configureHID(u16(vendorID), u16(productID), u16(version)); +} + - (void)trigger:(GamePadAction)event { [self joystick]->trigger(event); } +- (void)triggerPage:(NSInteger)page usage:(NSInteger)usage value:(NSInteger)value vendorID:(u16)vendorID productID:(u16)productID version:(u16)version +{ + [self joystick]->trigger(page, usage, value, vendorID, productID, version); +} + +- (void)triggerPage:(NSInteger)page usage:(NSInteger)usage value:(NSInteger)value +{ + [self joystick]->trigger(page, usage, value); +} + @end