Skip to content

udev: Ignore raw Intel Touch Host Controller input nodes to prevent duplicate events and 16:9 distortion #220

Description

@luqqas96

Summary

On Tiger Lake Surface devices using ithc (such as the Surface Pro 7+ and Surface Pro 8), the kernel driver creates raw input nodes under /dev/input/ alongside the clean virtual devices created by iptsd (IPTSD Virtual Touchscreen / IPTSD Virtual Stylus).

These raw HID nodes declare a 16:9 geometry (which does not match the 3:2 panel on Surface Pro devices) and can cause libinput to receive duplicate touch events or incorrectly scaled raw inputs alongside iptsd.

Proposed Udev Rule

To ensure libinput ignores the raw ithc nodes and exclusively processes the calibrated virtual devices from iptsd, the following udev rule can be installed (e.g. in 50-iptsd.rules.in or as a standalone configuration):

# Hide raw Intel Touch Host Controller HID input nodes from libinput
SUBSYSTEM=="input", ATTRS{name}=="Intel Touch Host Controller*", \
  ENV{ID_INPUT}="", ENV{ID_INPUT_TOUCHSCREEN}="", ENV{ID_INPUT_TABLET}=""

Verification

  • Tested on Microsoft Surface Pro 7+ (Fedora 44, kernel 6.19.8-surface, iptsd).
  • Result: Raw input nodes are ignored by libinput while IPTSD Virtual Touchscreen and IPTSD Virtual Stylus continue working with 100% precision and correct 3:2 aspect ratio.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions