# 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 samus"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchDMIProduct "Samus"
    MatchProduct    "Atmel"
    MatchUSBID      "0000:0000"
    Option          "Touchpad Stack Version" "2"
    Option          "Integrated Touchpad" "1"
    Option          "Pressure Calibration Offset" "-8.345256186"
    Option          "Pressure Calibration Slope" "1.006531862"
    Option          "Tap Minimum Pressure" "-15.0"
    Option          "Vertical Resolution" "8"
    Option          "Horizontal Resolution" "9"

    Option          "Palm Pressure" "120"
    Option          "Tap Exclusion Border Width" "6"
    Option          "Palm Edge Zone Width" "9"

    Option          "Pressure Minimum Threshold" "-7.84"

    # Enable Stationary Wiggle Filter
    Option          "Stationary Wiggle Filter Enabled" "1"
    Option          "Finger Moving Energy" "0.04"
    Option          "Finger Moving Hysteresis" "0.02"

    Option          "Box Width" "0.5"
    Option          "Box Height" "0.5"

    # Fix to prevent flings from stationary lifting fingers
    Option          "Max Stationary Move Speed" "47"
    Option          "Max Stationary Move Speed Hysteresis" "1"
    Option          "Max Stationary Move Suppress Distance" "0.2"

    Option          "Max Finger Stationary Speed" "50"

    Option          "Tap Move Distance" "3.0"
    Option          "Force Touch Count To Match Finger Count" "1"

    # Avoid palm motion
    Option          "Palm Pointing Min Move Distance" "12.0"

    # New filtering logic shouldn't apply to this platform
    Option          "Filter Low Pressure" "1"

    Option          "Pinch Enable" "1"
EndSection
