# 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
# This file holds the configuration for the Cypress pad.  Atmel Lucas's use the
# module from Pit exactly.  As such, the Xorg configs for those Lucas's is in
# the Pit config file which is also copied in by the ebuild
Section "InputClass"
    Identifier      "touchpad daisy cyapa"
    MatchIsTouchpad "on"
    MatchProduct    "Cypress APA Trackpad (cyapa)"
    MatchDevicePath "/dev/input/event*"
    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" "45.0"

    # The flexible case can cause accidental physical clicks
    Option          "Zero Finger Click Enable" "0"

    Option          "Pressure Calibration Offset" "-1.73338827637399"
    Option          "Pressure Calibration Slope" "2.06326787767144"
    # Extra filters for Daisy
    Option          "Box Width" "1.0"
    Option          "Box Height" "1.0"
    Option          "Sensor Jump Filter Enable" "1"
    Option          "Sensor Jump Min Dist Non-Move" "0.3"
    Option          "Sensor Jump Min Dist Move" "0.9"
    Option          "Sensor Jump Similar Multiplier Move" "1.5"
    Option          "Split Merge Max Movement" "6.5"
    Option          "Merge Max Ratio" "0.5"
    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          "Non-linearity correction data file" "/usr/share/gestures/daisy_linearity.dat"
    Option          "Enable non-linearity correction" "0"

    # Increase the pressure diff threshold for 2f scroll
    Option          "Two Finger Pressure Diff Thresh" "45"
    Option          "Fling Buffer Suppress Zero Length Scrolls" "0"
    Option          "Pinch Enable" "0"
EndSection
