# 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 wolf"
    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 wolf cyapa"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "cyapa"
    Option          "Pressure Calibration Offset" "-8.39892421456803"
    Option          "Pressure Calibration Slope" "2.65297826784859"
    # Extra filters for Cyapa
    Option          "Box Width" "0.5"
    Option          "Box Height" "0.5"
    Option          "Sensor Jump Filter Enable" "1"
    Option          "Palm Pressure" "140"

    # Copied from Peppy:
    Option          "Merge Max Ratio" "0.63"
    Option          "Split Merge Max Movement" "7.1"
    Option          "Max Allowed Pressure Change Per Sec" "4000"
    Option          "Max Hysteresis Pressure Per Sec" "4000"
    Option          "Delay On Possible Liftoff" "1"
    Option          "Input Queue Max Delay" "0.019"
    Option          "Split Corrector Enabled" "1"
    Option          "Tap Minimum Pressure" "10.0"
    Option          "Pinch Enable" "0"
EndSection

Section "InputClass"
    Identifier      "touchpad wolf elan"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "Elan Touchpad"

    Option          "Pressure Calibration Offset" "-99.0724819158697"
    Option          "Pressure Calibration Slope" "2.92199277366108"

    Option          "Tap Minimum Pressure" "15.0"

    Option          "Box Width" "0.1"
    Option          "Box Height" "0.1"
EndSection
