• Peter Hutterer's avatar
    HID: core: process the Resolution Multiplier · 5a4abb36
    Peter Hutterer authored
    The Resolution Multiplier is a feature report that modifies the value of
    Usages within the same Logical Collection. If the multiplier is set to
    anything but 1, the hardware reports (value * multiplier) for the same amount
    of physical movement, i.e. the value we receive in the kernel is
    pre-multiplied.
    
    The hardware may either send a single (value * multiplier), or by sending
    multiplier as many reports with the same value, or a combination of these two
    options. For example, when the Microsoft Sculpt Ergonomic mouse Resolution
    Multiplier is set to 12, the Wheel sends out 12 for every detent but AC Pan
    sends out a value of 3 at 4 times the frequency.
    
    The effective multiplier is based on the physical min/max of the multiplier
    field, a logical min/max of [0,1] with a physical min/max of [1,8] means the
    multiplier is either 1 or 8.
    
    The Resolution Multiplier was introduced for high-resolution scrolling in
    Windows Vista and is commonly used on Microsoft mice.
    
    The recommendation for the Resolution Multiplier is to default to 1 for
    backwards compatibility. This patch adds an arbitrary upper limit at 255. The
    only known use case for the Resolution Multiplier is for scroll wheels where the
    multiplier has to be a fraction of 120 to work with Windows.
    Signed-off-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
    Verified-by: default avatarHarry Cutts <hcutts@chromium.org>
    Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
    5a4abb36
hid-core.c 62.5 KB