• Benjamin Tissoires's avatar
    Input: synaptics - use in-kernel tracking for reporting mt data · e9e8520f
    Benjamin Tissoires authored
    The current code tries to consider all states and transitions to properly
    detect which finger is attached to which slot. The code is quite huge
    and difficult to read.
    
    If the sensor manages to group the touch points but is not reliable in
    giving tracking ids, we can simply use the kernel tracking method. Note
    that it is already used by Cr-48 Chromebooks.
    
    Incidentaly, this fixes a bug reported by Peter Hutterer:
    """
    on the Lenovo T440, run:
    evemu-record /dev/input/event4 | grep BTN_
    
    then put one, two, three, two fingers down
    when you go from 3 to 2 fingers the driver sends a spurious BTN_TOUCH 0
    event:
    
    E: 0.000000 0001 014a 0001      # EV_KEY / BTN_TOUCH            1
    E: 0.000000 0001 0145 0001      # EV_KEY / BTN_TOOL_FINGER      1
    E: 0.770008 0001 0145 0000      # EV_KEY / BTN_TOOL_FINGER      0
    E: 0.770008 0001 014d 0001      # EV_KEY / BTN_TOOL_DOUBLETAP   1
    E: 1.924716 0001 014d 0000      # EV_KEY / BTN_TOOL_DOUBLETAP   0
    E: 1.924716 0001 014e 0001      # EV_KEY / BTN_TOOL_TRIPLETAP   1
    
    .. changing from 3 to 2 fingers now
    
    E: 3.152641 0001 014a 0000      # EV_KEY / BTN_TOUCH            0
    E: 3.152641 0001 014d 0001      # EV_KEY / BTN_TOOL_DOUBLETAP   1
    E: 3.152641 0001 014e 0000      # EV_KEY / BTN_TOOL_TRIPLETAP   0
    E: 3.176948 0001 014a 0001      # EV_KEY / BTN_TOUCH            1
    
    quick look in the kernel shows it's caused by hw.z going to 0 for a packet,
    so probably a firmware bug. either way, it makes it hard to track BTN_TOUCH
    as signal that at least one finger is down.
    """
    
    The in-kernel tracking is enough to remove this spurious BTN_TOUCH 0.
    Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    e9e8520f
synaptics.h 6.25 KB