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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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