• Mikhail Khvainitski's avatar
    HID: lenovo: Detect quirk-free fw on cptkbd and stop applying workaround · 46a0a2c9
    Mikhail Khvainitski authored
    Built-in firmware of cptkbd handles scrolling by itself (when middle
    button is pressed) but with issues: it does not support horizontal and
    hi-res scrolling and upon middle button release it sends middle button
    click even if there was a scrolling event. Commit 3cb5ff02 ("HID:
    lenovo: Hide middle-button press until release") workarounds last
    issue but it's impossible to workaround scrolling-related issues
    without firmware modification.
    
    Likely, Dennis Schneider has reverse engineered the firmware and
    provided an instruction on how to patch it [1]. However,
    aforementioned workaround prevents userspace (libinput) from knowing
    exact moment when middle button has been pressed down and performing
    "On-Button scrolling". This commit detects correctly-behaving patched
    firmware if cursor movement events has been received during middle
    button being pressed and stops applying workaround for this device.
    
    Link: https://hohlerde.org/rauch/en/elektronik/projekte/tpkbd-fix/ [1]
    Signed-off-by: default avatarMikhail Khvainitski <me@khvoinitsky.org>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    46a0a2c9
hid-lenovo.c 38.6 KB