Compartir a través de


Colecciones HID de nivel superior requeridas (touchscreen-required-hid-top-level-collections)

En este tema se describen las colecciones de nivel superior HID necesarias que se usan para los informes de panel táctil en Windows 10 y sistemas operativos posteriores.

Un dispositivo de pantalla táctil de Windows debe exponer, como mínimo, la colección de nivel superior obligatoria única para los informes táctiles. También se puede implementar una colección opcional (recomendada) para las actualizaciones de firmware.

En el diagrama siguiente se muestran las colecciones de HID para un dispositivo de pantalla táctil de Windows.

Diagrama en el que se muestran las colecciones HID para un dispositivo de pantalla táctil de Windows. La imagen indica la compatibilidad con una colección de actualizaciones de firmware específica del proveedor.

Colección de pantallas táctiles de Windows

En Windows 10, un dispositivo con pantalla táctil puede usar el protocolo HID para proporcionar una colección de nivel superior que aparece como un digitalizador/pantalla táctil (página 0x0D, uso 0x04).

La colección de pantalla táctil de Windows proporciona informes de múltiples contactos al host, así como información del dispositivo que pertenece a esos informes. La colección debe admitir un informe de entrada obligatorio con información de contacto y un informe de características con el número máximo de contactos que admite el digitalizador. Se puede implementar un informe de características opcional (muy recomendado) para obtener sugerencias de modo de latencia del host y lograr el consumo de energía reducido en dispositivos USB en modo de suspensión. Por último, se puede implementar un informe de características opcional (pero recomendado) para comunicar el estado de certificación.

Informes de entrada de pantalla táctil de Windows

Usos de nivel de contacto incluye todos los usos obligatorios y usos opcionales admitidos que pertenecen a cada contacto de digitalizador único que se ha notificado. El host hace los siguientes usos (a través de la colección de pantallas táctiles de Windows) para extraer datos de contacto de un informe de entrada.

Miembro Descripción Página ID Obligatorio/Opcional
ID de contacto Identifica de forma única el contacto dentro de un marco determinado. 0x0D 0x51 Mandatory
X Coordenada X de la posición de contacto. 0x01 0x30

Obligatorio para T

Opcional para c

Y Coordenada Y de la posición de contacto. 0x01 0x31

Obligatorio para T

Opcional para C

Sugerencia Se debe establecer si el contacto está en la superficie del digitalizador. 0x0D 0x42 Mandatory
Confianza Se debe establecer cuando un contacto es demasiado grande para ser un dedo. 0x0D 0x47 Opcionales
Ancho Ancho del cuadro delimitador alrededor de un contacto. 0x0D 0x48 Opcionales
Alto Altura del cuadro delimitador alrededor de un contacto. 0x0D 0x49 Opcionales
Presión Cantidad de presión que el usuario está aplicando al punto de contacto. 0x0D 0x30 Opcionales
Azimuth Rotación en sentido contrario a las agujas del reloj del cursor sobre el eje Z. 0x0D 0x3F Opcionales

En la tabla siguiente, se muestran todos los usos obligatorios de nivel de informe que deben estar presentes en todos los informes de entrada de un dispositivo con pantalla táctil de Windows.

Miembro Descripción Página ID Obligatorio/Opcional
Report ID (Id. de informe) Id. de informe de pantalla táctil de Windows. 0x0D 0x05 Mandatory
Hora del examen Tiempo de examen relativo por fotograma. 0x0D 0x56 Opcionales
Recuento de contactos Número total de contactos que se notifican en un informe determinado. 0x0D 0x54 Mandatory

Cualquier dispositivo que no notifique todos los usos obligatorios en el nivel de contacto o de informe no funcionará como un dispositivo de pantalla táctil de Windows. El host de Windows aplica de manera rigurosa todos los usos obligatorios. Cuando no se ha restringido un valor máximo lógico, se puede optimizar para reducir el tamaño del descriptor.

ID de contacto

El ID de contacto identifica de forma única un contacto en un informe para su ciclo de vida. El ID de contacto debe permanecer constante mientras el dispositivo detecta y notifica el contacto. Cada contacto simultáneo independiente debe tener un identificador único. Los identificadores se pueden reutilizar después de que el contacto asociado anteriormente ya no se detecte ni notifique. No hay ningún intervalo numérico esperado y los valores que se usan solo están limitados por el máximo lógico especificado en el descriptor.

X/Y

Los valores X e Y informan de las coordenadas de un contacto determinado. Un dispositivo puede notificar dos puntos para cada contacto. El primer punto (conocido como T) se considera el punto que el usuario tenía previsto tocar, mientras que el segundo punto (conocido como C) se considera el centro del contacto. Los dispositivos que son capaces de notificar T y C deben tener una matriz de uso de dos valores X y dos valores Y. Los valores de la primera posición de las matrices se interpretan como las coordenadas de T y los valores de la segunda posición se interpretan como coordenadas para C. El recuento de informes para ambos usos es 2, para indicar la presencia de una matriz de uso.

Los dispositivos que notifican C también deben notificar los usos de ancho y alto. El host usa C para crear el rectángulo delimitador alrededor del contacto. Si el dispositivo solo notifica un par X e Y, el host usa ese par para T y C. El descriptor táctil de ejemplo incluye matrices de uso para X e Y.

Un dispositivo que solo informa de T, no debe tener una matriz de uso para las propiedades X e Y. En otras palabras, el recuento de informes para cada uso es 1, tal como se indica en los siguientes extractos del descriptor de ejemplo. Los extractos también muestran la diferencia entre un dispositivo que solo admite T y un dispositivo que admite T y C.

    0x05, 0x01,                         //       USAGE_PAGE (Generic Desk..
    0x26, 0xff, 0x0f,                   //       LOGICAL_MAXIMUM (4095)
    0x75, 0x10,                         //       REPORT_SIZE (16)
    0x55, 0x0e,                         //       UNIT_EXPONENT (-2)
    0x65, 0x13,                         //       UNIT(Inch,EngLinear)
    0x09, 0x30,                         //       USAGE (X)
    0x35, 0x00,                         //       PHYSICAL_MINIMUM (0)
    0x46, 0xb5, 0x04,                   //       PHYSICAL_MAXIMUM (1205)
    0x95, 0x01,                         //       REPORT_COUNT (1)
    0x81, 0x02,                         //       INPUT (Data,Var,Abs)
    0x46, 0x8a, 0x03,                   //       PHYSICAL_MAXIMUM (906)
    0x09, 0x31,                         //       USAGE (Y)
    0x81, 0x02,                         //       INPUT (Data,Var,Abs)

Un dispositivo que admite T y C, usa matrices de uso para informar de los valores X e Y. El recuento de informes para X e Y es 2.

    0x05, 0x01,                         //       USAGE_PAGE (Generic Desk..
    0x26, 0xff, 0x0f,                   //       LOGICAL_MAXIMUM (4095)
    0x75, 0x10,                         //       REPORT_SIZE (16)
    0x55, 0x0e,                         //       UNIT_EXPONENT (-2)
    0x65, 0x13,                         //       UNIT(Inch,EngLinear)
    0x09, 0x30,                         //       USAGE (X)
    0x35, 0x00,                         //       PHYSICAL_MINIMUM (0)
    0x46, 0xb5, 0x04,                   //       PHYSICAL_MAXIMUM (1205)
    0x95, 0x02,                         //       REPORT_COUNT (2)
    0x81, 0x02,                         //       INPUT (Data,Var,Abs)
    0x46, 0x8a, 0x03,                   //       PHYSICAL_MAXIMUM (906)
    0x09, 0x31,                         //       USAGE (Y)
    0x81, 0x02,

Nota: Estos ejemplos aprovechan la regla HID que los elementos globales permanecen iguales para cada elemento principal, hasta que se cambian. Esto permite que los usos de X e Y compartan solo una entrada para el recuento de informes.

Se especificarán los siguientes elementos globales para los usos X e Y:

  • Mínimo lógico

  • Máximo lógico

  • Mínimo físico

  • Máximo físico

  • Unidad

  • Exponente de la unidad

El intervalo físico del dispositivo y las unidades deben notificarse con precisión. Si la información es inexacta, el dispositivo no funcionará correctamente. Los dispositivos también deben informar de datos dentro del rango lógico que se especifica en el descriptor de informe. Cualquier valor notificado fuera de este intervalo se considerará datos no válidos y el valor se cambiará al valor de límite más cercano (mínimo lógico o máximo lógico).

Sugerencia

El conmutador de la punta se usa para indicar cuándo el contacto está en la superficie o ha dejado la superficie del digitalizador. Esto se indica mediante un elemento principal con un tamaño de informe de 1 bit. Al entregar un informe de contacto, el bit debe estar activo cuando el contacto se ubica en la superficie del digitalizador y sin marcar cuando el contacto ha dejado la superficie.

Cuando se notifica un contacto con el conmutador de la punta sin tener esta marcas, la ubicación (X, Y) que se notifica debe ser la misma que la última posición notificada con el conmutador de la punta preparado.

Diagrama que muestra la secuencia de contactos para 2 contactos con elevación separada.

Como se muestra en el diagrama anterior, se colocan dos contactos en una pantalla táctil de Windows. Algún tiempo después, el primer contacto se levanta mientras el segundo permanece en la superficie. Esto se indicará como se describe en la siguiente tabla.

Informe 1 2 3 4 5 6 7 8 9 10 11
Cuenta de contactos 2 2 2 2 2 2 1 1 1 1 1
Contacto 1: interruptor de la punta 1 1 1 1 1 0 NR NR NR NR NR
Contacto 1: X, Y X₁, Y₁ X₂, Y₂ X₃, Y₃ X₄, Y₄ X₅, Y₅ X₆, Y₆ NR NR NR NR NR
Contacto 2: interruptor de la punta 1 1 1 1 1 1 1 1 1 1 0
Contacto 2: X, Y X₁, Y₁ X₂, Y₂ X₃, Y₃ X₄, Y₄ X₅, Y₅ X₆, Y₆ X₇, Y₇ X₈, Y₈ X₉, Y₉ X₁₀, Y₁₀ X₁₁, Y₁₁

La tabla anterior muestra la secuencia de informes para dos contactos con elevación separada (híbrido de dos dedos).

Confidence

La confianza es una sugerencia del dispositivo sobre si el contacto táctil fue un toque accidental o previsto. Si está seguro de que la función táctil es intencionada, establezca el uso de confianza en 1 (true) durante la interacción, incluida la elevación (cuando se borra el conmutador de punta). El dispositivo debe rechazar los toques accidentales tan exhaustivamente como pueda, mientras que la latencia permanecerá dentro del intervalo necesario. Si no está seguro de que la función táctil sea intencionada y el dispositivo no ha rechazado la entrada táctil como accidental, cambie el uso de confianza a 0 (false), lo que permitirá al sistema operativo cancelar el contacto táctil según sea necesario. Si el dispositivo siempre rechaza los toques accidentales, no es necesario incluir el uso de confianza.

Width y Height

Los usos de ancho y alto representan la anchura y la altura del cuadro delimitador alrededor del contacto táctil. Los valores notificados nunca deben ser cero (0), excepto cuando se notifica un evento "UP", en cuyo caso deben ser cero (0).

Presión

La presión es una medida de la fuerza que el dedo ejerce contra la superficie del digitalizador. No hay restricciones en el intervalo permitido para la presión.

Azimuth

Azimuth especifica el giro en sentido contrario del reloj del cursor alrededor del eje Z a través de un intervalo circular completo. Se debe especificar el rango físico y el lógico. El intervalo físico debe ser de 0 a 360 o equivalente en radianes, pero el dispositivo puede notificar el intervalo completo o la mitad del intervalo suponiendo que los puntos suspensivos táctiles son simétricos en función de las funcionalidades de hardware. El intervalo lógico debe ser lo suficientemente grande como para entregar datos que sean precisos para al menos dos posiciones decimales.

Hora del examen

El tiempo del examen informa del tiempo relativo del digitalizador en 100μs unidades. Representa la diferencia desde el primer fotograma que se informó después de que un dispositivo comience a notificar datos posteriores a un período de inactividad. La primera hora de examen recibida se trata como una hora base para las horas notificadas posteriores. Las diferencias entre los tiempos de examen notificados deben reflejar la frecuencia de digitalización del digitalizador. Es importante tener en cuenta que, a diferencia de otros usos, el host no permite ninguna flexibilidad a la unidad para el uso del tiempo de examen si se implementa. Debe estar en unidades de 100μs. Se espera que el valor se resuma, ya que solo se asignan 2 bytes al contador.

El valor de tiempo de examen debe ser el mismo para todos los contactos dentro de un marco.

Recuento de contactos

El recuento de contactos se usa para indicar el número de contactos que se notifican en un marco determinado, independientemente de los conmutadores de punta con los que estén asociados los contactos.

Informes de características de pantalla táctil de Windows

El host hace los siguientes usos (a través de la colección de pantallas táctiles de Windows) para extraer datos de contacto de un informe de entrada.

Informe de características del recuento máximo de contactos

Este informe especifica el número total de contactos compatibles con un dispositivo multitáctil. Un dispositivo de pantalla táctil de Windows debe notificar este valor a través de la especificación del número máximo de contactos (página 0x0D, uso 0x55) en el informe de características del recuento máximo de contactos. Durante la generación de informes de datos, un dispositivo no debe notificar más contactos que el número máximo de contactos. Durante la generación de informes de datos, un dispositivo no debe notificar más contactos que el número máximo de la Cuenta de contactos. Si un marco de entrada contiene más contactos que el máximo, el host descartará todo el marco, incluidos los datos de los contactos notificados anteriormente. Para una mejor experiencia de usuario, el dispositivo debe suprimir la notificación de cualquier nuevo contacto detectado después de que se haya alcanzado el número máximo durante la vida útil del nuevo contacto, incluso si alguno de los contactos existentes se marcha. Se puede seguir informando de los contactos existentes y, si alguno se marcha, los contactos recién llegados pueden ocupar su lugar.

Informe de características del estado de certificación del dispositivo

Cuando un dispositivo supera los requisitos de compatibilidad, Microsoft emite un blob binario firmado criptográficamente (conocido como blob THQA) al fabricante del dispositivo. El fabricante colocará este blob en el firmware del dispositivo antes de la producción. Cuando un dispositivo táctil intenta conectarse, el sistema operativo de Windows comprobará la firma. Windows solo lo hará para los dispositivos que exponen el informe de características de THQA en su descriptor.

Nota: La notificación de un blob válido y certificado al host es opcional en Windows 10, pero necesario para la retrocompatibilidad en Windows 8 y Windows 8.1. Un dispositivo con un blob THQA incluirá la frase "Compatibilidad completa con Windows Touch" en el panel de control. Un dispositivo sin un blob THQA certificado indicará la frase "Compatibilidad con Windows Touch" en el panel de control.

El blob en sí constará de 256 bytes de datos binarios y se deberá informar como se ilustra en el siguiente descriptor de HID. Los fabricantes de dispositivos deben asegurarse de que, antes de la emisión del blob binario firmado de Microsoft, el blob de ejemplo proporcionado a continuación se presente para Windows en su lugar.

    0x06, 0x00, 0xff,                   //     USAGE_PAGE (Vendor Defined)
    0x09, 0xC5,                         //     USAGE (Vendor Usage 0xC5)
    0x15, 0x00,                         //     LOGICAL_MINIMUM (0)
    0x26, 0xff, 0x00,                   //     LOGICAL_MAXIMUM (0xff)
    0x75, 0x08,                         //     REPORT_SIZE (8)
    0x96, 0x00, 0x01,                   //     REPORT_COUNT (0x100 (256

A continuación se muestra el blob de ejemplo en texto no cifrado.

0xfc, 0x28, 0xfe, 0x84, 0x40, 0xcb, 0x9a, 0x87, 0x0d, 0xbe, 0x57, 0x3c, 0xb6, 0x70, 0x09, 0x88,
0x07, 0x97, 0x2d, 0x2b, 0xe3, 0x38, 0x34, 0xb6, 0x6c, 0xed, 0xb0, 0xf7, 0xe5, 0x9c, 0xf6, 0xc2,
0x2e, 0x84, 0x1b, 0xe8, 0xb4, 0x51, 0x78, 0x43, 0x1f, 0x28, 0x4b, 0x7c, 0x2d, 0x53, 0xaf, 0xfc,
0x47, 0x70, 0x1b, 0x59, 0x6f, 0x74, 0x43, 0xc4, 0xf3, 0x47, 0x18, 0x53, 0x1a, 0xa2, 0xa1, 0x71,
0xc7, 0x95, 0x0e, 0x31, 0x55, 0x21, 0xd3, 0xb5, 0x1e, 0xe9, 0x0c, 0xba, 0xec, 0xb8, 0x89, 0x19,
0x3e, 0xb3, 0xaf, 0x75, 0x81, 0x9d, 0x53, 0xb9, 0x41, 0x57, 0xf4, 0x6d, 0x39, 0x25, 0x29, 0x7c,
0x87, 0xd9, 0xb4, 0x98, 0x45, 0x7d, 0xa7, 0x26, 0x9c, 0x65, 0x3b, 0x85, 0x68, 0x89, 0xd7, 0x3b,
0xbd, 0xff, 0x14, 0x67, 0xf2, 0x2b, 0xf0, 0x2a, 0x41, 0x54, 0xf0, 0xfd, 0x2c, 0x66, 0x7c, 0xf8,
0xc0, 0x8f, 0x33, 0x13, 0x03, 0xf1, 0xd3, 0xc1, 0x0b, 0x89, 0xd9, 0x1b, 0x62, 0xcd, 0x51, 0xb7,
0x80, 0xb8, 0xaf, 0x3a, 0x10, 0xc1, 0x8a, 0x5b, 0xe8, 0x8a, 0x56, 0xf0, 0x8c, 0xaa, 0xfa, 0x35,
0xe9, 0x42, 0xc4, 0xd8, 0x55, 0xc3, 0x38, 0xcc, 0x2b, 0x53, 0x5c, 0x69, 0x52, 0xd5, 0xc8, 0x73,
0x02, 0x38, 0x7c, 0x73, 0xb6, 0x41, 0xe7, 0xff, 0x05, 0xd8, 0x2b, 0x79, 0x9a, 0xe2, 0x34, 0x60,
0x8f, 0xa3, 0x32, 0x1f, 0x09, 0x78, 0x62, 0xbc, 0x80, 0xe3, 0x0f, 0xbd, 0x65, 0x20, 0x08, 0x13,
0xc1, 0xe2, 0xee, 0x53, 0x2d, 0x86, 0x7e, 0xa7, 0x5a, 0xc5, 0xd3, 0x7d, 0x98, 0xbe, 0x31, 0x48,
0x1f, 0xfb, 0xda, 0xaf, 0xa2, 0xa8, 0x6a, 0x89, 0xd6, 0xbf, 0xf2, 0xd3, 0x32, 0x2a, 0x9a, 0xe4,
0xcf, 0x17, 0xb7, 0xb8, 0xf4, 0xe1, 0x33, 0x08, 0x24, 0x8b, 0xc4, 0x43, 0xa5, 0xe5, 0x24, 0xc2

Informe de características del modo de latencia

Nota: Windows 10, la versión 1511 y los sistemas operativos anteriores no emiten actualmente este informe de características HID a los dispositivos de lápiz o pantalla táctil que proporcionan soporte técnico para ello. Sin embargo, al agregar compatibilidad con el informe de características del modo de latencia a un dispositivo, se asegurará de que el dispositivo esté listo para la fecha futura cuando Windows lo admita en dispositivos de lápiz y pantalla táctil.

El host envía el informe de características del modo de latencia a un dispositivo de pantalla táctil de Windows para indicar cuándo es preferible una latencia alta para ahorrar energía y cuándo lo es una latencia normal para un buen funcionamiento. En el caso de los dispositivos del pantalla táctil de Windows conectados por USB, esto permite que el dispositivo distinga entre suspenderse debido a inactividad (tiempo de ejecución IDLE, es decir, inactivo) y debido a que el sistema entra en el modo de espera S3 o Connected Standby.

El modo de latencia se indicará mediante el valor del uso del modo de latencia (página 0x0D, uso 0x60) en el informe de características del modo de latencia.

Valor del modo de latencia Modo de latencia
0 Latencia normal
1 Latencia alta

Colección de actualizaciones del firmware (opcional)

Un dispositivo de pantalla táctil de Windows puede usar el protocolo HID para proporcionar una colección de nivel superior específica del proveedor para realizar actualizaciones del firmware del dispositivo y de la configuración del proveedor.

La recopilación de actualizaciones de firmware específicas del proveedor puede proporcionar un informe de salida para transferir la carga útil del firmware del host al dispositivo.

Esto supone una gran ventaja, ya que permite que las actualizaciones de firmware se realicen sin necesidad de un controlador en el host. Es obligatorio que el atributo de dispositivo wVersionID se incremente después de una actualización de firmware.

Un dispositivo de pantalla táctil de Windows debe ser capaz de recuperarse de una actualización de firmware que produjo un error debido a la pérdida de energía (o algún otro error), si se apaga y, a continuación, vuelve a aplicar su fuente de alimentación. Se recomienda encarecidamente que la funcionalidad básica esté disponible incluso después de una actualización de firmware con errores.