mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
ums(4): Disable vendor usage page button support
for all devices except Kensington Slimblade Trackball as it brokes some other devices like Contour Rollermouse Red Add a quirk for it as well. Reported by: Atte Peltomäki <koston_AT_iki_DOT_fi> PR: 267922 MFC after: 2 weeks
This commit is contained in:
parent
860399eb86
commit
ab4f740bc5
5 changed files with 19 additions and 6 deletions
|
|
@ -78,6 +78,8 @@ does not identify properly
|
|||
mouse sends an unknown leading byte
|
||||
.It UQ_MS_REVZ
|
||||
mouse has Z-axis reversed
|
||||
.It UQ_MS_VENDOR_BTN
|
||||
mouse has buttons in vendor usage page
|
||||
.It UQ_NO_STRINGS
|
||||
string descriptors are broken
|
||||
.It UQ_POWER_CLAIM
|
||||
|
|
|
|||
|
|
@ -122,6 +122,7 @@ struct ums_info {
|
|||
#define UMS_FLAG_SBU 0x0010 /* spurious button up events */
|
||||
#define UMS_FLAG_REVZ 0x0020 /* Z-axis is reversed */
|
||||
#define UMS_FLAG_W_AXIS 0x0040
|
||||
#define UMS_FLAG_VBTN 0x0080 /* Buttons in vendor usage page */
|
||||
|
||||
uint8_t sc_iid_w;
|
||||
uint8_t sc_iid_x;
|
||||
|
|
@ -538,12 +539,13 @@ ums_hid_parse(struct ums_softc *sc, device_t dev, const uint8_t *buf,
|
|||
}
|
||||
|
||||
/* detect other buttons */
|
||||
|
||||
for (j = 0; (i < UMS_BUTTON_MAX) && (j < 2); i++, j++) {
|
||||
if (!hid_locate(buf, len, HID_USAGE2(HUP_MICROSOFT, (j + 1)),
|
||||
hid_input, index, &info->sc_loc_btn[i], NULL,
|
||||
&info->sc_iid_btn[i])) {
|
||||
break;
|
||||
if (info->sc_flags & UMS_FLAG_VBTN) {
|
||||
for (j = 0; (i < UMS_BUTTON_MAX) && (j < 2); i++, j++) {
|
||||
if (!hid_locate(buf, len, HID_USAGE2(HUP_MICROSOFT,
|
||||
(j + 1)), hid_input, index, &info->sc_loc_btn[i],
|
||||
NULL, &info->sc_iid_btn[i])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -618,6 +620,10 @@ ums_attach(device_t dev)
|
|||
|
||||
isize = hid_report_size_max(d_ptr, d_len, hid_input, &sc->sc_iid);
|
||||
|
||||
if (usb_test_quirk(uaa, UQ_MS_VENDOR_BTN))
|
||||
for (i = 0; i < UMS_INFO_MAX; i++)
|
||||
sc->sc_info[i].sc_flags |= UMS_FLAG_VBTN;
|
||||
|
||||
/*
|
||||
* The Microsoft Wireless Notebook Optical Mouse seems to be in worse
|
||||
* shape than the Wireless Intellimouse 2.0, as its X, Y, wheel, and
|
||||
|
|
|
|||
|
|
@ -175,6 +175,8 @@ static struct usb_quirk_entry usb_quirks[USB_DEV_QUIRKS_MAX] = {
|
|||
/* Quirk for Corsair STRAFE Gaming keyboard */
|
||||
USB_QUIRK(CORSAIR, STRAFE, 0x0000, 0xffff, UQ_KBD_BOOTPROTO),
|
||||
USB_QUIRK(CORSAIR, STRAFE2, 0x0000, 0xffff, UQ_KBD_BOOTPROTO),
|
||||
/* Quirk for Kensington Slimblade Trackball */
|
||||
USB_QUIRK(KENSINGTON, SLIMBLADE, 0x0000, 0xffff, UQ_MS_VENDOR_BTN),
|
||||
/* umodem(4) device quirks */
|
||||
USB_QUIRK(METRICOM, RICOCHET_GS, 0x100, 0x100, UQ_ASSUME_CM_OVER_DATA),
|
||||
USB_QUIRK(SANYO, SCP4900, 0x000, 0x000, UQ_ASSUME_CM_OVER_DATA),
|
||||
|
|
@ -649,6 +651,7 @@ static const char *usb_quirk_str[USB_QUIRK_MAX] = {
|
|||
[UQ_MS_BAD_CLASS] = "UQ_MS_BAD_CLASS",
|
||||
[UQ_MS_LEADING_BYTE] = "UQ_MS_LEADING_BYTE",
|
||||
[UQ_MS_REVZ] = "UQ_MS_REVZ",
|
||||
[UQ_MS_VENDOR_BTN] = "UQ_MS_VENDOR_BTN",
|
||||
[UQ_NO_STRINGS] = "UQ_NO_STRINGS",
|
||||
[UQ_POWER_CLAIM] = "UQ_POWER_CLAIM",
|
||||
[UQ_SPUR_BUT_UP] = "UQ_SPUR_BUT_UP",
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ enum {
|
|||
UQ_MS_BAD_CLASS, /* doesn't identify properly */
|
||||
UQ_MS_LEADING_BYTE, /* mouse sends an unknown leading byte */
|
||||
UQ_MS_REVZ, /* mouse has Z-axis reversed */
|
||||
UQ_MS_VENDOR_BTN, /* mouse has buttons in vendor usage page */
|
||||
UQ_NO_STRINGS, /* string descriptors are broken */
|
||||
UQ_POWER_CLAIM, /* hub lies about power status */
|
||||
UQ_SPUR_BUT_UP, /* spurious mouse button up events */
|
||||
|
|
|
|||
|
|
@ -2710,6 +2710,7 @@ product KEISOKUGIKEN USBDAQ 0x0068 HKS-0200 USBDAQ
|
|||
/* Kensington products */
|
||||
product KENSINGTON ORBIT 0x1003 Orbit USB/PS2 trackball
|
||||
product KENSINGTON TURBOBALL 0x1005 TurboBall
|
||||
product KENSINGTON SLIMBLADE 0x2041 Slimblade Trackball
|
||||
|
||||
/* Synaptics products */
|
||||
product SYNAPTICS FPR9A 0x009a Fingerprint Reader
|
||||
|
|
|
|||
Loading…
Reference in a new issue