• Hans de Goede's avatar
    Input: alps - fix touchpad buttons getting stuck when used with trackpoint · 6bcca19f
    Hans de Goede authored
    When the left touchpad button gets pressed, and then the trackpoint is
    moved, and then the button is released, the following happens:
    
    1) touchpad packet is received, touchpad evdev node reports BTN_LEFT 1
    
    2) pointing stick packet is received, the hw will report a BTN_LEFT 1 in
       this packet because when the trackstick is active it communicates the
       combined touchpad + pointing stick buttons in the trackstick packet,
       since alps_report_bare_ps2_packet passes NULL (*) for the dev2 parameter
       to alps_report_buttons the combining is not detected and the
       pointing stick evdev node will also report BTN_LEFT 1
    
    3) on release of the button a pointing stick packet with BTN_LEFT 0 is
       received and the pointing stick evdev node will report BTN_LEFT 0
    
    Note how because of the passing as NULL for dev2 the touchpad evdev node
    will never send BTN_LEFT 0 in this scenario leading to a stuck mouse button.
    
    This is a regression in 4.0 introduced by commit 04aae283
    ("Input: ALPS - do not mix trackstick and external PS/2 mouse data")
    
    This commit fixes this by passing in the touchpad evdev as dev2 parameter
    when calling alps_report_buttons for the pointingstick on alps v2 devices,
    so that alps_report_buttons correctly detect that we're already reporting
    the button as pressed via the touchpad evdev node, and will also send the
    release event there.
    
    Cc: stable@vger.kernel.org # 4.0
    Reported-by: default avatarHans de Bruin <jmdebruin@xmsnet.nl>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Acked-by: default avatarPali Rohár <pali.rohar@gmail.com>
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    6bcca19f
alps.c 71.8 KB