libinput/quirks
Richie Roy Jayme df8f5a3627 quirks: add quirk support for Goodix touchpad
This commit adds a specific vendor HWID for Goodix Haptic Touchpad to
improve detection and handling.

Signed-off-by: Richie Roy Jayme <rjayme.jp@gmail.com>
Signed-off-by: Richie Roy Jayme <rjayme2@lenovo.com>
Reviewed-by: Vishnu Sankar <vishnuocv@gmail.com>
Reviewed-by: Vishnu Sankar <vsankar@lenovo.com>
Reported-by: Ameer Ivan Julkarnain <ajulkarnain1@lenovo.com>
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1426>
2026-02-07 08:27:58 +00:00
..
10-generic-keyboard.quirks quirks: rework tablet mode using chassis type 2026-01-05 04:44:41 +00:00
10-generic-mouse.quirks quirks: no button debouncing on generic emulated mouse 2021-09-12 21:51:53 +00:00
10-generic-trackball.quirks Rename data/ to quirks/ 2018-07-13 13:30:54 +10:00
30-vendor-a4tech.quirks quirks: add more specific matches to actual quirks 2026-01-27 00:43:51 +00:00
30-vendor-aiptek.quirks quirks: allow overriding of AttrEventCode and AttrInputProp 2022-11-28 08:25:41 +10:00
30-vendor-alps.quirks quirks: Customize ALPS i2c touchpad palm detect pressure threshold 2020-09-28 12:12:51 +08:00
30-vendor-contour.quirks quirks: add more specific matches to actual quirks 2026-01-27 00:43:51 +00:00
30-vendor-cypress.quirks quirks: add more specific matches to actual quirks 2026-01-27 00:43:51 +00:00
30-vendor-elantech.quirks quirks: extend/restore the Elan Touchpads quirks 2018-09-18 07:18:34 +10:00
30-vendor-glorious.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
30-vendor-goodix.quirks quirks: add quirk support for Goodix touchpad 2026-02-07 08:27:58 +00:00
30-vendor-hantick.quirks quirks: Move Synaptics touchpad to Hanticks 2025-12-22 22:20:18 +00:00
30-vendor-huion.quirks quirks: add more specific matches to actual quirks 2026-01-27 00:43:51 +00:00
30-vendor-ite.quirks quirks: define generic quirks for ITE 2025-12-23 15:22:30 +01:00
30-vendor-kensington.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
30-vendor-logitech.quirks quirks: separate logitech quirks 2026-01-13 01:50:51 +00:00
30-vendor-madcatz.quirks quirks: allow overriding of AttrEventCode and AttrInputProp 2022-11-28 08:25:41 +10:00
30-vendor-microsoft.quirks quirks: normalize dmi matches 2026-01-12 03:49:00 +01:00
30-vendor-nulea.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
30-vendor-oracle.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
30-vendor-pixart.quirks quirks: refactor pixart touchpads 2026-01-09 18:46:40 +01:00
30-vendor-qemu.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
30-vendor-razer.quirks quirks: normalize dmi matches 2026-01-12 03:49:00 +01:00
30-vendor-synaptics.quirks quirks: add missing match in synaptic touchpad 2026-01-02 06:07:28 +01:00
30-vendor-trust.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
30-vendor-vmware.quirks quirks: change VM devices to AttrIsVirtual 2025-09-02 07:44:11 +00:00
30-vendor-wacom.quirks quirks: the Wacom Bamboo 2FG 6x8 is a semi-mt touchpad 2024-12-20 00:43:50 +00:00
50-system-acer.quirks test: set usb touchpad as internal 2026-01-10 23:33:41 +01:00
50-system-apple.quirks quirks: Add Apple Magic Trackpad v2 USB-C (2024) 2025-02-04 14:36:01 +01:00
50-system-asus.quirks quirks: normalize dmi matches 2026-01-12 03:49:00 +01:00
50-system-cyborg.quirks quirks: allow overriding of AttrEventCode and AttrInputProp 2022-11-28 08:25:41 +10:00
50-system-dell.quirks quirks: normalize dmi matches 2026-01-12 03:49:00 +01:00
50-system-framework.quirks quirks: normalize dmi matches 2026-01-12 03:49:00 +01:00
50-system-gigabyte.quirks quirks: Add quirk for Gigabyte Aorus 15BKF keyboard 2026-01-22 15:59:42 +04:00
50-system-google.quirks quirks: add quirk for Google Chromebook Rull 2025-11-08 23:53:49 +00:00
50-system-gpd.quirks quirks: normalize dmi matches 2026-01-12 03:49:00 +01:00
50-system-graviton.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
50-system-honor.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
50-system-hp.quirks quirks: wipe HP Elite x2 G3 keyboard and touchpad 2026-01-13 01:53:28 +01:00
50-system-huawei.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
50-system-icl.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
50-system-lenovo.quirks quirks: merge ibm with lenovo 2026-01-27 00:19:16 +00:00
50-system-lg.quirks quirks: normalize dmi matches 2026-01-12 03:49:00 +01:00
50-system-minisforum.quirks quirks: rework minisforum keyboard and add one 2026-01-06 13:58:57 +01:00
50-system-pine64.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
50-system-sony.quirks quirks: normalize dmi matches 2026-01-12 03:49:00 +01:00
50-system-starlabs.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
50-system-system76.quirks quirks: normalize dmi matches 2026-01-12 03:49:00 +01:00
50-system-toshiba.quirks quirks: add edit warning where missing 2026-01-13 01:00:19 +01:00
README.md quirks: reword the requirements section in the quirks README 2021-02-03 07:45:12 +00:00

libinput quirks file format

This directory contains hardware quirks used by libinput to work around bugs in the hardware, device behavior and to supply information not obtained through the kernel device.

THIS IS NOT STABLE API

The data format may change at any time. If your quirks file is not part of the libinput git tree, do not expect it to work after an update. Absolutely no guarantees are made for backwards-compatibility.

THIS IS NOT A CONFIGURATION API

Use the libinput_device_config_foo() functions for device configuration. Quirks here are hardware quirks only.

Data file naming

Data files are read in versionsort order, read order determines how values override each other. Values read later override previously read values. The current structure is:

  • 10-generic-foo.quirks for generic settings,
  • 30-vendor-foo.quirks for vendor-specific settings, and
  • 50-system-foo.quirks for system vendors.

This is not a fixed naming scheme and may change at any time. It's an approximation only because some vendors are also system vendors, e.g. Microsoft makes devices and laptops.

Laptop-specific quirks should always go into the laptop vendor's file even where they apply to a component of a different vendor. For example, a quirk for a Synaptics touchpad specific to a Dell laptop should go into the Dell quirks file.

Sections, matches and values

A data file must contain at least one section, each section must have at least one Match tag and at least one of either Attr or Model. Section names are free-form and may contain spaces.

# This is a comment
[Some touchpad]
MatchBus=usb
# No quotes around strings
MatchName=*Synaptics Touchpad*
AttrSizeHint=50x50
ModelSynapticsTouchpad=1

[Apple touchpad]
MatchVendor=0x5AC
MatchProduct=0x123
ModelAppleTouchpad=1

Comments are lines starting with #.

All Model tags take a value of either 1 or 0.

All Attr tag values are specific to that attribute.

Parser errors

The following requirements must be met:

  • No whitespace is allowed at the beginning of the line
  • A Section must have at least one Match* entry
  • A Section must not repeat Match* entry
  • A Section must have at least one of Model* or Attr* entries
  • A Model tag may only have the value 1 or 0
  • String properties must not be enclosed in quotes
  • Hex numbers must use uppercase letters (e.g. 0x12AB)

Failure to meet these requirements will cause a parser error and the quirks files will not be used.

Debugging

When modifying a data file, use the libinput list-quirks tool to verify the changes. The tool can be pointed at the data directory to analyse, use --verbose to get more info. For example:

libinput list-quirks --data-dir /path/to/git/repo/quirks/ --verbose /dev/input/event0