# 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 Grunt variants
# Careena: 04f3:00d5
# Barla:   04f3:00b4
# Mordin:  04f3:00cd
# Treeya:  04f3:00c4
Section "InputClass"
    Identifier      "grunt variants elan touchpad"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "Elan"
    MatchUSBID      "04f3:00d5|04f3:00b4|04f3:00cd|04f3:00c4"
    Option          "Zero Finger Click Enable" "0"
EndSection

# Treeya: 06cb:7ca1
Section "InputClass"
    Identifier      "grunt variants synaptics touchpad"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "Synaptics"
    MatchUSBID      "06cb:7ca1"
    Option          "Zero Finger Click Enable" "0"
EndSection
