# 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 rambi elan"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "Elan"
    Option          "Integrated Touchpad" "1"
    Option          "Touchpad Stack Version" "2"
    Option          "Pressure Calibration Offset" "-232.615476471713"
    Option          "Pressure Calibration Slope" "4.5003322861445"
    Option          "Tap Minimum Pressure" "25.0"

    # Resolution is not correctly reported by the device.
    Option          "Horizontal Resolution" "30"
    Option          "Vertical Resolution" "28"
EndSection

Section "InputClass"
    Identifier      "touchpad rambi atmel"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "Atmel"
    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          "Pressure Calibration Offset" "-30.8987555752642"
    Option          "Pressure Calibration Slope" "3.04377880501995"
    # 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"

    # 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
