# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Configure touchpads to use Chromium Multitouch (cmt) X input driver
Section "InputClass"
    Identifier      "touchpad leon"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "cyapa"
    Option          "Touchpad Stack Version" "1"
    Option          "Integrated Touchpad" "1"
    # Disable some causes of delay
    Option          "IIR b0" "1"
    Option          "IIR b1" "0"
    Option          "IIR b2" "0"
    Option          "IIR b3" "0"
    Option          "IIR a1" "0"
    Option          "IIR a2" "0"
    Option          "IIR Distance Threshold" "1000"
    Option          "Two Finger Vertical Close Distance Thresh" "35.0"
    Option          "Fling Buffer Suppress Zero Length Scrolls" "0"
    Option          "Pinch Enable" "0"
EndSection

Section "InputClass"
    Identifier      "touchpad leon cyapa"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "cyapa"
    Option          "Pressure Calibration Offset" "-4.01785085724002"
    Option          "Pressure Calibration Slope" "1.97990685351742"
    # Extra filters for Cyapa
    Option          "Box Width" "0.5"
    Option          "Box Height" "0.5"
    Option          "Max Allowed Pressure Change Per Sec" "2000.0"
    Option          "Max Hysteresis Pressure Per Sec" "2000.0"
    Option          "Quick Acceleration Factor" "5.0"

    Option          "Sensor Jump Filter Enable" "1"
    # Effectively disabled for moves:
    Option          "Sensor Jump Max Dist Move" "1.0"
    Option          "Sensor Jump Min Dist Move" "1.0"

    Option          "Sensor Jump Max Dist Non-Move" "3.8"
    Option          "Sensor Jump Min Dist Non-Move" "0.75"

    Option          "Tap Minimum Pressure" "19.0"
    Option          "Tap Move Distance" "4.8"

    Option          "Smooth Accel" "1"
    Option          "Pinch Enable" "0"
EndSection

