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

# Copyright 2017 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.

Section "InputClass"
    Identifier      "touchpad pbody synaptics"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "virtual-touchpad"
    Option          "Integrated Touchpad" "1"
    Option          "Touchpad Stack Version" "2"
    # Pressure calibration results:
    # Probe Diameter   Measured   Expected   Calibrated
    # 0     3.90       51.43      11.95      -2.70
    # 1     5.70       70.73      25.52      20.65
    # 2     7.70       92.22      46.57      46.65
    # 3     9.90       132.79     76.98      95.75
    # 4     11.70      143.07     107.51     108.18
    # 5     13.90      196.64     151.75     173.01
    # 6     17.80      250.78     248.85     238.51
    Option          "Pressure Calibration Offset" "-64.9378194906"
    Option          "Pressure Calibration Slope" "1.21002945926"
EndSection
