# 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 celes atmel"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "Atmel"
    Option          "Touchpad Stack Version" "2"
    Option          "Integrated Touchpad" "1"
    Option          "Zero Finger Click Enable" "0"
    Option          "Palm Pressure" "150"
    Option          "Tap Minimum Pressure" "15.0"

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

    # Pressure calibration results:
    # Probe Diameter   Measured   Expected   Calibrated
    # 0     3.90       25.98      11.95      2.86
    # 1     5.70       32.00      25.52      11.46
    # 2     7.70       60.07      46.57      51.55
    # 3     9.90       85.87      76.98      88.40
    # 4     11.70      103.96     107.51     114.24
    # 5     13.90      117.78     151.75     133.97
    # 6     17.80      128.31     248.85     149.02
    Option          "Pressure Calibration Offset" "-34.2465537817"
    Option          "Pressure Calibration Slope" "1.42827810904"
EndSection
