Skip to content

Commit 0b2e389

Browse files
committed
Fixed long delay when enumerating the Razer Huntsman keyboard
Fixes #13236
1 parent 937e8d5 commit 0b2e389

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/hidapi/libusb/hid.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -927,6 +927,22 @@ static int should_enumerate_interface(unsigned short vendor_id, const struct lib
927927
return 0;
928928
}
929929

930+
static int hid_blacklist(unsigned short vendor_id, unsigned short product_id)
931+
{
932+
size_t i;
933+
static const struct { unsigned short vid; unsigned short pid; } known_bad[] = {
934+
{ 0x1532, 0x0227 } /* Razer Huntsman Gaming keyboard - long delay asking for device details */
935+
};
936+
937+
for (i = 0; i < (sizeof(known_bad)/sizeof(known_bad[0])); i++) {
938+
if ((vendor_id == known_bad[i].vid) && (product_id == known_bad[i].pid || known_bad[i].pid == 0x0000)) {
939+
return 1;
940+
}
941+
}
942+
943+
return 0;
944+
}
945+
930946
struct hid_device_info HID_API_EXPORT *hid_enumerate(unsigned short vendor_id, unsigned short product_id)
931947
{
932948
libusb_device **devs;
@@ -957,7 +973,8 @@ struct hid_device_info HID_API_EXPORT *hid_enumerate(unsigned short vendor_id,
957973
unsigned short dev_pid = desc.idProduct;
958974

959975
if ((vendor_id != 0x0 && vendor_id != dev_vid) ||
960-
(product_id != 0x0 && product_id != dev_pid)) {
976+
(product_id != 0x0 && product_id != dev_pid) ||
977+
hid_blacklist(dev_vid, dev_pid)) {
961978
continue;
962979
}
963980

0 commit comments

Comments
 (0)