• Frank Yang's avatar
    HID: cypress: Support Varmilo Keyboards' media hotkeys · 652f3d00
    Frank Yang authored
    The Varmilo VA104M Keyboard (04b4:07b1, reported as Varmilo Z104M)
    exposes media control hotkeys as a USB HID consumer control device, but
    these keys do not work in the current (5.8-rc1) kernel due to the
    incorrect HID report descriptor. Fix the problem by modifying the
    internal HID report descriptor.
    
    More specifically, the keyboard report descriptor specifies the
    logical boundary as 572~10754 (0x023c ~ 0x2a02) while the usage
    boundary is specified as 0~10754 (0x00 ~ 0x2a02). This results in an
    incorrect interpretation of input reports, causing inputs to be ignored.
    By setting the Logical Minimum to zero, we align the logical boundary
    with the Usage ID boundary.
    
    Some notes:
    
    * There seem to be multiple variants of the VA104M keyboard. This
      patch specifically targets 04b4:07b1 variant.
    
    * The device works out-of-the-box on Windows platform with the generic
      consumer control device driver (hidserv.inf). This suggests that
      Windows either ignores the Logical Minimum/Logical Maximum or
      interprets the Usage ID assignment differently from the linux
      implementation; Maybe there are other devices out there that only
      works on Windows due to this problem?
    Signed-off-by: default avatarFrank Yang <puilp0502@gmail.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    652f3d00
hid-cypress.c 4.6 KB