Share via


Digitizer Display Mapping

This section describes how a Windows touch or pen digitizer can be automatically mapped to the appropriate display, for Windows 10 and later operating systems. The approach for automatically mapping the digitizer and its display differs for internal vs. external displays.

External displays

Windows will match external digitizers and displays using their Container ID, so both devices must report the same value.

The digitizer's Container ID can be specified using using the Microsoft OS ContainerID descriptor, and the recommended approach on the display side is to use the EDID extension for head-mounted and specialized monitors to directly report the matching Container ID. This approach does not require any new/additional drivers.

If the display uses this EDID extension, the extension's data block must specify the following data values in addition to the Container ID:

  • The Version field must be 0x3 (Windows support for this version was added in Windows 10, version 1903)
  • The Desktop usage flag must be set to 0x1
  • The Third-party usage flag must be set to 0x0
  • The Display product primary use case field must NOT be set to 0x7 or 0x8

Note

If the user has multiple touch/pen-enabled displays of the same make and model connected, it is important that each display has a different Container ID, to ensure that each of the digitizers is properly mapped to the appropriate display. If multiple devices share the same Container ID, Windows will be unable to map them. The Container ID should be a globally unique value, such as the output of a GUID generator tool. Never report a ContainerID of {00000000-0000-0000-ffff-ffffffffffff} or {00000000-0000-0000-0000-000000000000}.

There are some circumstances where it may not be viable to report the matching Container ID via EDID and therefore an alternate mechanism exists that requires a third-party display driver. The driver would handle the DXGKDDI_GET_CHILD_CONTAINER_ID callback function to report the matching Container ID.

If there is a single external display, Windows will map it to any digitizer also marked as external - no other properties need to match. Matching by Container ID is only necessary when there are multiple external displays, even if not all of them are touch/pen-enabled. Therefore mismatched Container IDs may only be noticed by end users if multiple external displays are connected - in this scenario, Windows will map the digitizer to the primary display and display-specific properties that may impact mapping pointer coordinates will not be used.

Internal displays

If there is a single internal display, the only requirement is that the digitizer is also marked as internal - no other properties need to match.

When there are multiple internal displays, Windows will match digitizers to their display using their ACPI Physical Location Description (_PLD) configuration. In order for the mapping to occur, the digitizer and display must match:

  1. Their Container IDs (typically this is the "internal" Container ID)
  2. Their _PLD CabinetNumber value (or if only _PLD v1 is supported, their Lid and Dock values)
  3. Their _PLD Panel value

User overrides

Windows allows a user to override their digitizer's display mapping by opening Control Panel > Hardware and Sound > Tablet PC Settings, then clicking Setup.... This utility should only be used as a way to fix issues with existing hardware - new hardware that follows the above guidance will not need this utility.

Container IDs

Container ID support for displays

EDID extension for head-mounted and specialized monitors

DXGKDDI_GET_CHILD_CONTAINER_ID callback function

USB ContainerIDs in Windows

Using Microsoft OS Container ID Descriptors

ACPI _PLD Specification