Сопоставление дисплея дигитайзера

В этом разделе описывается, как сенсорный или перо-дигитайзер Windows можно автоматически сопоставить с соответствующим дисплеем для операционных систем Windows 10 и более поздних версий. Подход для автоматического сопоставления дигитайзера и его отображения отличается для внутренних и внешних дисплеев.

Внешние отображения

Windows сопоставляет внешние дигитайзеры и дисплеи по идентификатору контейнера, поэтому оба устройства должны сообщать об одном и том же значении.

Идентификатор контейнера дигитайзера можно указать с помощью дескриптора Microsoft OS ContainerID, а рекомендуемый подход на стороне дисплея — использовать расширение EDID для подключенных к голове и специализированных мониторов, чтобы напрямую сообщать об соответствующем идентификаторе контейнера. Этот подход не требует новых или дополнительных драйверов.

Если в дисплее используется это расширение EDID, блок данных расширения должен указать следующие значения данных в дополнение к идентификатору контейнера:

  • Поле версии должно быть 0x3 (поддержка Windows для этой версии была добавлена в Windows 10 версии 1903)
  • Флаг использования рабочего стола должен иметь значение 0x1
  • Для флага стороннего использования необходимо задать значение 0x0
  • Поле основного варианта использования отображаемого продуктане должно быть задано как 0x7 или 0x8

Замечание

Если у пользователя подключено несколько дисплеев с поддержкой сенсорного и перьевого ввода одной марки и модели, важно, чтобы каждый дисплей имел уникальный идентификатор контейнера, чтобы гарантировать правильное сопоставление каждого дигитайзера с соответствующим дисплеем. Если несколько устройств используют один и тот же идентификатор контейнера, Windows не сможет сопоставить их. Идентификатор контейнера должен быть глобально уникальным значением, например результатом генератора GUID. Никогда не сообщайте идентификатор контейнера {000000000-0000-0000-ffffff-ffffffffff} или {00000000-0000-0000-0000-000000000000}.

Существуют некоторые обстоятельства, в которых может быть невозможно сообщить соответствующий идентификатор контейнера через EDID, поэтому альтернативный механизм существует, требующий стороннего драйвера отображения. Драйвер будет обрабатывать функцию обратного вызова DXGKDDI_GET_CHILD_CONTAINER_ID , чтобы сообщить соответствующий идентификатор контейнера.

Если имеется один внешний дисплей, Windows сопоставляет его с любым дигитайзером, также помеченным как внешний - другие свойства не должны соответствовать. Сопоставление по идентификатору контейнера необходимо только при наличии нескольких внешних дисплеев, даже если не все из них поддерживают сенсорное или перьевое управление. Поэтому несогласованные идентификаторы контейнеров могут быть замечены только конечными пользователями, если несколько внешних дисплеев подключены . В этом сценарии Windows сопоставляет дигитайзер с основным отображением и свойствами отображения, которые могут повлиять на координаты указателя сопоставления, не будут использоваться.

Внутренние экраны

Если имеется один внутренний дисплей, единственное требование заключается в том, что дигитайзер также помечается как внутренний - другие свойства не должны соответствовать.

При наличии нескольких внутренних дисплеев Windows будет соответствовать дигитайзерам с их отображением с помощью конфигурации описания физического расположения ACPI (_PLD). Чтобы произошло сопоставление, дигитайзер и дисплей должны совпадать:

  1. Идентификаторы контейнеров (обычно это внутренний идентификатор контейнера)
  2. Их значение _PLD CabinetNumber (или, если поддерживается только _PLD версии 1, их значения Lid и Dock)
  3. Значение их _PLD Панели

Пользовательские переопределения

Windows позволяет пользователю изменить привязку дисплея дигитайзера, открыв Панель управления > Оборудование и звук > Параметры планшетного ПК, затем нажав "Настройка...". Эта утилита должна использоваться только для устранения проблем с существующим оборудованием — новое оборудование, которое соответствует приведенным выше рекомендациям, не потребует этой утилиты.

Идентификаторы контейнеров

Поддержка идентификатора контейнера для отображения

Расширение EDID для подключенных к голове и специализированных мониторов

функция обратного вызова DXGKDDI_GET_CHILD_CONTAINER_ID

USB ContainerID в Windows

Использование дескрипторов идентификатора контейнера ОС Майкрософт

Спецификация _PLD ACPI