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

# Configure touchpads to use Chromium Multitouch (cmt) X input driver
Section "InputClass"
    Identifier      "touchpad auron_yuna 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.95      11.95      -5.21
    # 1     5.70       37.21      25.52      18.34
    # 2     7.70       46.07      46.57      57.96
    # 3     9.90       53.55      76.98      91.47
    # 4     11.70      56.79      107.51     105.96
    # 5     13.90      90.87      151.75     258.51
    # 6     17.80      118.92     248.85     384.03
    Option          "Pressure Calibration Offset" "-148.228249772"
    Option          "Pressure Calibration Slope" "4.47591074851"
    Option          "Tap Minimum Pressure" "25.0"
EndSection
