# 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

# Configuration for classic Kip (with the original TP product_id 75.0)
Section "InputClass"
    Identifier      "touchpad kip"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "Elan"
    MatchUSBID      "04f3:004b"

    Option          "Integrated Touchpad" "1"
    Option          "Touchpad Stack Version" "1"

    Option          "Pressure Calibration Offset" "-144.44924745909"
    Option          "Pressure Calibration Slope" "3.366831045"
    Option          "Tap Minimum Pressure" "25.0"
    # Disable some causes of delay
    Option          "IIR Distance Threshold" "1000"
    Option          "Input Queue Delay" "0"
EndSection

# Configuration for Kip+ (with the Blaze TP product_id 72.0)
Section "InputClass"
    Identifier      "touchpad kip+"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "Elan"
    MatchUSBID      "04f3:0048"

    Option          "Integrated Touchpad" "1"
    Option          "Touchpad Stack Version" "1"

    Option          "Pressure Calibration Offset" "-107.6196094"
    Option          "Pressure Calibration Slope" "2.97397953"
    Option          "Tap Minimum Pressure" "25.0"
EndSection
