# 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 winky atmel"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "Atmel"
    Option          "Touchpad Stack Version" "1"
    Option          "Integrated Touchpad" "1"
    Option          "Pressure Calibration Offset" "-20.0256397754628"
    Option          "Pressure Calibration Slope" "1.0709525531637"

    # 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"

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

    # Some fingers were accidentally triggering palm detection
    Option          "Palm Width" "26.0"
    Option          "Palm Pressure" "150.0"

    # TODO(clchiou): Calibrate bias on X-axis
    Option          "Touchpad Device Output Bias on X-Axis" "139.858245421079"
    Option          "Touchpad Device Output Bias on Y-Axis" "139.858245421079"

    # We see lots of pressure changes under normal use, so raise thresholds
    Option          "Max Allowed Pressure Change Per Sec" "100000.0"
    Option          "Max Hysteresis Pressure Per Sec" "100000.0"
    Option          "Fling Buffer Suppress Zero Length Scrolls" "1"

    # People complain that light tap clicks don't register
    Option          "Tap Minimum Pressure" "21.0"
    Option          "Two Finger Vertical Close Distance Thresh" "35.0"
    Option          "Fling Buffer Suppress Zero Length Scrolls" "0"

    # Fix for finger merge issue
    Option          "Finger Merge Filter Enabled" "1"

    # Enable Stationary Wiggle Filter
    Option          "Stationary Wiggle Filter Enabled" "1"
    Option          "Finger Moving Energy" "0.002"
    Option          "Finger Moving Hysteresis" "0.001"

    # Increase Change Timeout
    Option          "Change Timeout" "0.1"

    # Raw data is a little unsteady, add box filter for smoother movement
    Option          "Box Width" "0.3"
    Option          "Box Height" "0.3"
EndSection
