# As banjo and yuna use the same TP, keep this file in sync with
# 60-touchpad-cmt-auron_yuna.conf

# Configure touchpads to use Chromium Multitouch (cmt) X input driver
Section "InputClass"
    Identifier      "touchpad banjo elan"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "Elan"
    Option          "Integrated Touchpad" "1"
    Option          "Touchpad Stack Version" "2"
    # Pressure calibration results:
    # Probe Diameter   Measured   Expected   Calibrated
    # 0     3.90       31.34      11.95      -4.53
    # 1     5.70       36.59      25.52      19.51
    # 2     7.70       43.78      46.57      52.48
    # 3     9.90       52.41      76.98      92.02
    # 4     11.70      56.13      107.51     109.04
    # 5     13.90      90.85      151.75     268.14
    # 6     17.80      121.47     248.85     408.43
    Option          "Pressure Calibration Offset" "-148.118845541"
    Option          "Pressure Calibration Slope" "4.58167539518"
    Option          "Tap Minimum Pressure" "25.0"
EndSection
