| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "device/gamepad/gamepad_id_list.h" |
| |
| #include <algorithm> |
| #include <iterator> |
| |
| #include "base/stl_util.h" |
| |
| namespace device { |
| |
| namespace { |
| |
| static base::LazyInstance<GamepadIdList>::Leaky g_singleton = |
| LAZY_INSTANCE_INITIALIZER; |
| |
| constexpr struct GamepadInfo { |
| uint16_t vendor; |
| uint16_t product; |
| XInputType xtype; |
| GamepadId id; |
| } kGamepadInfo[] = { |
| {0x0010, 0x0082, kXInputTypeNone, GamepadId::kVendor0010Product0082}, |
| // DragonRise Inc. |
| {0x0079, 0x0006, kXInputTypeNone, GamepadId::kDragonRiseProduct0006}, |
| {0x0079, 0x0011, kXInputTypeNone, GamepadId::kDragonRiseProduct0011}, |
| {0x0079, 0x1800, kXInputTypeNone, GamepadId::kDragonRiseProduct1800}, |
| {0x0079, 0x181b, kXInputTypeNone, GamepadId::kDragonRiseProduct181b}, |
| {0x0079, 0x1843, kXInputTypeNone, GamepadId::kDragonRiseProduct1843}, |
| {0x0079, 0x1844, kXInputTypeNone, GamepadId::kDragonRiseProduct1844}, |
| // Steelseries ApS (Bluetooth) |
| {0x0111, 0x1417, kXInputTypeNone, GamepadId::kSteelSeriesBtProduct1417}, |
| {0x0111, 0x1420, kXInputTypeNone, GamepadId::kSteelSeriesBtProduct1420}, |
| {0x0113, 0xf900, kXInputTypeNone, GamepadId::kVendor0113Productf900}, |
| // Creative Technology, Ltd |
| {0x041e, 0x1003, kXInputTypeNone, |
| GamepadId::kCreativeTechnologyProduct1003}, |
| {0x041e, 0x1050, kXInputTypeNone, |
| GamepadId::kCreativeTechnologyProduct1050}, |
| // Advanced Gravis Computer Tech, Ltd |
| {0x0428, 0x4001, kXInputTypeNone, GamepadId::kGravisProduct4001}, |
| // Alps Electric Co., Ltd |
| {0x0433, 0x1101, kXInputTypeNone, GamepadId::kAlpsElectricProduct1101}, |
| // ThrustMaster, Inc. |
| {0x044f, 0x0f00, kXInputTypeXbox, GamepadId::kThrustMasterProduct0f00}, |
| {0x044f, 0x0f03, kXInputTypeXbox, GamepadId::kThrustMasterProduct0f03}, |
| {0x044f, 0x0f07, kXInputTypeXbox, GamepadId::kThrustMasterProduct0f07}, |
| {0x044f, 0x0f10, kXInputTypeXbox, GamepadId::kThrustMasterProduct0f10}, |
| {0x044f, 0xa0a3, kXInputTypeNone, GamepadId::kThrustMasterProducta0a3}, |
| {0x044f, 0xb300, kXInputTypeNone, GamepadId::kThrustMasterProductb300}, |
| {0x044f, 0xb304, kXInputTypeNone, GamepadId::kThrustMasterProductb304}, |
| {0x044f, 0xb312, kXInputTypeNone, GamepadId::kThrustMasterProductb312}, |
| {0x044f, 0xb315, kXInputTypeNone, GamepadId::kThrustMasterProductb315}, |
| {0x044f, 0xb320, kXInputTypeNone, GamepadId::kThrustMasterProductb320}, |
| {0x044f, 0xb323, kXInputTypeNone, GamepadId::kThrustMasterProductb323}, |
| {0x044f, 0xb326, kXInputTypeXbox, GamepadId::kThrustMasterProductb326}, |
| {0x044f, 0xb653, kXInputTypeNone, GamepadId::kThrustMasterProductb653}, |
| {0x044f, 0xb677, kXInputTypeNone, GamepadId::kThrustMasterProductb677}, |
| {0x044f, 0xd003, kXInputTypeNone, GamepadId::kThrustMasterProductd003}, |
| {0x044f, 0xd008, kXInputTypeNone, GamepadId::kThrustMasterProductd008}, |
| {0x044f, 0xd009, kXInputTypeNone, GamepadId::kThrustMasterProductd009}, |
| // Microsoft Corp. |
| {0x045e, 0x0026, kXInputTypeNone, GamepadId::kMicrosoftProduct0026}, |
| {0x045e, 0x0027, kXInputTypeNone, GamepadId::kMicrosoftProduct0027}, |
| {0x045e, 0x0202, kXInputTypeXbox, GamepadId::kMicrosoftProduct0202}, |
| {0x045e, 0x0285, kXInputTypeXbox, GamepadId::kMicrosoftProduct0285}, |
| {0x045e, 0x0287, kXInputTypeXbox, GamepadId::kMicrosoftProduct0287}, |
| {0x045e, 0x0288, kXInputTypeXbox, GamepadId::kMicrosoftProduct0288}, |
| {0x045e, 0x0289, kXInputTypeXbox, GamepadId::kMicrosoftProduct0289}, |
| {0x045e, 0x028e, kXInputTypeXbox360, GamepadId::kMicrosoftProduct028e}, |
| {0x045e, 0x028f, kXInputTypeNone, GamepadId::kMicrosoftProduct028f}, |
| {0x045e, 0x0291, kXInputTypeXbox360, GamepadId::kMicrosoftProduct0291}, |
| {0x045e, 0x02a0, kXInputTypeXbox360, GamepadId::kMicrosoftProduct02a0}, |
| {0x045e, 0x02a1, kXInputTypeXbox360, GamepadId::kMicrosoftProduct02a1}, |
| {0x045e, 0x02d1, kXInputTypeXboxOne, GamepadId::kMicrosoftProduct02d1}, |
| {0x045e, 0x02dd, kXInputTypeXboxOne, GamepadId::kMicrosoftProduct02dd}, |
| {0x045e, 0x02e0, kXInputTypeXboxOne, GamepadId::kMicrosoftProduct02e0}, |
| {0x045e, 0x02e3, kXInputTypeXboxOne, GamepadId::kMicrosoftProduct02e3}, |
| {0x045e, 0x02e6, kXInputTypeXbox360, GamepadId::kMicrosoftProduct02e6}, |
| {0x045e, 0x02ea, kXInputTypeXboxOne, GamepadId::kMicrosoftProduct02ea}, |
| {0x045e, 0x02fd, kXInputTypeXboxOne, GamepadId::kMicrosoftProduct02fd}, |
| {0x045e, 0x02ff, kXInputTypeXboxOne, GamepadId::kMicrosoftProduct02ff}, |
| {0x045e, 0x0719, kXInputTypeXbox360, GamepadId::kMicrosoftProduct0719}, |
| {0x045e, 0x0b0a, kXInputTypeXbox360, GamepadId::kMicrosoftProduct0b0a}, |
| // Logitech, Inc. |
| {0x046d, 0xc208, kXInputTypeNone, GamepadId::kLogitechProductc208}, |
| {0x046d, 0xc209, kXInputTypeNone, GamepadId::kLogitechProductc209}, |
| {0x046d, 0xc211, kXInputTypeNone, GamepadId::kLogitechProductc211}, |
| {0x046d, 0xc215, kXInputTypeNone, GamepadId::kLogitechProductc215}, |
| {0x046d, 0xc216, kXInputTypeNone, GamepadId::kLogitechProductc216}, |
| {0x046d, 0xc218, kXInputTypeNone, GamepadId::kLogitechProductc218}, |
| {0x046d, 0xc219, kXInputTypeNone, GamepadId::kLogitechProductc219}, |
| {0x046d, 0xc21a, kXInputTypeNone, GamepadId::kLogitechProductc21a}, |
| {0x046d, 0xc21d, kXInputTypeXbox360, GamepadId::kLogitechProductc21d}, |
| {0x046d, 0xc21e, kXInputTypeXbox360, GamepadId::kLogitechProductc21e}, |
| {0x046d, 0xc21f, kXInputTypeXbox360, GamepadId::kLogitechProductc21f}, |
| {0x046d, 0xc242, kXInputTypeXbox360, GamepadId::kLogitechProductc242}, |
| {0x046d, 0xc24f, kXInputTypeNone, GamepadId::kLogitechProductc24f}, |
| {0x046d, 0xc260, kXInputTypeNone, GamepadId::kLogitechProductc260}, |
| {0x046d, 0xc261, kXInputTypeNone, GamepadId::kLogitechProductc261}, |
| {0x046d, 0xc262, kXInputTypeNone, GamepadId::kLogitechProductc262}, |
| {0x046d, 0xc298, kXInputTypeNone, GamepadId::kLogitechProductc298}, |
| {0x046d, 0xc299, kXInputTypeNone, GamepadId::kLogitechProductc299}, |
| {0x046d, 0xc29a, kXInputTypeNone, GamepadId::kLogitechProductc29a}, |
| {0x046d, 0xc29b, kXInputTypeNone, GamepadId::kLogitechProductc29b}, |
| {0x046d, 0xca84, kXInputTypeXbox, GamepadId::kLogitechProductca84}, |
| {0x046d, 0xca88, kXInputTypeXbox, GamepadId::kLogitechProductca88}, |
| {0x046d, 0xca8a, kXInputTypeXbox, GamepadId::kLogitechProductca8a}, |
| {0x046d, 0xcaa3, kXInputTypeXbox360, GamepadId::kLogitechProductcaa3}, |
| // Kensington |
| {0x047d, 0x4003, kXInputTypeNone, GamepadId::kKensingtonProduct4003}, |
| {0x047d, 0x4005, kXInputTypeNone, GamepadId::kKensingtonProduct4005}, |
| // Cypress Semiconductor Corp. |
| {0x04b4, 0x010a, kXInputTypeNone, |
| GamepadId::kCypressSemiconductorProduct010a}, |
| {0x04b4, 0xd5d5, kXInputTypeNone, |
| GamepadId::kCypressSemiconductorProductd5d5}, |
| // Holtek Semiconductor, Inc. |
| {0x04d9, 0x0002, kXInputTypeNone, |
| GamepadId::kHoltekSemiconductorProduct0002}, |
| // Samsung Electronics Co., Ltd |
| {0x04e8, 0xa000, kXInputTypeNone, |
| GamepadId::kSamsungElectronicsProducta000}, |
| // Siam United Hi-Tech |
| {0x0500, 0x9b28, kXInputTypeNone, GamepadId::kSiamUnitedProduct9b28}, |
| // Belkin Components |
| {0x050d, 0x0802, kXInputTypeNone, GamepadId::kBelkinProduct0802}, |
| {0x050d, 0x0803, kXInputTypeNone, GamepadId::kBelkinProduct0803}, |
| {0x050d, 0x0805, kXInputTypeNone, GamepadId::kBelkinProduct0805}, |
| // Sony Corp. |
| {0x054c, 0x0268, kXInputTypeNone, GamepadId::kSonyProduct0268}, |
| {0x054c, 0x0306, kXInputTypeNone, GamepadId::kSonyProduct0306}, |
| {0x054c, 0x042f, kXInputTypeNone, GamepadId::kSonyProduct042f}, |
| {0x054c, 0x05c4, kXInputTypeNone, GamepadId::kSonyProduct05c4}, |
| {0x054c, 0x05c5, kXInputTypeNone, GamepadId::kSonyProduct05c5}, |
| {0x054c, 0x09cc, kXInputTypeNone, GamepadId::kSonyProduct09cc}, |
| {0x054c, 0x0ba0, kXInputTypeNone, GamepadId::kSonyProduct0ba0}, |
| // Elecom Co., Ltd |
| {0x056e, 0x2003, kXInputTypeNone, GamepadId::kElecomProduct2003}, |
| {0x056e, 0x2004, kXInputTypeXbox360, GamepadId::kElecomProduct2004}, |
| // Nintendo Co., Ltd |
| {0x057e, 0x0306, kXInputTypeNone, GamepadId::kNintendoProduct0306}, |
| {0x057e, 0x0330, kXInputTypeNone, GamepadId::kNintendoProduct0330}, |
| {0x057e, 0x0337, kXInputTypeNone, GamepadId::kNintendoProduct0337}, |
| {0x057e, 0x2006, kXInputTypeNone, GamepadId::kNintendoProduct2006}, |
| {0x057e, 0x2007, kXInputTypeNone, GamepadId::kNintendoProduct2007}, |
| {0x057e, 0x2009, kXInputTypeNone, GamepadId::kNintendoProduct2009}, |
| {0x057e, 0x200e, kXInputTypeNone, GamepadId::kNintendoProduct200e}, |
| // Padix Co., Ltd (Rockfire) |
| {0x0583, 0x2060, kXInputTypeNone, GamepadId::kPadixProduct2060}, |
| {0x0583, 0x206f, kXInputTypeNone, GamepadId::kPadixProduct206f}, |
| {0x0583, 0x3050, kXInputTypeNone, GamepadId::kPadixProduct3050}, |
| {0x0583, 0xa000, kXInputTypeNone, GamepadId::kPadixProducta000}, |
| {0x0583, 0xa024, kXInputTypeNone, GamepadId::kPadixProducta024}, |
| {0x0583, 0xa025, kXInputTypeNone, GamepadId::kPadixProducta025}, |
| {0x0583, 0xa130, kXInputTypeNone, GamepadId::kPadixProducta130}, |
| {0x0583, 0xa133, kXInputTypeNone, GamepadId::kPadixProducta133}, |
| {0x0583, 0xb031, kXInputTypeNone, GamepadId::kPadixProductb031}, |
| // Vetronix Corp. |
| {0x05a0, 0x3232, kXInputTypeNone, GamepadId::kVetronixProduct3232}, |
| // Apple, Inc. |
| {0x05ac, 0x3232, kXInputTypeNone, GamepadId::kAppleProduct3232}, |
| // Genesys Logic, Inc. |
| {0x05e3, 0x0596, kXInputTypeNone, GamepadId::kGenesysLogicProduct0596}, |
| // InterAct, Inc. |
| {0x05fd, 0x1007, kXInputTypeXbox, GamepadId::kInterActProduct1007}, |
| {0x05fd, 0x107a, kXInputTypeXbox, GamepadId::kInterActProduct107a}, |
| {0x05fd, 0x3000, kXInputTypeNone, GamepadId::kInterActProduct3000}, |
| // Chic Technology Corp. |
| {0x05fe, 0x0014, kXInputTypeNone, GamepadId::kChicTechnologyProduct0014}, |
| {0x05fe, 0x3030, kXInputTypeXbox, GamepadId::kChicTechnologyProduct3030}, |
| {0x05fe, 0x3031, kXInputTypeXbox, GamepadId::kChicTechnologyProduct3031}, |
| // MosArt Semiconductor Corp. |
| {0x062a, 0x0020, kXInputTypeXbox, |
| GamepadId::kMosArtSemiconductorProduct0020}, |
| {0x062a, 0x0033, kXInputTypeXbox, |
| GamepadId::kMosArtSemiconductorProduct0033}, |
| {0x062a, 0x2410, kXInputTypeNone, |
| GamepadId::kMosArtSemiconductorProduct2410}, |
| // Saitek PLC |
| {0x06a3, 0x0109, kXInputTypeNone, GamepadId::kSaitekProduct0109}, |
| {0x06a3, 0x0200, kXInputTypeXbox, GamepadId::kSaitekProduct0200}, |
| {0x06a3, 0x0201, kXInputTypeXbox, GamepadId::kSaitekProduct0201}, |
| {0x06a3, 0x0241, kXInputTypeNone, GamepadId::kSaitekProduct0241}, |
| {0x06a3, 0x040b, kXInputTypeNone, GamepadId::kSaitekProduct040b}, |
| {0x06a3, 0x040c, kXInputTypeNone, GamepadId::kSaitekProduct040c}, |
| {0x06a3, 0x052d, kXInputTypeNone, GamepadId::kSaitekProduct052d}, |
| {0x06a3, 0x3509, kXInputTypeNone, GamepadId::kSaitekProduct3509}, |
| {0x06a3, 0xf518, kXInputTypeNone, GamepadId::kSaitekProductf518}, |
| {0x06a3, 0xf51a, kXInputTypeXbox360, GamepadId::kSaitekProductf51a}, |
| {0x06a3, 0xf622, kXInputTypeNone, GamepadId::kSaitekProductf622}, |
| {0x06a3, 0xf623, kXInputTypeNone, GamepadId::kSaitekProductf623}, |
| {0x06a3, 0xff0c, kXInputTypeNone, GamepadId::kSaitekProductff0c}, |
| // Aashima Technology B.V. |
| {0x06d6, 0x0025, kXInputTypeNone, GamepadId::kTrustProduct0025}, |
| {0x06d6, 0x0026, kXInputTypeNone, GamepadId::kTrustProduct0026}, |
| // Guillemot Corp. |
| {0x06f8, 0xa300, kXInputTypeNone, GamepadId::kGuillemotProducta300}, |
| // Mad Catz, Inc. |
| {0x0738, 0x3250, kXInputTypeNone, GamepadId::kMadCatzProduct3250}, |
| {0x0738, 0x3285, kXInputTypeNone, GamepadId::kMadCatzProduct3285}, |
| {0x0738, 0x3384, kXInputTypeNone, GamepadId::kMadCatzProduct3384}, |
| {0x0738, 0x3480, kXInputTypeNone, GamepadId::kMadCatzProduct3480}, |
| {0x0738, 0x3481, kXInputTypeNone, GamepadId::kMadCatzProduct3481}, |
| {0x0738, 0x4506, kXInputTypeXbox, GamepadId::kMadCatzProduct4506}, |
| {0x0738, 0x4516, kXInputTypeXbox, GamepadId::kMadCatzProduct4516}, |
| {0x0738, 0x4520, kXInputTypeXbox, GamepadId::kMadCatzProduct4520}, |
| {0x0738, 0x4522, kXInputTypeXbox, GamepadId::kMadCatzProduct4522}, |
| {0x0738, 0x4526, kXInputTypeXbox, GamepadId::kMadCatzProduct4526}, |
| {0x0738, 0x4530, kXInputTypeXbox, GamepadId::kMadCatzProduct4530}, |
| {0x0738, 0x4536, kXInputTypeXbox, GamepadId::kMadCatzProduct4536}, |
| {0x0738, 0x4540, kXInputTypeXbox, GamepadId::kMadCatzProduct4540}, |
| {0x0738, 0x4556, kXInputTypeXbox, GamepadId::kMadCatzProduct4556}, |
| {0x0738, 0x4586, kXInputTypeXbox, GamepadId::kMadCatzProduct4586}, |
| {0x0738, 0x4588, kXInputTypeXbox, GamepadId::kMadCatzProduct4588}, |
| {0x0738, 0x45ff, kXInputTypeXbox, GamepadId::kMadCatzProduct45ff}, |
| {0x0738, 0x4716, kXInputTypeXbox360, GamepadId::kMadCatzProduct4716}, |
| {0x0738, 0x4718, kXInputTypeXbox360, GamepadId::kMadCatzProduct4718}, |
| {0x0738, 0x4726, kXInputTypeXbox360, GamepadId::kMadCatzProduct4726}, |
| {0x0738, 0x4728, kXInputTypeXbox360, GamepadId::kMadCatzProduct4728}, |
| {0x0738, 0x4736, kXInputTypeXbox360, GamepadId::kMadCatzProduct4736}, |
| {0x0738, 0x4738, kXInputTypeXbox360, GamepadId::kMadCatzProduct4738}, |
| {0x0738, 0x4740, kXInputTypeXbox360, GamepadId::kMadCatzProduct4740}, |
| {0x0738, 0x4743, kXInputTypeXbox, GamepadId::kMadCatzProduct4743}, |
| {0x0738, 0x4758, kXInputTypeXbox360, GamepadId::kMadCatzProduct4758}, |
| {0x0738, 0x4a01, kXInputTypeXboxOne, GamepadId::kMadCatzProduct4a01}, |
| {0x0738, 0x5266, kXInputTypeNone, GamepadId::kMadCatzProduct5266}, |
| {0x0738, 0x6040, kXInputTypeXbox, GamepadId::kMadCatzProduct6040}, |
| {0x0738, 0x8180, kXInputTypeNone, GamepadId::kMadCatzProduct8180}, |
| {0x0738, 0x8250, kXInputTypeNone, GamepadId::kMadCatzProduct8250}, |
| {0x0738, 0x8384, kXInputTypeNone, GamepadId::kMadCatzProduct8384}, |
| {0x0738, 0x8480, kXInputTypeNone, GamepadId::kMadCatzProduct8480}, |
| {0x0738, 0x8481, kXInputTypeNone, GamepadId::kMadCatzProduct8481}, |
| {0x0738, 0x8818, kXInputTypeNone, GamepadId::kMadCatzProduct8818}, |
| {0x0738, 0x8838, kXInputTypeNone, GamepadId::kMadCatzProduct8838}, |
| {0x0738, 0x9871, kXInputTypeXbox360, GamepadId::kMadCatzProduct9871}, |
| {0x0738, 0xb726, kXInputTypeXbox360, GamepadId::kMadCatzProductb726}, |
| {0x0738, 0xb738, kXInputTypeXbox360, GamepadId::kMadCatzProductb738}, |
| {0x0738, 0xbeef, kXInputTypeXbox360, GamepadId::kMadCatzProductbeef}, |
| {0x0738, 0xcb02, kXInputTypeXbox360, GamepadId::kMadCatzProductcb02}, |
| {0x0738, 0xcb03, kXInputTypeXbox360, GamepadId::kMadCatzProductcb03}, |
| {0x0738, 0xcb29, kXInputTypeXbox360, GamepadId::kMadCatzProductcb29}, |
| {0x0738, 0xf401, kXInputTypeNone, GamepadId::kMadCatzProductf401}, |
| {0x0738, 0xf738, kXInputTypeXbox360, GamepadId::kMadCatzProductf738}, |
| {0x07b5, 0x0213, kXInputTypeNone, GamepadId::kMegaWorldProduct0213}, |
| {0x07b5, 0x0312, kXInputTypeNone, GamepadId::kMegaWorldProduct0312}, |
| {0x07b5, 0x0314, kXInputTypeNone, GamepadId::kMegaWorldProduct0314}, |
| {0x07b5, 0x0315, kXInputTypeNone, GamepadId::kMegaWorldProduct0315}, |
| {0x07b5, 0x9902, kXInputTypeNone, GamepadId::kMegaWorldProduct9902}, |
| {0x07ff, 0xffff, kXInputTypeXbox360, GamepadId::kVendor07ffProductffff}, |
| // Personal Communication Systems, Inc. |
| {0x0810, 0x0001, kXInputTypeNone, |
| GamepadId::kPersonalCommunicationSystemsProduct0001}, |
| {0x0810, 0x0003, kXInputTypeNone, |
| GamepadId::kPersonalCommunicationSystemsProduct0003}, |
| {0x0810, 0x1e01, kXInputTypeNone, |
| GamepadId::kPersonalCommunicationSystemsProduct1e01}, |
| {0x0810, 0xe501, kXInputTypeNone, |
| GamepadId::kPersonalCommunicationSystemsProducte501}, |
| // Lakeview Research |
| {0x0925, 0x0005, kXInputTypeNone, GamepadId::kLakeviewResearchProduct0005}, |
| {0x0925, 0x03e8, kXInputTypeNone, GamepadId::kLakeviewResearchProduct03e8}, |
| {0x0925, 0x1700, kXInputTypeNone, GamepadId::kLakeviewResearchProduct1700}, |
| {0x0925, 0x2801, kXInputTypeNone, GamepadId::kLakeviewResearchProduct2801}, |
| {0x0925, 0x8866, kXInputTypeNone, GamepadId::kLakeviewResearchProduct8866}, |
| {0x0926, 0x2526, kXInputTypeNone, GamepadId::kVendor0926Product2526}, |
| {0x0926, 0x8888, kXInputTypeNone, GamepadId::kVendor0926Product8888}, |
| // NVIDIA Corp. |
| {0x0955, 0x7210, kXInputTypeNone, GamepadId::kNvidiaProduct7210}, |
| {0x0955, 0x7214, kXInputTypeNone, GamepadId::kNvidiaProduct7214}, |
| // ASUSTek Computer, Inc. |
| {0x0b05, 0x4500, kXInputTypeNone, GamepadId::kAsusTekProduct4500}, |
| // Play.com, Inc. |
| {0x0b43, 0x0005, kXInputTypeNone, GamepadId::kPlayComProduct0005}, |
| // Zeroplus |
| {0x0c12, 0x0005, kXInputTypeXbox, GamepadId::kZeroplusProduct0005}, |
| {0x0c12, 0x0e10, kXInputTypeNone, GamepadId::kZeroplusProduct0e10}, |
| {0x0c12, 0x0ef6, kXInputTypeNone, GamepadId::kZeroplusProduct0ef6}, |
| {0x0c12, 0x1cf6, kXInputTypeNone, GamepadId::kZeroplusProduct1cf6}, |
| {0x0c12, 0x8801, kXInputTypeXbox, GamepadId::kZeroplusProduct8801}, |
| {0x0c12, 0x8802, kXInputTypeXbox, GamepadId::kZeroplusProduct8802}, |
| {0x0c12, 0x8809, kXInputTypeXbox, GamepadId::kZeroplusProduct8809}, |
| {0x0c12, 0x880a, kXInputTypeXbox, GamepadId::kZeroplusProduct880a}, |
| {0x0c12, 0x8810, kXInputTypeXbox, GamepadId::kZeroplusProduct8810}, |
| {0x0c12, 0x9902, kXInputTypeXbox, GamepadId::kZeroplusProduct9902}, |
| // Microdia |
| {0x0c45, 0x4320, kXInputTypeNone, GamepadId::kMicrodiaProduct4320}, |
| {0x0d2f, 0x0002, kXInputTypeXbox, GamepadId::kVendor0d2fProduct0002}, |
| // Radica Games, Ltd |
| {0x0e4c, 0x1097, kXInputTypeXbox, GamepadId::kRadicaGamesProduct1097}, |
| {0x0e4c, 0x1103, kXInputTypeXbox, GamepadId::kRadicaGamesProduct1103}, |
| {0x0e4c, 0x2390, kXInputTypeXbox, GamepadId::kRadicaGamesProduct2390}, |
| {0x0e4c, 0x3510, kXInputTypeXbox, GamepadId::kRadicaGamesProduct3510}, |
| // Logic3 |
| {0x0e6f, 0x0003, kXInputTypeXbox, GamepadId::kPdpProduct0003}, |
| {0x0e6f, 0x0005, kXInputTypeXbox, GamepadId::kPdpProduct0005}, |
| {0x0e6f, 0x0006, kXInputTypeXbox, GamepadId::kPdpProduct0006}, |
| {0x0e6f, 0x0008, kXInputTypeXbox, GamepadId::kPdpProduct0008}, |
| {0x0e6f, 0x0105, kXInputTypeXbox360, GamepadId::kPdpProduct0105}, |
| {0x0e6f, 0x0113, kXInputTypeXbox360, GamepadId::kPdpProduct0113}, |
| {0x0e6f, 0x011e, kXInputTypeNone, GamepadId::kPdpProduct011e}, |
| {0x0e6f, 0x011f, kXInputTypeXbox360, GamepadId::kPdpProduct011f}, |
| {0x0e6f, 0x0124, kXInputTypeNone, GamepadId::kPdpProduct0124}, |
| {0x0e6f, 0x0130, kXInputTypeNone, GamepadId::kPdpProduct0130}, |
| {0x0e6f, 0x0131, kXInputTypeXbox360, GamepadId::kPdpProduct0131}, |
| {0x0e6f, 0x0133, kXInputTypeXbox360, GamepadId::kPdpProduct0133}, |
| {0x0e6f, 0x0139, kXInputTypeXboxOne, GamepadId::kPdpProduct0139}, |
| {0x0e6f, 0x013a, kXInputTypeXboxOne, GamepadId::kPdpProduct013a}, |
| {0x0e6f, 0x0146, kXInputTypeXboxOne, GamepadId::kPdpProduct0146}, |
| {0x0e6f, 0x0147, kXInputTypeXboxOne, GamepadId::kPdpProduct0147}, |
| {0x0e6f, 0x0158, kXInputTypeNone, GamepadId::kPdpProduct0158}, |
| {0x0e6f, 0x015c, kXInputTypeXboxOne, GamepadId::kPdpProduct015c}, |
| {0x0e6f, 0x0161, kXInputTypeXboxOne, GamepadId::kPdpProduct0161}, |
| {0x0e6f, 0x0162, kXInputTypeXboxOne, GamepadId::kPdpProduct0162}, |
| {0x0e6f, 0x0163, kXInputTypeXboxOne, GamepadId::kPdpProduct0163}, |
| {0x0e6f, 0x0164, kXInputTypeXboxOne, GamepadId::kPdpProduct0164}, |
| {0x0e6f, 0x0165, kXInputTypeXboxOne, GamepadId::kPdpProduct0165}, |
| {0x0e6f, 0x0201, kXInputTypeXbox360, GamepadId::kPdpProduct0201}, |
| {0x0e6f, 0x0213, kXInputTypeXbox360, GamepadId::kPdpProduct0213}, |
| {0x0e6f, 0x021f, kXInputTypeXbox360, GamepadId::kPdpProduct021f}, |
| {0x0e6f, 0x0246, kXInputTypeXboxOne, GamepadId::kPdpProduct0246}, |
| {0x0e6f, 0x02a0, kXInputTypeNone, GamepadId::kPdpProduct02a0}, |
| {0x0e6f, 0x02ab, kXInputTypeNone, GamepadId::kPdpProduct02ab}, |
| {0x0e6f, 0x0301, kXInputTypeXbox360, GamepadId::kPdpProduct0301}, |
| {0x0e6f, 0x0346, kXInputTypeXboxOne, GamepadId::kPdpProduct0346}, |
| {0x0e6f, 0x0401, kXInputTypeXbox360, GamepadId::kPdpProduct0401}, |
| {0x0e6f, 0x0413, kXInputTypeXbox360, GamepadId::kPdpProduct0413}, |
| {0x0e6f, 0x0501, kXInputTypeXbox360, GamepadId::kPdpProduct0501}, |
| {0x0e6f, 0xf501, kXInputTypeNone, GamepadId::kPdpProductf501}, |
| {0x0e6f, 0xf701, kXInputTypeNone, GamepadId::kPdpProductf701}, |
| {0x0e6f, 0xf900, kXInputTypeXbox360, GamepadId::kPdpProductf900}, |
| // GreenAsia Inc. |
| {0x0e8f, 0x0003, kXInputTypeNone, GamepadId::kGreenAsiaProduct0003}, |
| {0x0e8f, 0x0008, kXInputTypeNone, GamepadId::kGreenAsiaProduct0008}, |
| {0x0e8f, 0x0012, kXInputTypeNone, GamepadId::kGreenAsiaProduct0012}, |
| {0x0e8f, 0x0201, kXInputTypeXbox, GamepadId::kGreenAsiaProduct0201}, |
| {0x0e8f, 0x1006, kXInputTypeNone, GamepadId::kGreenAsiaProduct1006}, |
| {0x0e8f, 0x3008, kXInputTypeXbox, GamepadId::kGreenAsiaProduct3008}, |
| {0x0e8f, 0x3010, kXInputTypeNone, GamepadId::kGreenAsiaProduct3010}, |
| {0x0e8f, 0x3013, kXInputTypeNone, GamepadId::kGreenAsiaProduct3013}, |
| {0x0e8f, 0x3075, kXInputTypeNone, GamepadId::kGreenAsiaProduct3075}, |
| {0x0e8f, 0x310d, kXInputTypeNone, GamepadId::kGreenAsiaProduct310d}, |
| // Hori Co., Ltd |
| {0x0f0d, 0x000a, kXInputTypeXbox360, GamepadId::kHoriProduct000a}, |
| {0x0f0d, 0x000c, kXInputTypeXbox360, GamepadId::kHoriProduct000c}, |
| {0x0f0d, 0x000d, kXInputTypeXbox360, GamepadId::kHoriProduct000d}, |
| {0x0f0d, 0x0010, kXInputTypeNone, GamepadId::kHoriProduct0010}, |
| {0x0f0d, 0x0011, kXInputTypeNone, GamepadId::kHoriProduct0011}, |
| {0x0f0d, 0x0016, kXInputTypeXbox360, GamepadId::kHoriProduct0016}, |
| {0x0f0d, 0x001b, kXInputTypeXbox360, GamepadId::kHoriProduct001b}, |
| {0x0f0d, 0x0022, kXInputTypeNone, GamepadId::kHoriProduct0022}, |
| {0x0f0d, 0x0027, kXInputTypeNone, GamepadId::kHoriProduct0027}, |
| {0x0f0d, 0x003d, kXInputTypeNone, GamepadId::kHoriProduct003d}, |
| {0x0f0d, 0x0040, kXInputTypeNone, GamepadId::kHoriProduct0040}, |
| {0x0f0d, 0x0049, kXInputTypeNone, GamepadId::kHoriProduct0049}, |
| {0x0f0d, 0x004d, kXInputTypeNone, GamepadId::kHoriProduct004d}, |
| {0x0f0d, 0x0055, kXInputTypeNone, GamepadId::kHoriProduct0055}, |
| {0x0f0d, 0x005b, kXInputTypeNone, GamepadId::kHoriProduct005b}, |
| {0x0f0d, 0x005c, kXInputTypeNone, GamepadId::kHoriProduct005c}, |
| {0x0f0d, 0x005e, kXInputTypeNone, GamepadId::kHoriProduct005e}, |
| {0x0f0d, 0x005f, kXInputTypeNone, GamepadId::kHoriProduct005f}, |
| {0x0f0d, 0x0063, kXInputTypeXboxOne, GamepadId::kHoriProduct0063}, |
| {0x0f0d, 0x0066, kXInputTypeNone, GamepadId::kHoriProduct0066}, |
| {0x0f0d, 0x0067, kXInputTypeXboxOne, GamepadId::kHoriProduct0067}, |
| {0x0f0d, 0x006a, kXInputTypeNone, GamepadId::kHoriProduct006a}, |
| {0x0f0d, 0x006b, kXInputTypeNone, GamepadId::kHoriProduct006b}, |
| {0x0f0d, 0x006e, kXInputTypeNone, GamepadId::kHoriProduct006e}, |
| {0x0f0d, 0x0070, kXInputTypeNone, GamepadId::kHoriProduct0070}, |
| {0x0f0d, 0x0078, kXInputTypeXboxOne, GamepadId::kHoriProduct0078}, |
| {0x0f0d, 0x0084, kXInputTypeNone, GamepadId::kHoriProduct0084}, |
| {0x0f0d, 0x0085, kXInputTypeNone, GamepadId::kHoriProduct0085}, |
| {0x0f0d, 0x0087, kXInputTypeNone, GamepadId::kHoriProduct0087}, |
| {0x0f0d, 0x0088, kXInputTypeNone, GamepadId::kHoriProduct0088}, |
| {0x0f0d, 0x008a, kXInputTypeNone, GamepadId::kHoriProduct008a}, |
| {0x0f0d, 0x008b, kXInputTypeNone, GamepadId::kHoriProduct008b}, |
| {0x0f0d, 0x0090, kXInputTypeNone, GamepadId::kHoriProduct0090}, |
| {0x0f0d, 0x00ee, kXInputTypeNone, GamepadId::kHoriProduct00ee}, |
| // Jess Technology Co., Ltd |
| {0x0f30, 0x010b, kXInputTypeXbox, GamepadId::kJessTechnologyProduct010b}, |
| {0x0f30, 0x0110, kXInputTypeNone, GamepadId::kJessTechnologyProduct0110}, |
| {0x0f30, 0x0111, kXInputTypeNone, GamepadId::kJessTechnologyProduct0111}, |
| {0x0f30, 0x0112, kXInputTypeNone, GamepadId::kJessTechnologyProduct0112}, |
| {0x0f30, 0x0202, kXInputTypeXbox, GamepadId::kJessTechnologyProduct0202}, |
| {0x0f30, 0x0208, kXInputTypeNone, GamepadId::kJessTechnologyProduct0208}, |
| {0x0f30, 0x1012, kXInputTypeNone, GamepadId::kJessTechnologyProduct1012}, |
| {0x0f30, 0x1100, kXInputTypeNone, GamepadId::kJessTechnologyProduct1100}, |
| {0x0f30, 0x1112, kXInputTypeNone, GamepadId::kJessTechnologyProduct1112}, |
| {0x0f30, 0x1116, kXInputTypeNone, GamepadId::kJessTechnologyProduct1116}, |
| {0x0f30, 0x8888, kXInputTypeXbox, GamepadId::kJessTechnologyProduct8888}, |
| // Etoms Electronics Corp. |
| {0x102c, 0xff0c, kXInputTypeXbox, GamepadId::kEtomsElectronicsProductff0c}, |
| // SteelSeries ApS |
| {0x1038, 0x1412, kXInputTypeNone, GamepadId::kSteelSeriesProduct1412}, |
| {0x1038, 0x1418, kXInputTypeNone, GamepadId::kSteelSeriesProduct1418}, |
| {0x1038, 0x1420, kXInputTypeNone, GamepadId::kSteelSeriesProduct1420}, |
| {0x1080, 0x0009, kXInputTypeNone, GamepadId::kVendor1080Product0009}, |
| // Betop |
| {0x11c0, 0x5213, kXInputTypeNone, GamepadId::kBetopProduct5213}, |
| {0x11c0, 0x5506, kXInputTypeNone, GamepadId::kBetopProduct5506}, |
| {0x11c9, 0x55f0, kXInputTypeXbox360, GamepadId::kVendor11c9Product55f0}, |
| {0x11ff, 0x3331, kXInputTypeNone, GamepadId::kVendor11ffProduct3331}, |
| {0x11ff, 0x3341, kXInputTypeNone, GamepadId::kVendor11ffProduct3341}, |
| // Focusrite-Novation |
| {0x1235, 0xab21, kXInputTypeNone, GamepadId::kFocusriteNovationProductab21}, |
| // Nyko (Honey Bee) |
| {0x124b, 0x4d01, kXInputTypeNone, GamepadId::kNykoProduct4d01}, |
| // Honey Bee Electronic International Ltd. |
| {0x12ab, 0x0004, kXInputTypeXbox360, GamepadId::kHoneyBeeProduct0004}, |
| {0x12ab, 0x0006, kXInputTypeNone, GamepadId::kHoneyBeeProduct0006}, |
| {0x12ab, 0x0301, kXInputTypeXbox360, GamepadId::kHoneyBeeProduct0301}, |
| {0x12ab, 0x0302, kXInputTypeNone, GamepadId::kHoneyBeeProduct0302}, |
| {0x12ab, 0x0303, kXInputTypeXbox360, GamepadId::kHoneyBeeProduct0303}, |
| {0x12ab, 0x0e6f, kXInputTypeNone, GamepadId::kHoneyBeeProduct0e6f}, |
| {0x12ab, 0x8809, kXInputTypeXbox, GamepadId::kHoneyBeeProduct8809}, |
| // Gembird |
| {0x12bd, 0xd012, kXInputTypeNone, GamepadId::kGembirdProductd012}, |
| {0x12bd, 0xd015, kXInputTypeNone, GamepadId::kGembirdProductd015}, |
| // Sino Lite Technology Corp. |
| {0x1345, 0x1000, kXInputTypeNone, GamepadId::kSinoLiteProduct1000}, |
| {0x1345, 0x3008, kXInputTypeNone, GamepadId::kSinoLiteProduct3008}, |
| // RedOctane |
| {0x1430, 0x02a0, kXInputTypeNone, GamepadId::kRedOctaneProduct02a0}, |
| {0x1430, 0x4734, kXInputTypeNone, GamepadId::kRedOctaneProduct4734}, |
| {0x1430, 0x4748, kXInputTypeXbox360, GamepadId::kRedOctaneProduct4748}, |
| {0x1430, 0x474c, kXInputTypeNone, GamepadId::kRedOctaneProduct474c}, |
| {0x1430, 0x8888, kXInputTypeXbox, GamepadId::kRedOctaneProduct8888}, |
| {0x1430, 0xf801, kXInputTypeXbox360, GamepadId::kRedOctaneProductf801}, |
| {0x146b, 0x0601, kXInputTypeXbox360, GamepadId::kVendor146bProduct0601}, |
| {0x146b, 0x0d01, kXInputTypeNone, GamepadId::kVendor146bProduct0d01}, |
| {0x146b, 0x5500, kXInputTypeNone, GamepadId::kVendor146bProduct5500}, |
| // JAMER INDUSTRIES CO., LTD. |
| {0x14d8, 0x6208, kXInputTypeNone, GamepadId::kJamerIndustriesProduct6208}, |
| {0x14d8, 0xcd07, kXInputTypeNone, GamepadId::kJamerIndustriesProductcd07}, |
| {0x14d8, 0xcfce, kXInputTypeNone, GamepadId::kJamerIndustriesProductcfce}, |
| // Razer USA, Ltd |
| {0x1532, 0x0037, kXInputTypeXbox360, GamepadId::kRazer1532Product0037}, |
| {0x1532, 0x0300, kXInputTypeNone, GamepadId::kRazer1532Product0300}, |
| {0x1532, 0x0401, kXInputTypeNone, GamepadId::kRazer1532Product0401}, |
| {0x1532, 0x0900, kXInputTypeNone, GamepadId::kRazer1532Product0900}, |
| {0x1532, 0x0a00, kXInputTypeXboxOne, GamepadId::kRazer1532Product0a00}, |
| {0x1532, 0x0a03, kXInputTypeXboxOne, GamepadId::kRazer1532Product0a03}, |
| {0x1532, 0x1000, kXInputTypeNone, GamepadId::kRazer1532Product1000}, |
| {0x15e4, 0x3f00, kXInputTypeXbox360, GamepadId::kNumarkProduct3f00}, |
| {0x15e4, 0x3f0a, kXInputTypeXbox360, GamepadId::kNumarkProduct3f0a}, |
| {0x15e4, 0x3f10, kXInputTypeXbox360, GamepadId::kNumarkProduct3f10}, |
| {0x162e, 0xbeef, kXInputTypeXbox360, GamepadId::kVendor162eProductbeef}, |
| // Razer USA, Ltd |
| {0x1689, 0x0001, kXInputTypeNone, GamepadId::kRazer1689Product0001}, |
| {0x1689, 0xfd00, kXInputTypeXbox360, GamepadId::kRazer1689Productfd00}, |
| {0x1689, 0xfd01, kXInputTypeXbox360, GamepadId::kRazer1689Productfd01}, |
| {0x1689, 0xfe00, kXInputTypeXbox360, GamepadId::kRazer1689Productfe00}, |
| // Askey Computer Corp. |
| {0x1690, 0x0001, kXInputTypeNone, GamepadId::kAskeyComputerProduct0001}, |
| // Van Ooijen Technische Informatica |
| {0x16c0, 0x0487, kXInputTypeNone, GamepadId::kVanOoijenProduct0487}, |
| {0x16c0, 0x05e1, kXInputTypeNone, GamepadId::kVanOoijenProduct05e1}, |
| {0x1781, 0x057e, kXInputTypeNone, GamepadId::kVendor1781Product057e}, |
| // Google Inc. |
| {0x18d1, 0x2c40, kXInputTypeNone, GamepadId::kGoogleProduct2c40}, |
| // Lab126, Inc. |
| {0x1949, 0x0402, kXInputTypeNone, GamepadId::kLab126Product0402}, |
| // Gampaq Co.Ltd |
| {0x19fa, 0x0607, kXInputTypeNone, GamepadId::kGampaqProduct0607}, |
| // ACRUX |
| {0x1a34, 0x0203, kXInputTypeNone, GamepadId::kAcruxProduct0203}, |
| {0x1a34, 0x0401, kXInputTypeNone, GamepadId::kAcruxProduct0401}, |
| {0x1a34, 0x0801, kXInputTypeNone, GamepadId::kAcruxProduct0801}, |
| {0x1a34, 0x0802, kXInputTypeNone, GamepadId::kAcruxProduct0802}, |
| {0x1a34, 0x0836, kXInputTypeNone, GamepadId::kAcruxProduct0836}, |
| {0x1a34, 0xf705, kXInputTypeNone, GamepadId::kAcruxProductf705}, |
| // Harmonix Music |
| {0x1bad, 0x0002, kXInputTypeXbox360, GamepadId::kHarmonixMusicProduct0002}, |
| {0x1bad, 0x0003, kXInputTypeXbox360, GamepadId::kHarmonixMusicProduct0003}, |
| {0x1bad, 0x0130, kXInputTypeXbox360, GamepadId::kHarmonixMusicProduct0130}, |
| {0x1bad, 0x028e, kXInputTypeNone, GamepadId::kHarmonixMusicProduct028e}, |
| {0x1bad, 0x0301, kXInputTypeNone, GamepadId::kHarmonixMusicProduct0301}, |
| {0x1bad, 0x5500, kXInputTypeNone, GamepadId::kHarmonixMusicProduct5500}, |
| {0x1bad, 0xf016, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf016}, |
| {0x1bad, 0xf018, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf018}, |
| {0x1bad, 0xf019, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf019}, |
| {0x1bad, 0xf021, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf021}, |
| {0x1bad, 0xf023, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf023}, |
| {0x1bad, 0xf025, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf025}, |
| {0x1bad, 0xf027, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf027}, |
| {0x1bad, 0xf028, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf028}, |
| {0x1bad, 0xf02d, kXInputTypeNone, GamepadId::kHarmonixMusicProductf02d}, |
| {0x1bad, 0xf02e, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf02e}, |
| {0x1bad, 0xf030, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf030}, |
| {0x1bad, 0xf036, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf036}, |
| {0x1bad, 0xf038, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf038}, |
| {0x1bad, 0xf039, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf039}, |
| {0x1bad, 0xf03a, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf03a}, |
| {0x1bad, 0xf03d, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf03d}, |
| {0x1bad, 0xf03e, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf03e}, |
| {0x1bad, 0xf03f, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf03f}, |
| {0x1bad, 0xf042, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf042}, |
| {0x1bad, 0xf080, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf080}, |
| {0x1bad, 0xf0ca, kXInputTypeNone, GamepadId::kHarmonixMusicProductf0ca}, |
| {0x1bad, 0xf501, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf501}, |
| {0x1bad, 0xf502, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf502}, |
| {0x1bad, 0xf503, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf503}, |
| {0x1bad, 0xf504, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf504}, |
| {0x1bad, 0xf505, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf505}, |
| {0x1bad, 0xf506, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf506}, |
| {0x1bad, 0xf900, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf900}, |
| {0x1bad, 0xf901, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf901}, |
| {0x1bad, 0xf902, kXInputTypeNone, GamepadId::kHarmonixMusicProductf902}, |
| {0x1bad, 0xf903, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf903}, |
| {0x1bad, 0xf904, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf904}, |
| {0x1bad, 0xf906, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductf906}, |
| {0x1bad, 0xf907, kXInputTypeNone, GamepadId::kHarmonixMusicProductf907}, |
| {0x1bad, 0xfa01, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductfa01}, |
| {0x1bad, 0xfd00, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductfd00}, |
| {0x1bad, 0xfd01, kXInputTypeXbox360, GamepadId::kHarmonixMusicProductfd01}, |
| // OpenMoko, Inc. |
| {0x1d50, 0x6053, kXInputTypeNone, GamepadId::kOpenMokoProduct6053}, |
| {0x1d79, 0x0301, kXInputTypeNone, GamepadId::kVendor1d79Product0301}, |
| {0x1dd8, 0x000b, kXInputTypeNone, GamepadId::kVendor1dd8Product000b}, |
| {0x1dd8, 0x000f, kXInputTypeNone, GamepadId::kVendor1dd8Product000f}, |
| {0x1dd8, 0x0010, kXInputTypeNone, GamepadId::kVendor1dd8Product0010}, |
| // DAP Technologies |
| {0x2002, 0x9000, kXInputTypeNone, GamepadId::kDapTechnologiesProduct9000}, |
| {0x20d6, 0x0dad, kXInputTypeNone, GamepadId::kVendor20d6Product0dad}, |
| {0x20d6, 0x6271, kXInputTypeNone, GamepadId::kVendor20d6Product6271}, |
| {0x20d6, 0x89e5, kXInputTypeNone, GamepadId::kVendor20d6Product89e5}, |
| {0x20d6, 0xca6d, kXInputTypeNone, GamepadId::kVendor20d6Productca6d}, |
| {0x20e8, 0x5860, kXInputTypeNone, GamepadId::kVendor20e8Product5860}, |
| // MacAlly |
| {0x2222, 0x0060, kXInputTypeNone, GamepadId::kMacAllyProduct0060}, |
| {0x2222, 0x4010, kXInputTypeNone, GamepadId::kMacAllyProduct4010}, |
| {0x22ba, 0x1020, kXInputTypeNone, GamepadId::kVendor22baProduct1020}, |
| {0x2378, 0x1008, kXInputTypeNone, GamepadId::kVendor2378Product1008}, |
| {0x2378, 0x100a, kXInputTypeNone, GamepadId::kVendor2378Product100a}, |
| {0x24c6, 0x5000, kXInputTypeXbox360, GamepadId::kVendor24c6Product5000}, |
| {0x24c6, 0x5300, kXInputTypeXbox360, GamepadId::kVendor24c6Product5300}, |
| {0x24c6, 0x5303, kXInputTypeXbox360, GamepadId::kVendor24c6Product5303}, |
| {0x24c6, 0x530a, kXInputTypeXbox360, GamepadId::kVendor24c6Product530a}, |
| {0x24c6, 0x531a, kXInputTypeXbox360, GamepadId::kVendor24c6Product531a}, |
| {0x24c6, 0x5397, kXInputTypeXbox360, GamepadId::kVendor24c6Product5397}, |
| {0x24c6, 0x541a, kXInputTypeXboxOne, GamepadId::kVendor24c6Product541a}, |
| {0x24c6, 0x542a, kXInputTypeXboxOne, GamepadId::kVendor24c6Product542a}, |
| {0x24c6, 0x543a, kXInputTypeXboxOne, GamepadId::kVendor24c6Product543a}, |
| {0x24c6, 0x5500, kXInputTypeXbox360, GamepadId::kVendor24c6Product5500}, |
| {0x24c6, 0x5501, kXInputTypeXbox360, GamepadId::kVendor24c6Product5501}, |
| {0x24c6, 0x5502, kXInputTypeXbox360, GamepadId::kVendor24c6Product5502}, |
| {0x24c6, 0x5503, kXInputTypeXbox360, GamepadId::kVendor24c6Product5503}, |
| {0x24c6, 0x5506, kXInputTypeXbox360, GamepadId::kVendor24c6Product5506}, |
| {0x24c6, 0x550d, kXInputTypeXbox360, GamepadId::kVendor24c6Product550d}, |
| {0x24c6, 0x550e, kXInputTypeXbox360, GamepadId::kVendor24c6Product550e}, |
| {0x24c6, 0x551a, kXInputTypeXboxOne, GamepadId::kVendor24c6Product551a}, |
| {0x24c6, 0x561a, kXInputTypeXboxOne, GamepadId::kVendor24c6Product561a}, |
| {0x24c6, 0x5b00, kXInputTypeXbox360, GamepadId::kVendor24c6Product5b00}, |
| {0x24c6, 0x5b02, kXInputTypeXbox360, GamepadId::kVendor24c6Product5b02}, |
| {0x24c6, 0x5b03, kXInputTypeXbox360, GamepadId::kVendor24c6Product5b03}, |
| {0x24c6, 0x5d04, kXInputTypeXbox360, GamepadId::kVendor24c6Product5d04}, |
| {0x24c6, 0xfafb, kXInputTypeNone, GamepadId::kVendor24c6Productfafb}, |
| {0x24c6, 0xfafc, kXInputTypeNone, GamepadId::kVendor24c6Productfafc}, |
| {0x24c6, 0xfafd, kXInputTypeNone, GamepadId::kVendor24c6Productfafd}, |
| {0x24c6, 0xfafe, kXInputTypeXbox360, GamepadId::kVendor24c6Productfafe}, |
| {0x2563, 0x0523, kXInputTypeNone, GamepadId::kVendor2563Product0523}, |
| {0x25f0, 0x83c1, kXInputTypeNone, GamepadId::kVendor25f0Product83c1}, |
| {0x25f0, 0xc121, kXInputTypeNone, GamepadId::kVendor25f0Productc121}, |
| {0x2717, 0x3144, kXInputTypeNone, GamepadId::kVendor2717Product3144}, |
| {0x2810, 0x0009, kXInputTypeNone, GamepadId::kVendor2810Product0009}, |
| {0x2836, 0x0001, kXInputTypeNone, GamepadId::kVendor2836Product0001}, |
| // Dracal/Raphnet technologies |
| {0x289b, 0x0003, kXInputTypeNone, GamepadId::kDracalRaphnetProduct0003}, |
| {0x289b, 0x0005, kXInputTypeNone, GamepadId::kDracalRaphnetProduct0005}, |
| // Valve Software |
| {0x28de, 0x1002, kXInputTypeNone, GamepadId::kValveProduct1002}, |
| {0x28de, 0x1042, kXInputTypeNone, GamepadId::kValveProduct1042}, |
| {0x28de, 0x1052, kXInputTypeNone, GamepadId::kValveProduct1052}, |
| {0x28de, 0x1071, kXInputTypeNone, GamepadId::kValveProduct1071}, |
| {0x28de, 0x1101, kXInputTypeNone, GamepadId::kValveProduct1101}, |
| {0x28de, 0x1102, kXInputTypeNone, GamepadId::kValveProduct1102}, |
| {0x28de, 0x1105, kXInputTypeNone, GamepadId::kValveProduct1105}, |
| {0x28de, 0x1106, kXInputTypeNone, GamepadId::kValveProduct1106}, |
| {0x28de, 0x1142, kXInputTypeNone, GamepadId::kValveProduct1142}, |
| {0x28de, 0x11fc, kXInputTypeNone, GamepadId::kValveProduct11fc}, |
| {0x28de, 0x11ff, kXInputTypeNone, GamepadId::kValveProduct11ff}, |
| {0x28de, 0x1201, kXInputTypeNone, GamepadId::kValveProduct1201}, |
| {0x28de, 0x1202, kXInputTypeNone, GamepadId::kValveProduct1202}, |
| {0x2c22, 0x2000, kXInputTypeNone, GamepadId::kVendor2c22Product2000}, |
| {0x2c22, 0x2300, kXInputTypeNone, GamepadId::kVendor2c22Product2300}, |
| {0x2c22, 0x2302, kXInputTypeNone, GamepadId::kVendor2c22Product2302}, |
| {0x2dc8, 0x1003, kXInputTypeNone, GamepadId::kEightBitdoProduct1003}, |
| {0x2dc8, 0x1080, kXInputTypeNone, GamepadId::kEightBitdoProduct1080}, |
| {0x2dc8, 0x2830, kXInputTypeNone, GamepadId::kEightBitdoProduct2830}, |
| {0x2dc8, 0x3000, kXInputTypeNone, GamepadId::kEightBitdoProduct3000}, |
| {0x2dc8, 0x3001, kXInputTypeNone, GamepadId::kEightBitdoProduct3001}, |
| {0x2dc8, 0x3820, kXInputTypeNone, GamepadId::kEightBitdoProduct3820}, |
| {0x2dc8, 0x9001, kXInputTypeNone, GamepadId::kEightBitdoProduct9001}, |
| {0x2dfa, 0x0001, kXInputTypeNone, GamepadId::kVendor2dfaProduct0001}, |
| {0x3767, 0x0101, kXInputTypeXbox, GamepadId::kVendor3767Product0101}, |
| {0x3820, 0x0009, kXInputTypeNone, GamepadId::kVendor3820Product0009}, |
| {0x4c50, 0x5453, kXInputTypeNone, GamepadId::kVendor4c50Product5453}, |
| {0x5347, 0x6d61, kXInputTypeNone, GamepadId::kVendor5347Product6d61}, |
| {0x6469, 0x6469, kXInputTypeNone, GamepadId::kVendor6469Product6469}, |
| // Prototype product Vendor ID |
| {0x6666, 0x0667, kXInputTypeNone, GamepadId::kPrototypeVendorProduct0667}, |
| {0x6666, 0x8804, kXInputTypeNone, GamepadId::kPrototypeVendorProduct8804}, |
| {0x6666, 0x9401, kXInputTypeNone, GamepadId::kPrototypeVendorProduct9401}, |
| {0x6957, 0x746f, kXInputTypeNone, GamepadId::kVendor6957Product746f}, |
| {0x6978, 0x706e, kXInputTypeNone, GamepadId::kVendor6978Product706e}, |
| {0x8000, 0x1002, kXInputTypeNone, GamepadId::kVendor8000Product1002}, |
| {0x8888, 0x0308, kXInputTypeNone, GamepadId::kVendor8888Product0308}, |
| {0xf000, 0x0003, kXInputTypeNone, GamepadId::kVendorf000Product0003}, |
| {0xf000, 0x00f1, kXInputTypeNone, GamepadId::kVendorf000Product00f1}, |
| // Hama |
| {0xf766, 0x0001, kXInputTypeNone, GamepadId::kHamaProduct0001}, |
| {0xf766, 0x0005, kXInputTypeNone, GamepadId::kHamaProduct0005}, |
| }; |
| constexpr size_t kGamepadInfoLength = base::size(kGamepadInfo); |
| |
| bool CompareEntry(const GamepadInfo& a, const GamepadInfo& b) { |
| return std::tie(a.vendor, a.product) < std::tie(b.vendor, b.product); |
| } |
| |
| const GamepadInfo* GetGamepadInfo(uint16_t vendor, uint16_t product) { |
| const GamepadInfo* begin = std::begin(kGamepadInfo); |
| const GamepadInfo* end = std::end(kGamepadInfo); |
| GamepadInfo target_entry = {vendor, product, kXInputTypeNone, |
| GamepadId::kUnknownGamepad}; |
| const GamepadInfo* it = |
| std::lower_bound(begin, end, target_entry, CompareEntry); |
| if (it == end || it->vendor != vendor || it->product != product) |
| return nullptr; |
| return it; |
| } |
| |
| } // namespace |
| |
| // static |
| GamepadIdList& GamepadIdList::Get() { |
| return g_singleton.Get(); |
| } |
| |
| GamepadIdList::GamepadIdList() { |
| DCHECK(std::is_sorted(std::begin(kGamepadInfo), std::end(kGamepadInfo), |
| CompareEntry)); |
| } |
| |
| XInputType GamepadIdList::GetXInputType(uint16_t vendor_id, |
| uint16_t product_id) const { |
| const auto* entry = GetGamepadInfo(vendor_id, product_id); |
| return entry ? entry->xtype : kXInputTypeNone; |
| } |
| |
| GamepadId GamepadIdList::GetGamepadId(uint16_t vendor_id, |
| uint16_t product_id) const { |
| const auto* entry = GetGamepadInfo(vendor_id, product_id); |
| return entry ? entry->id : GamepadId::kUnknownGamepad; |
| } |
| |
| std::vector<std::tuple<uint16_t, uint16_t, XInputType, GamepadId>> |
| GamepadIdList::GetGamepadListForTesting() const { |
| std::vector<std::tuple<uint16_t, uint16_t, XInputType, GamepadId>> gamepads; |
| for (size_t i = 0; i < kGamepadInfoLength; ++i) { |
| const auto& item = kGamepadInfo[i]; |
| gamepads.push_back( |
| std::make_tuple(item.vendor, item.product, item.xtype, item.id)); |
| } |
| return gamepads; |
| } |
| |
| } // namespace device |