Collections de niveau supérieur IHM requises (touchscreen-required-hid-top-level-collections)

Cette rubrique décrit les collections de niveau supérieur IHM requises qui sont utilisées pour la création de rapports sur l’écran tactile dans les systèmes d’exploitation Windows 10 et ultérieurs.

Un périphérique Écran tactile Windows doit exposer, au minimum, la collection de niveau supérieur obligatoire unique pour le signalement d’entrée tactile. Une collection facultative (mais recommandée) pour les mises à jour du microprogramme peut également être implémentée.

Le diagramme suivant montre les collections IHM pour un périphérique Écran tactile Windows.

Diagramme montrant les collections IHM pour un périphérique Écran tactile Windows. L’image indique la prise en charge d’une collection de mises à jour de microprogramme propre au fournisseur.

Collection Écran tactile Windows

Dans Windows 10 un périphérique Écran tactile peut utiliser le protocole IHM pour fournir une collection de niveau supérieur qui apparaît sous la forme d’un numériseur/écran tactile (Page 0x0D, Usage 0x04).

La collection Écran tactile Windows fournit des signalements multi-contacts à l’hôte, ainsi que des informations sur le périphérique qui se rapportent à ces signalements. La collection doit prendre en charge un signalement d’entrée obligatoire avec des informations de contact, et un signalement de fonctionnalité avec le nombre maximal de contacts pris en charge par le numériseur. Un signalement de fonctionnalité facultatif (mais fortement recommandé) peut être implémenté pour obtenir des indicateurs de mode de latence de la part de l’hôte, afin d’obtenir une consommation d’énergie réduite sur les périphériques USB en mode veille. Pour finir, un signalement de fonctionnalité facultatif (mais recommandé) peut être implémenté pour communiquer l’état de la certification.

Signalements d’entrée Écran tactile Windows

Les usages de niveau de contact inclut tous les usages obligatoires et facultatifs pris en charge qui se rapportent à chaque contact de numériseur unique signalé. L’hôte utilise les usages suivants (via la collection Écran tactile Windows) pour extraire les données de contact à partir d’un signalement d’entrée.

Membre Description Page id Obligatoire/facultatif
Contact ID Identifie de manière unique le contact dans un cadre donné. 0x0D 0x51 Obligatoire
X Coordonnée X de la position du contact. 0x01 0x30

Obligatoire pour T

Facultatif pour C

O Coordonnée Y de la position de contact. 0x01 0x31

Obligatoire pour T

Facultatif pour C

Conseil Défini, si le contact se trouve sur la surface du numériseur. 0x0D 0x42 Obligatoire
Confiance Défini, lorsqu’un contact est trop grand pour être un doigt. 0x0D 0x47 Facultatif
Largeur Largeur du rectangle englobant autour d’un contact. 0x0D 0x48 Facultatif
Hauteur Hauteur du rectangle englobant autour d’un contact. 0x0D 0x49 Facultatif
Pression Quantité de pression appliquée par l’utilisateur au point de contact. 0x0D 0x30 Facultatif
Azimuth Rotation dans le sens inverse des aiguilles d’une montre du curseur autour de l’axe Z. 0x0D 0x3F Facultatif

Le tableau suivant présente tous les usages obligatoires au niveau signalement qui doivent être présents dans tous les signalements d’entrée pour un périphérique Écran tactile Windows.

Membre Description Page id Obligatoire/facultatif
ID du rapport ID de signalement Écran tactile Windows. 0x0D 0x05 Obligatoire
Heure de l’analyse Durée de numérisation relative par trame. 0x0D 0x56 Facultatif
Nombre de contacts Nombre total de contacts signalés dans un signalement donné. 0x0D 0x54 Obligatoire

Tout périphérique qui ne signale pas tous les usages obligatoires au niveau contact ou signalement ne sera pas fonctionnel en tant que périphérique Écran tactile Windows. Les utilisations obligatoires sont strictement appliquées par l’hôte Windows. Lorsqu’une valeur maximale logique n’a pas été restreinte, elle peut être optimisée pour réduire la taille du descripteur.

Contact ID

L’ID de contact identifie de manière unique un contact dans un rapport pour son cycle de vie. L’ID de contact doit rester constant pendant que le contact est détecté et signalé par l’appareil. Chaque contact simultané distinct doit avoir un identificateur unique. Les identificateurs peuvent être réutilisés une fois que le contact précédemment associé n’est plus détecté ou signalé. Il n’y a pas de plage numérique attendue, et les valeurs utilisées sont uniquement limitées par le maximum logique spécifié dans le descripteur.

X/Y

X et Y indiquent les coordonnées d’un contact donné. Un périphérique peut signaler deux points pour chaque contact. Le premier point (appelé T) est considéré comme le point que l’utilisateur avait l’intention de toucher, tandis que le deuxième point (appelé C) est considéré comme le centre du contact. Les appareils capables de signaler T et C doivent avoir un tableau d’utilisation de deux valeurs X et deux valeurs Y. Les valeurs de la première position dans les tableaux sont interprétées comme les coordonnées de T, et les valeurs de la deuxième position sont interprétées comme les coordonnées de C. Le nombre de signalements pour les deux usages est 2, afin d’indiquer la présence d’un tableau d’usages.

Les périphériques qui signalent C doivent également signaler les usages Width et Height. L’hôte utilise C pour générer le rectangle englobant autour du contact. Si le périphérique ne signale qu’une seule paire X et Y, l’hôte utilise cette paire pour T et C. L’exemple de descripteur tactile inclut des tableaux d’usages pour X et Y.

Un périphérique qui signale uniquement T ne doit pas avoir de tableau d’usages pour les propriétés X et Y. En d’autres termes, le nombre de signalements pour chaque usage est de 1, comme indiqué dans les extraits suivants de l’exemple de descripteur. Les extraits illustrent également la différence entre un périphérique qui prend uniquement en charge T et un périphérique qui prend en charge T et 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 périphérique qui prend en charge T et C utilise des tableaux d’usages pour signaler les valeurs X et Y. Le nombre de signalements pour X et Y est 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,

Remarque Ces exemples tirent parti de la règle IHM selon laquelle les éléments globaux restent identiques pour chaque élément principal, jusqu’à ce qu’ils soient modifiés. Cela permet aux usages X et Y de partager une seule entrée pour le nombre de signalements.

Les éléments globaux suivants doivent être spécifiés pour les utilisations de X et Y :

  • Minimum logique

  • Maximum logique

  • Minimum physique

  • Maximum physique

  • Unité

  • Exposant d’unité

La plage physique de l’appareil et les unités doivent être signalées avec précision. Si les informations sont inexactes, l’appareil ne fonctionnera pas correctement. Les appareils doivent également signaler des données dans la plage logique spécifiée dans le descripteur de rapport. Toute valeur signalée en dehors de cette plage sera considérée comme donnée non valide, et la valeur sera remplacée par la valeur limite la plus proche (valeur minimale logique ou maximale logique).

Conseil

Le commutateur de pointe est utilisé pour indiquer quand le contact est sur la surface ou a quitté la surface du numériseur. Cela est indiqué par un élément principal avec une taille de rapport de 1 bit. Lors de la remise d’un rapport de contact, le bit doit être défini lorsque le contact se trouve sur la surface du numériseur et effacé lorsque le contact a quitté la surface.

Lorsqu’un contact est signalé avec le commutateur de pointe effacé, l’emplacement X/Y signalé doit être identique à la dernière position signalée avec le commutateur de pointe défini.

Diagramme montrant la séquence de contacts pour deux contacts avec levée séparée.

Comme indiqué dans le diagramme précédent, deux contacts sont placés sur un Écran tactile Windows. Quelque temps plus tard, le premier contact est levé tandis que le second reste à la surface. Cela serait signalé comme décrit dans le tableau suivant.

Rapport 1 2 3 4 5 6 7 8 9 10 11
Nombre de contacts 2 2 2 2 2 2 1 1 1 1 1
Contact 1 : commutateur de pointe 1 1 1 1 1 0 NR NR NR NR NR
Contact 1 : X,Y X₁, Y₁ X₂,Y₂ X₃, Y₃ X₄, Y₄ X₅, Y₅ X₆, Y₆ NR NR NR NR NR
Contact 2 : commutateur de pointe 1 1 1 1 1 1 1 1 1 1 0
Contact 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₁₁

Le tableau précédent montre la séquence de signalements pour deux contacts avec levée séparée (hybride à deux doigts).

Confidence

La confiance est une suggestion du périphérique indiquant si le contact tactile était prévu ou accidentel. Si vous êtes certain que l’interaction tactile est prévue, définissez l’usage de confiance sur 1 (true) pour la durée de l’interaction, y compris la levée (lorsque le commutateur de pointe est effacé). Votre périphérique doit rejeter les touches accidentelles le plus minutieusement possible, tandis que la latence reste dans la plage requise. Si vous n’êtes pas certain que l’interaction tactile soit prévue, et que votre périphérique n’a pas rejeté l’interaction tactile comme étant accidentelle, modifiez l’usage de confiance sur 0 (false), afin de permettre au système d’exploitation d’annuler le contact tactile en fonction des besoins. Si votre périphérique rejette toujours les interactions accidentelles, vous n’avez pas besoin d’inclure l’usage de confiance.

Width et Height

Les usages Width et Height représentent la largeur et la hauteur du rectangle englobant autour du contact tactile. Les valeurs signalées ne doivent jamais être égales à zéro (0), sauf lorsqu’un événement « HAUT » est signalé, auquel cas elles doivent être égales à zéro (0).

Pression

La pression est une mesure de la force exercée par le doigt sur la surface du numériseur. Il n’y a aucune restriction concernant la plage autorisée pour la pression.

Azimuth

Azimuth spécifie la rotation dans le sens inverse des aiguilles d’une montre du curseur autour de l’axe Z à travers une plage circulaire complète. La plage physique et la plage logique doivent être spécifiées. La plage physique doit être comprise entre 0 et 360 ou équivalent en radians, mais le périphérique peut signaler la plage complète ou la moitié de la plage en supposant que l’ellipse tactile soit symétrique en fonction des fonctionnalités matérielles. La plage logique doit être suffisamment grande pour fournir des données précises, à au moins deux décimales.

Heure d’analyse

Le temps d’analyse indique le temps relatif du numériseur en unités de 100 μs. Il représente le delta par rapport à la première image qui a été signalée après qu’un appareil a commencé à signaler des données après une période d’inactivité. L’heure de la première analyse reçue est traitée comme une heure de base pour les heures signalées suivantes. Les deltas entre les heures d’analyse signalées doivent refléter la fréquence d’analyse du numériseur. Il est important de noter que contrairement à d’autres usages, l’hôte n’offre aucune flexibilité concernant l’unité pour l’usage de durée de numérisation s’il est implémenté. Il doit être en unités de 100 μs. La valeur est censée être remplacée, car seuls 2 octets sont alloués au compteur.

La valeur de temps d’analyse doit être la même pour tous les contacts au sein d’une trame.

Nombre de contacts

Le nombre de contacts est utilisé pour indiquer le nombre de contacts signalés dans une trame donnée, quels que soient les commutateurs de pointe auxquels les contacts sont associés.

Signalements de fonctionnalité Écran tactile Windows

L’hôte utilise les usages suivants (via la collection Écran tactile Windows) pour extraire les données de contact à partir d’un signalement d’entrée.

Signalement de fonctionnalité sur le nombre maximal de contacts

Ce signalement spécifie le nombre total de contacts pris en charge par un périphérique multipoint. Un périphérique Écran tactile Windows doit signaler cette valeur via la spécification du nombre maximal de contacts (Page 0x0D, Usage 0x55) dans le signalement de fonctionnalité sur le nombre maximal de contacts. Lors de la création de rapports de données, un appareil ne doit pas signaler plus de contacts que le nombre maximal de contacts. Lors de la création de rapports de données, un périphérique ne doit pas signaler plus de contacts que le Nombre maximal de contacts. Si une trame d’entrée contient plus de contacts que le maximum, l’hôte rejettera la trame entière, y compris les données de tout contact précédemment signalé. Pour une meilleure expérience utilisateur, le dispositif doit supprimer la notification de tout nouveau contact détecté après que le nombre maximum a été atteint, pour la durée de vie du nouveau contact, même si certains contacts existants se retirent. Les contacts existants peuvent continuer à être signalés, et si certains se retirent, les nouveaux contacts entrants peuvent prendre leur place.

Signalement de fonctionnalité sur l’état de certification du périphérique

Lorsqu’un périphérique satisfait les exigences de compatibilité, Microsoft émet un objet blob binaire signé par chiffrement (appelé blob THQA) à l’intention du fabricant du périphérique. Le fabricant placera ce blob dans le micrologiciel de l’appareil avant la production. Lorsqu’un périphérique tactile tente de se connecter, la signature est vérifiée par le système d’exploitation Windows. Windows effectue cette opération uniquement pour les périphériques qui exposent le signalement de fonctionnalité THQA dans leur descripteur.

Remarque Le signalement d’un objet blob certifié valide à l’hôte est facultatif dans Windows 10, mais est nécessaire pour la compatibilité descendante avec Windows 8 et Windows 8.1. Un périphérique avec un objet blob THQA porte la mention « Prise en charge de l’interface tactile Windows intégrale » dans le Panneau de configuration. Un périphérique sans objet blob THQA certifié porte la mention « Prise en charge de l’interface tactile Windows » dans le Panneau de configuration.

L’objet blob lui-même se compose de 256 octets de données binaires, et doit être signalé comme illustré par le descripteur IHM suivant. Les fabricants de périphériques doivent s’assurer qu’avant l’émission de l’objet blob binaire signé à partir de Microsoft, l’exemple d’objet blob fourni ci-dessous soit présenté à Windows à la place.

    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

Voici l’exemple de blob en texte clair.

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

Signalement de fonctionnalité du mode de latence

Remarque Les systèmes d’exploitation Windows 10, version 1511 et antérieures n’émettent actuellement pas ce signalement de fonctionnalité IHM aux périphériques Stylet ou Écran tactile qui fournissent sa prise en charge. Toutefois, l’ajout de la prise en charge du signalement de fonctionnalité du mode de latence à un périphérique permet de s’assurer que celui-ci sera prêt le jour où Windows le prendra en charge sur les périphériques Stylet et Écran tactile.

Le signalement de fonctionnalité du mode de latence est envoyé par l’hôte à un périphérique Écran tactile Windows, afin d’indiquer quand une latence élevée est souhaitable à des fins d’économies d’énergie et, à l’inverse, quand une latence normale est souhaitée pour le fonctionnement. Pour les périphériques Écran tactile Windows connectés par USB, cela permet au périphérique de faire la distinction entre la suspension pour inactivité (runtime IDLE) et la suspension due au fait que le système bascule en veille connectée ou S3.

Le mode de latence doit être indiqué par le biais de la valeur de l’usage du mode de latence (Page 0x0D, Usage 0x60) dans le signalement de fonctionnalité du mode de latence.

Valeur du mode de latence Mode de latence
0 Latence normale
1 Latence élevée

Collection de mises à jour du microprogramme (facultatif)

Un périphérique Écran tactile Windows peut utiliser le protocole IHM pour fournir une collection de niveau supérieur propre au fournisseur afin d’effectuer des mises à jour du microprogramme du périphérique et de la configuration du fournisseur.

La collection de mises à jour de microprogramme spécifiques au fournisseur peut fournir un rapport de sortie pour transférer la charge utile du microprogramme de l’hôte vers l’appareil.

Cela est très avantageux, car cela permet d’effectuer des mises à jour de microprogramme sans nécessiter de pilote sur l’hôte. Il est obligatoire que l'attribut de périphérique wVersionID soit incrémenté après une mise à niveau du microprogramme.

Un périphérique Écran tactile Windows doit être en mesure de récupérer à partir d’une mise à jour du microprogramme qui a échoué en raison d’une perte d’alimentation (ou d’une autre erreur), si vous vous arrêtez, puis réappliquez son alimentation. Il est vivement recommandé que les fonctionnalités de base soient disponibles même après un échec de mise à jour du microprogramme.