On Thu, 02 Nov, 2023 18:10:38 -0700 "Brett Raye" <braye@xxxxxxxxxxxx> wrote: > The Glorious Model I mouse has a buggy HID report descriptor for its > keyboard endpoint (used for programmable buttons). For report ID 2, there > is a mismatch between Logical Minimum and Usage Minimum in the array that > reports keycodes. > > The offending portion of the descriptor: (from hid-decode) > > 0x95, 0x05, // Report Count (5) 30 > 0x75, 0x08, // Report Size (8) 32 > 0x15, 0x00, // Logical Minimum (0) 34 > 0x25, 0x65, // Logical Maximum (101) 36 > 0x05, 0x07, // Usage Page (Keyboard) 38 > 0x19, 0x01, // Usage Minimum (1) 40 > 0x29, 0x65, // Usage Maximum (101) 42 > 0x81, 0x00, // Input (Data,Arr,Abs) 44 > > This bug shifts all programmed keycodes up by 1. Importantly, this causes > "empty" array indexes of 0x00 to be interpreted as 0x01, ErrorRollOver. > The presence of ErrorRollOver causes the system to ignore all keypresses > from the endpoint and breaks the ability to use the programmable buttons. > > Setting byte 41 to 0x00 fixes this, and causes keycodes to be interpreted > correctly. > > Also, USB_VENDOR_ID_GLORIOUS is changed to USB_VENDOR_ID_SINOWEALTH, > and a new ID for Laview Technology is added. Glorious seems to be > white-labeling controller boards or mice from these vendors. There isn't a > single canonical vendor ID for Glorious products. I agree with what this patch is doing overall. However, I think this patch should be split into two patches that are part of a patch series. One patch that does s/USB_VENDOR_ID_GLORIOUS/USB_VENDOR_ID_SINOWEALTH. The follow-up patch in the series will contain the work on the Model I keyboard. > > Signed-off-by: Brett Raye <braye@xxxxxxxxxxxx> > --- -- Thanks, Rahul Rameshbabu