|
@@ -19,6 +19,7 @@
|
|
|
|
|
|
#define USB_VENDOR_ID_A4TECH 0x09da
|
|
#define USB_VENDOR_ID_A4TECH 0x09da
|
|
#define USB_DEVICE_ID_A4TECH_WCP32PU 0x0006
|
|
#define USB_DEVICE_ID_A4TECH_WCP32PU 0x0006
|
|
|
|
+#define USB_DEVICE_ID_A4TECH_X5_005D 0x000a
|
|
|
|
|
|
#define USB_VENDOR_ID_AASHIMA 0x06d6
|
|
#define USB_VENDOR_ID_AASHIMA 0x06d6
|
|
#define USB_DEVICE_ID_AASHIMA_GAMEPAD 0x0025
|
|
#define USB_DEVICE_ID_AASHIMA_GAMEPAD 0x0025
|
|
@@ -28,6 +29,9 @@
|
|
#define USB_DEVICE_ID_ACECAD_FLAIR 0x0004
|
|
#define USB_DEVICE_ID_ACECAD_FLAIR 0x0004
|
|
#define USB_DEVICE_ID_ACECAD_302 0x0008
|
|
#define USB_DEVICE_ID_ACECAD_302 0x0008
|
|
|
|
|
|
|
|
+#define USB_VENDOR_ID_ADS_TECH 0x06e1
|
|
|
|
+#define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X 0xa155
|
|
|
|
+
|
|
#define USB_VENDOR_ID_AIPTEK 0x08ca
|
|
#define USB_VENDOR_ID_AIPTEK 0x08ca
|
|
#define USB_DEVICE_ID_AIPTEK_01 0x0001
|
|
#define USB_DEVICE_ID_AIPTEK_01 0x0001
|
|
#define USB_DEVICE_ID_AIPTEK_10 0x0010
|
|
#define USB_DEVICE_ID_AIPTEK_10 0x0010
|
|
@@ -59,6 +63,9 @@
|
|
#define USB_DEVICE_ID_APPLE_GEYSER4_ANSI 0x021a
|
|
#define USB_DEVICE_ID_APPLE_GEYSER4_ANSI 0x021a
|
|
#define USB_DEVICE_ID_APPLE_GEYSER4_ISO 0x021b
|
|
#define USB_DEVICE_ID_APPLE_GEYSER4_ISO 0x021b
|
|
#define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c
|
|
#define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c
|
|
|
|
+#define USB_DEVICE_ID_APPLE_ALU_ANSI 0x0220
|
|
|
|
+#define USB_DEVICE_ID_APPLE_ALU_ISO 0x0221
|
|
|
|
+#define USB_DEVICE_ID_APPLE_ALU_JIS 0x0222
|
|
#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
|
|
#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
|
|
#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
|
|
#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
|
|
#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
|
|
#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
|
|
@@ -94,6 +101,9 @@
|
|
#define USB_DEVICE_ID_CODEMERCS_IOW_FIRST 0x1500
|
|
#define USB_DEVICE_ID_CODEMERCS_IOW_FIRST 0x1500
|
|
#define USB_DEVICE_ID_CODEMERCS_IOW_LAST 0x15ff
|
|
#define USB_DEVICE_ID_CODEMERCS_IOW_LAST 0x15ff
|
|
|
|
|
|
|
|
+#define USB_VENDOR_ID_CYGNAL 0x10c4
|
|
|
|
+#define USB_DEVICE_ID_CYGNAL_RADIO_SI470X 0x818a
|
|
|
|
+
|
|
#define USB_VENDOR_ID_CYPRESS 0x04b4
|
|
#define USB_VENDOR_ID_CYPRESS 0x04b4
|
|
#define USB_DEVICE_ID_CYPRESS_MOUSE 0x0001
|
|
#define USB_DEVICE_ID_CYPRESS_MOUSE 0x0001
|
|
#define USB_DEVICE_ID_CYPRESS_HIDCOM 0x5500
|
|
#define USB_DEVICE_ID_CYPRESS_HIDCOM 0x5500
|
|
@@ -114,6 +124,9 @@
|
|
#define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f
|
|
#define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f
|
|
#define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100
|
|
#define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100
|
|
|
|
|
|
|
|
+#define USB_VENDOR_ID_EZKEY 0x0518
|
|
|
|
+#define USB_DEVICE_ID_BTC_8193 0x0002
|
|
|
|
+
|
|
#define USB_VENDOR_ID_GAMERON 0x0810
|
|
#define USB_VENDOR_ID_GAMERON 0x0810
|
|
#define USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR 0x0001
|
|
#define USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR 0x0001
|
|
|
|
|
|
@@ -134,6 +147,9 @@
|
|
#define USB_DEVICE_ID_GOGOPEN 0x00ce
|
|
#define USB_DEVICE_ID_GOGOPEN 0x00ce
|
|
#define USB_DEVICE_ID_PENPOWER 0x00f4
|
|
#define USB_DEVICE_ID_PENPOWER 0x00f4
|
|
|
|
|
|
|
|
+#define USB_VENDOR_ID_GRETAGMACBETH 0x0971
|
|
|
|
+#define USB_DEVICE_ID_GRETAGMACBETH_HUEY 0x2005
|
|
|
|
+
|
|
#define USB_VENDOR_ID_GRIFFIN 0x077d
|
|
#define USB_VENDOR_ID_GRIFFIN 0x077d
|
|
#define USB_DEVICE_ID_POWERMATE 0x0410
|
|
#define USB_DEVICE_ID_POWERMATE 0x0410
|
|
#define USB_DEVICE_ID_SOUNDKNOB 0x04AA
|
|
#define USB_DEVICE_ID_SOUNDKNOB 0x04AA
|
|
@@ -278,7 +294,9 @@
|
|
#define USB_DEVICE_ID_LOGITECH_HARMONY_62 0xc14d
|
|
#define USB_DEVICE_ID_LOGITECH_HARMONY_62 0xc14d
|
|
#define USB_DEVICE_ID_LOGITECH_HARMONY_63 0xc14e
|
|
#define USB_DEVICE_ID_LOGITECH_HARMONY_63 0xc14e
|
|
#define USB_DEVICE_ID_LOGITECH_HARMONY_64 0xc14f
|
|
#define USB_DEVICE_ID_LOGITECH_HARMONY_64 0xc14f
|
|
|
|
+#define USB_DEVICE_ID_LOGITECH_EXTREME_3D 0xc215
|
|
#define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294
|
|
#define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294
|
|
|
|
+#define USB_DEVICE_ID_LOGITECH_ELITE_KBD 0xc30a
|
|
#define USB_DEVICE_ID_LOGITECH_KBD 0xc311
|
|
#define USB_DEVICE_ID_LOGITECH_KBD 0xc311
|
|
#define USB_DEVICE_ID_S510_RECEIVER 0xc50c
|
|
#define USB_DEVICE_ID_S510_RECEIVER 0xc50c
|
|
#define USB_DEVICE_ID_S510_RECEIVER_2 0xc517
|
|
#define USB_DEVICE_ID_S510_RECEIVER_2 0xc517
|
|
@@ -296,6 +314,12 @@
|
|
|
|
|
|
#define USB_VENDOR_ID_MICROSOFT 0x045e
|
|
#define USB_VENDOR_ID_MICROSOFT 0x045e
|
|
#define USB_DEVICE_ID_SIDEWINDER_GV 0x003b
|
|
#define USB_DEVICE_ID_SIDEWINDER_GV 0x003b
|
|
|
|
+#define USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0 0x009d
|
|
|
|
+#define USB_DEVICE_ID_MS_NE4K 0x00db
|
|
|
|
+#define USB_DEVICE_ID_MS_LK6K 0x00f9
|
|
|
|
+
|
|
|
|
+#define USB_VENDOR_ID_MONTEREY 0x0566
|
|
|
|
+#define USB_DEVICE_ID_GENIUS_KB29E 0x3004
|
|
|
|
|
|
#define USB_VENDOR_ID_NCR 0x0404
|
|
#define USB_VENDOR_ID_NCR 0x0404
|
|
#define USB_DEVICE_ID_NCR_FIRST 0x0300
|
|
#define USB_DEVICE_ID_NCR_FIRST 0x0300
|
|
@@ -324,6 +348,9 @@
|
|
#define USB_VENDOR_ID_SAITEK 0x06a3
|
|
#define USB_VENDOR_ID_SAITEK 0x06a3
|
|
#define USB_DEVICE_ID_SAITEK_RUMBLEPAD 0xff17
|
|
#define USB_DEVICE_ID_SAITEK_RUMBLEPAD 0xff17
|
|
|
|
|
|
|
|
+#define USB_VENDOR_ID_SAMSUNG 0x0419
|
|
|
|
+#define USB_DEVICE_ID_SAMSUNG_IR_REMOTE 0x0001
|
|
|
|
+
|
|
#define USB_VENDOR_ID_SONY 0x054c
|
|
#define USB_VENDOR_ID_SONY 0x054c
|
|
#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268
|
|
#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268
|
|
|
|
|
|
@@ -368,6 +395,7 @@ static const struct hid_blacklist {
|
|
} hid_blacklist[] = {
|
|
} hid_blacklist[] = {
|
|
|
|
|
|
{ USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 },
|
|
{ USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 },
|
|
|
|
+ { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D, HID_QUIRK_2WHEEL_MOUSE_HACK_B8 },
|
|
{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE, HID_QUIRK_2WHEEL_MOUSE_HACK_5 },
|
|
{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE, HID_QUIRK_2WHEEL_MOUSE_HACK_5 },
|
|
|
|
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RECEIVER, HID_QUIRK_BAD_RELATIVE_KEYS },
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RECEIVER, HID_QUIRK_BAD_RELATIVE_KEYS },
|
|
@@ -390,6 +418,9 @@ static const struct hid_blacklist {
|
|
{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4, HID_QUIRK_HIDDEV | HID_QUIRK_IGNORE_HIDINPUT },
|
|
{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4, HID_QUIRK_HIDDEV | HID_QUIRK_IGNORE_HIDINPUT },
|
|
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV, HID_QUIRK_HIDINPUT },
|
|
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV, HID_QUIRK_HIDINPUT },
|
|
|
|
|
|
|
|
+ { USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193, HID_QUIRK_HWHEEL_WHEEL_INVERT },
|
|
|
|
+
|
|
|
|
+ { USB_VENDOR_ID_ADS_TECH, USB_DEVICE_ID_ADS_TECH_RADIO_SI470X, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_10, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_10, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_20, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_20, HID_QUIRK_IGNORE },
|
|
@@ -402,6 +433,7 @@ static const struct hid_blacklist {
|
|
{ USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM, HID_QUIRK_IGNORE},
|
|
{ USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM, HID_QUIRK_IGNORE},
|
|
{ USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_CIDC, 0x0103, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_CIDC, 0x0103, HID_QUIRK_IGNORE },
|
|
|
|
+ { USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI470X, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_CMEDIA, USB_DEVICE_ID_CM109, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_CMEDIA, USB_DEVICE_ID_CM109, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_HIDCOM, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_HIDCOM, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_ULTRAMOUSE, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_ULTRAMOUSE, HID_QUIRK_IGNORE },
|
|
@@ -423,6 +455,7 @@ static const struct hid_blacklist {
|
|
{ USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_SUPER_Q2, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_SUPER_Q2, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_GOGOPEN, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_GOGOPEN, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_PENPOWER, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_PENPOWER, HID_QUIRK_IGNORE },
|
|
|
|
+ { USB_VENDOR_ID_GRETAGMACBETH, USB_DEVICE_ID_GRETAGMACBETH_HUEY, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_90, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_90, HID_QUIRK_IGNORE },
|
|
@@ -516,14 +549,18 @@ static const struct hid_blacklist {
|
|
{ USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302, HID_QUIRK_IGNORE },
|
|
{ USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302, HID_QUIRK_IGNORE },
|
|
|
|
|
|
|
|
+ { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_ELITE_KBD, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP },
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP },
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP },
|
|
|
|
|
|
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE4K, HID_QUIRK_MICROSOFT_KEYS },
|
|
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_LK6K, HID_QUIRK_MICROSOFT_KEYS },
|
|
|
|
+
|
|
{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE, HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL },
|
|
{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE, HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL },
|
|
|
|
|
|
{ USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS },
|
|
{ USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK, HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS },
|
|
{ USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT },
|
|
{ USB_VENDOR_ID_PLAYDOTCOM, USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII, HID_QUIRK_MULTI_INPUT },
|
|
|
|
|
|
- { USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER, HID_QUIRK_SONY_PS3_CONTROLLER },
|
|
|
|
|
|
+ { USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER, HID_QUIRK_SONY_PS3_CONTROLLER | HID_QUIRK_HIDDEV },
|
|
|
|
|
|
{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS124U, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS124U, HID_QUIRK_NOGET },
|
|
@@ -531,7 +568,9 @@ static const struct hid_blacklist {
|
|
{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET },
|
|
|
|
+ { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_EXTREME_3D, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WHEEL, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WHEEL, HID_QUIRK_NOGET },
|
|
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD, HID_QUIRK_NOGET },
|
|
@@ -540,19 +579,22 @@ static const struct hid_blacklist {
|
|
|
|
|
|
{ USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
|
{ USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
|
|
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD},
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD},
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD},
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ANSI, HID_QUIRK_APPLE_HAS_FN },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS, HID_QUIRK_APPLE_HAS_FN },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
|
|
|
|
|
|
{ USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS },
|
|
{ USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS },
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KBD, HID_QUIRK_RESET_LEDS },
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KBD, HID_QUIRK_RESET_LEDS },
|
|
@@ -638,10 +680,14 @@ static const struct hid_rdesc_blacklist {
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER, HID_QUIRK_RDESC_LOGITECH },
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER, HID_QUIRK_RDESC_LOGITECH },
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER_2, HID_QUIRK_RDESC_LOGITECH },
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER_2, HID_QUIRK_RDESC_LOGITECH },
|
|
|
|
|
|
|
|
+ { USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E, HID_QUIRK_RDESC_BUTTON_CONSUMER },
|
|
|
|
+
|
|
{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_RDESC_MACBOOK_JIS },
|
|
{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_RDESC_MACBOOK_JIS },
|
|
|
|
|
|
{ USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE, HID_QUIRK_RDESC_PETALYNX },
|
|
{ USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE, HID_QUIRK_RDESC_PETALYNX },
|
|
|
|
|
|
|
|
+ { USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE, HID_QUIRK_RDESC_SAMSUNG_REMOTE },
|
|
|
|
+
|
|
{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_1, HID_QUIRK_RDESC_SWAPPED_MIN_MAX },
|
|
{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_1, HID_QUIRK_RDESC_SWAPPED_MIN_MAX },
|
|
{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_2, HID_QUIRK_RDESC_SWAPPED_MIN_MAX },
|
|
{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_2, HID_QUIRK_RDESC_SWAPPED_MIN_MAX },
|
|
|
|
|
|
@@ -884,6 +930,8 @@ u32 usbhid_lookup_quirk(const u16 idVendor, const u16 idProduct)
|
|
return quirks;
|
|
return quirks;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+EXPORT_SYMBOL_GPL(usbhid_lookup_quirk);
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Cherry Cymotion keyboard have an invalid HID report descriptor,
|
|
* Cherry Cymotion keyboard have an invalid HID report descriptor,
|
|
* that needs fixing before we can parse it.
|
|
* that needs fixing before we can parse it.
|
|
@@ -914,6 +962,33 @@ static void usbhid_fixup_logitech_descriptor(unsigned char *rdesc, int rsize)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Samsung IrDA remote controller (reports as Cypress USB Mouse).
|
|
|
|
+ *
|
|
|
|
+ * Vendor specific report #4 has a size of 48 bit,
|
|
|
|
+ * and therefore is not accepted when inspecting the descriptors.
|
|
|
|
+ * As a workaround we reinterpret the report as:
|
|
|
|
+ * Variable type, count 6, size 8 bit, log. maximum 255
|
|
|
|
+ * The burden to reconstruct the data is moved into user space.
|
|
|
|
+ */
|
|
|
|
+static void usbhid_fixup_samsung_irda_descriptor(unsigned char *rdesc,
|
|
|
|
+ int rsize)
|
|
|
|
+{
|
|
|
|
+ if (rsize >= 182 && rdesc[175] == 0x25
|
|
|
|
+ && rdesc[176] == 0x40
|
|
|
|
+ && rdesc[177] == 0x75
|
|
|
|
+ && rdesc[178] == 0x30
|
|
|
|
+ && rdesc[179] == 0x95
|
|
|
|
+ && rdesc[180] == 0x01
|
|
|
|
+ && rdesc[182] == 0x40) {
|
|
|
|
+ printk(KERN_INFO "Fixing up Samsung IrDA report descriptor\n");
|
|
|
|
+ rdesc[176] = 0xff;
|
|
|
|
+ rdesc[178] = 0x08;
|
|
|
|
+ rdesc[180] = 0x06;
|
|
|
|
+ rdesc[182] = 0x42;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
/* Petalynx Maxter Remote has maximum for consumer page set too low */
|
|
/* Petalynx Maxter Remote has maximum for consumer page set too low */
|
|
static void usbhid_fixup_petalynx_descriptor(unsigned char *rdesc, int rsize)
|
|
static void usbhid_fixup_petalynx_descriptor(unsigned char *rdesc, int rsize)
|
|
{
|
|
{
|
|
@@ -965,6 +1040,14 @@ static void usbhid_fixup_macbook_descriptor(unsigned char *rdesc, int rsize)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void usbhid_fixup_button_consumer_descriptor(unsigned char *rdesc, int rsize)
|
|
|
|
+{
|
|
|
|
+ if (rsize >= 30 && rdesc[29] == 0x05
|
|
|
|
+ && rdesc[30] == 0x09) {
|
|
|
|
+ printk(KERN_INFO "Fixing up button/consumer in HID report descriptor\n");
|
|
|
|
+ rdesc[30] = 0x0c;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
static void __usbhid_fixup_report_descriptor(__u32 quirks, char *rdesc, unsigned rsize)
|
|
static void __usbhid_fixup_report_descriptor(__u32 quirks, char *rdesc, unsigned rsize)
|
|
{
|
|
{
|
|
@@ -982,6 +1065,13 @@ static void __usbhid_fixup_report_descriptor(__u32 quirks, char *rdesc, unsigned
|
|
|
|
|
|
if (quirks & HID_QUIRK_RDESC_MACBOOK_JIS)
|
|
if (quirks & HID_QUIRK_RDESC_MACBOOK_JIS)
|
|
usbhid_fixup_macbook_descriptor(rdesc, rsize);
|
|
usbhid_fixup_macbook_descriptor(rdesc, rsize);
|
|
|
|
+
|
|
|
|
+ if (quirks & HID_QUIRK_RDESC_BUTTON_CONSUMER)
|
|
|
|
+ usbhid_fixup_button_consumer_descriptor(rdesc, rsize);
|
|
|
|
+
|
|
|
|
+ if (quirks & HID_QUIRK_RDESC_SAMSUNG_REMOTE)
|
|
|
|
+ usbhid_fixup_samsung_irda_descriptor(rdesc, rsize);
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|