Exemples de descripteurs de rapport (pavé tactile-sample-report-descripteurs)
Cette rubrique présente un exemple de descripteur de rapport et des exemples d’extraits de descripteurs pour un appareil avec pavé tactile de précision Windows.
Remarque
Bien que les utilisations spécifiques du fournisseur puissent être utilisées à n’importe quel niveau du rapport, elles doivent être utilisées d’une manière qui peut être implémentée de la même façon dans toutes les méthodes de création de rapports, à savoir, en série, parallèle et hybride. Le non-respect de ces instructions peut ne pas entraîner de défaillance HLK, mais peut entraîner de graves problèmes de compatibilité.
Exemple de descripteur de rapport
Toutes les valeurs et paramètres spécifiés dans l’exemple descripteur suivant sont obligatoires.
//TOUCH PAD input TLC
0x05, 0x0d, // USAGE_PAGE (Digitizers)
0x09, 0x05, // USAGE (Touch Pad)
0xa1, 0x01, // COLLECTION (Application)
0x85, REPORTID_TOUCHPAD, // REPORT_ID (Touch pad)
0x09, 0x22, // USAGE (Finger)
0xa1, 0x02, // COLLECTION (Logical)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x09, 0x47, // USAGE (Confidence)
0x09, 0x42, // USAGE (Tip switch)
0x95, 0x02, // REPORT_COUNT (2)
0x75, 0x01, // REPORT_SIZE (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x02, // REPORT_SIZE (2)
0x25, 0x02, // LOGICAL_MAXIMUM (2)
0x09, 0x51, // USAGE (Contact Identifier)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x04, // REPORT_COUNT (4)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic Desk..
0x15, 0x00, // LOGICAL_MINIMUM (0)
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, 0x90, 0x01, // PHYSICAL_MAXIMUM (400)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x46, 0x13, 0x01, // PHYSICAL_MAXIMUM (275)
0x09, 0x31, // USAGE (Y)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0, // END_COLLECTION
0x55, 0x0C, // UNIT_EXPONENT (-4)
0x66, 0x01, 0x10, // UNIT (Seconds)
0x47, 0xff, 0xff, 0x00, 0x00, // PHYSICAL_MAXIMUM (65535)
0x27, 0xff, 0xff, 0x00, 0x00, // LOGICAL_MAXIMUM (65535)
0x75, 0x10, // REPORT_SIZE (16)
0x95, 0x01, // REPORT_COUNT (1)
0x05, 0x0d, // USAGE_PAGE (Digitizers)
0x09, 0x56, // USAGE (Scan Time)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x09, 0x54, // USAGE (Contact count)
0x25, 0x7f, // LOGICAL_MAXIMUM (127)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x08, // REPORT_SIZE (8)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x09, // USAGE_PAGE (Button)
0x09, 0x01, // USAGE_(Button 1)
0x09, 0x02, // USAGE_(Button 2)
0x09, 0x03, // USAGE_(Button 3)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x03, // REPORT_COUNT (3)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x05, // REPORT_COUNT (5)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x05, 0x0d, // USAGE_PAGE (Digitizer)
0x85, REPORTID_MAX_COUNT, // REPORT_ID (Feature)
0x09, 0x55, // USAGE (Contact Count Maximum)
0x09, 0x59, // USAGE (Pad TYpe)
0x75, 0x04, // REPORT_SIZE (4)
0x95, 0x02, // REPORT_COUNT (2)
0x25, 0x0f, // LOGICAL_MAXIMUM (15)
0xb1, 0x02, // FEATURE (Data,Var,Abs)
0x06, 0x00, 0xff, // USAGE_PAGE (Vendor Defined)
0x85, REPORTID_PTPHQA, // REPORT_ID (PTPHQA)
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))
0xb1, 0x02, // FEATURE (Data,Var,Abs)
0xc0, // END_COLLECTION
//CONFIG TLC
0x05, 0x0d, // USAGE_PAGE (Digitizer)
0x09, 0x0E, // USAGE (Configuration)
0xa1, 0x01, // COLLECTION (Application)
0x85, REPORTID_FEATURE, // REPORT_ID (Feature)
0x09, 0x22, // USAGE (Finger)
0xa1, 0x02, // COLLECTION (logical)
0x09, 0x52, // USAGE (Input Mode)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x0a, // LOGICAL_MAXIMUM (10)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0xb1, 0x02, // FEATURE (Data,Var,Abs
0xc0, // END_COLLECTION
0x09, 0x22, // USAGE (Finger)
0xa1, 0x00, // COLLECTION (physical)
0x85, REPORTID_FUNCTION_SWITCH, // REPORT_ID (Feature)
0x09, 0x57, // USAGE(Surface switch)
0x09, 0x58, // USAGE(Button switch)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x02, // REPORT_COUNT (2)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0xb1, 0x02, // FEATURE (Data,Var,Abs)
0x95, 0x06, // REPORT_COUNT (6)
0xb1, 0x03, // FEATURE (Cnst,Var,Abs)
0xc0, // END_COLLECTION
0xc0, // END_COLLECTION
//MOUSE TLC
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x01, // COLLECTION (Application)
0x85, REPORTID_MOUSE, // REPORT_ID (Mouse)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x02, // USAGE_MAXIMUM (Button 2)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x02, // REPORT_COUNT (2)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x06, // REPORT_COUNT (6)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x75, 0x10, // REPORT_SIZE (16)
0x95, 0x02, // REPORT_COUNT (2)
0x25, 0x0a, // LOGICAL_MAXIMUM (10)
0x81, 0x06, // INPUT (Data,Var,Rel)
0xc0, // END_COLLECTION
0xc0, //END_COLLECTION
Extrait de l’exemple de descripteur de rapport - (rapport des fonctionnalités du mode latence)
L’extrait suivant provient du descripteur de la collection de haut niveau du pavé tactile de précision Windows. Cet extrait de descripteur concerne la prise en charge facultative (mais fortement recommandée) du rapport des fonctionnalités du mode de latence.
0x05, 0x0d, // USAGE_PAGE (Digitizer)
0x85, REPORTID_LATENCY, // REPORT_ID (Latency)
0x09, 0x60, // USAGE (Latency Mode)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x01, // REPORT_COUNT (1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0xb1, 0x02, // FEATURE (Data,Var,Abs)
0x95, 0x07, // REPORT_COUNT (7)
0xb1, 0x03, // FEATURE (Cnst,Var,Abs)
Exemple d’extrait de descripteur de rapport – (rapport de caractéristiques d’intensité haptique)
L’extrait suivant est tiré du descripteur de la collection de premier niveau du pavé tactile de précision de Windows pour la prise en charge facultative du rapport sur l’intensité haptique.
0x05, 0x0E, // Usage Page (Haptics)
0x09, 0x01, // Usage (Simple Haptics Controller)
0xA1, 0x02, // Collection (Logical)
0x09, 0x23, // Usage (Intensity)
0x85, CONFIG_PTP_HAPTICS_ID, // Report ID (CONFIG_PTP_HAPTICS_ID)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x64, // Logical Maximum (100)
0x75, 0x08, // Report Size (8)
0x95, 0x01, // Report Count (1)
0xB1, 0x02, // Feature (Data,Var,Abs)
0xC0, // End Collection ()
Exemple d’extrait de descripteur de rapport – (Rapport de fonctionnalité du seuil d’appui sur bouton)
L’extrait suivant est tiré du descripteur de la collection de premier niveau du pavé tactile de précision de Windows pour la prise en charge facultative du rapport de fonctionnalité du seuil d’appui sur bouton.
0x05, 0x0D, // UsagePage(Digitizers[0x000D])
0x85, REPORTID_BUTTONPRESSTHR, // ReportId(REPORTID_BUTTONPRESSTHR)
0x09, 0xB0, // UsageId(Button Press Threshold[0x00B0])
0x35, 0x6E, // PhysicalMinimum(110)
0x46, 0xBE, 0x00, // PhysicalMaximum(190)
0x66, 0x01, 0x01, // Unit('gram', SiLinear, Gram:1)
0x15, 0x01, // LogicalMinimum(1)
0x25, 0x03, // LogicalMaximum(3)
0x75, 0x02, // ReportSize(2)
0xB1, 0x02, // Feature(Data, Variable, Absolute)
0x75, 0x08, // ReportSize(8)
0xB1, 0x03, // Feature(Constant, Variable, Absolute)
Exemple d’extrait de descripteur de rapport - (Rapport de fonctionnalité d’état de certification d’appareil segmenté)
L’extrait suivant provient du descripteur de la collection de haut niveau du pavé tactile de précision Windows, pour une version segmentée du rapport des fonctionnalités de certification de l’appareil. Cela permet de diviser le blob d’état de certification en huit segments de 32 octets, contre un seul segment de 256 octets. L’hôte indique le segment # qu’il souhaite voir renvoyer dans SET FEATURE. En réponse, l’appareil renvoie le segment #, ainsi que le segment associé dans GET FEATURE.
0x06, 0x00, 0xff, // USAGE_PAGE (Vendor Defined)
0x85, REPORTID_PTPHQA, // REPORT_ID (PTPHQA)
0x09, 0xC6, // USAGE (Vendor usage for segment #)
0x25, 0x08, // LOGICAL_MAXIMUM (8)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0xb1, 0x02, // FEATURE (Data,Var,Abs)
0x09, 0xC7, // USAGE (Vendor Usage)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (0xff)
0x95, 0x20, // REPORT_COUNT (32)
0xb1, 0x02, // FEATURE (Data,Var,Abs)
Exemple d’extrait de descripteur de rapport – (rapport d’entrée PTP avec prise en charge de Geometry)
0x85, REPORTID_TOUCHPAD, // REPORT_ID (Touch pad)
0x09, 0x22, // USAGE (Finger)
0xa1, 0x02, // COLLECTION (Logical)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x09, 0x47, // USAGE (Confidence)
0x09, 0x42, // USAGE (Tip switch)
0x95, 0x02, // REPORT_COUNT (2)
0x75, 0x01, // REPORT_SIZE (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x02, // REPORT_SIZE (2)
0x25, 0x02, // LOGICAL_MAXIMUM (2)
0x09, 0x51, // USAGE (Contact Identifier)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x04, // REPORT_COUNT (4)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x15, 0x00, // LOGICAL_MINIMUM (0)
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, 0x90, 0x01, // PHYSICAL_MAXIMUM (400)
0x95, 0x02, // REPORT_COUNT (2)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x46, 0x13, 0x01, // PHYSICAL_MAXIMUM (275)
0x09, 0x31, // USAGE (Y)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x0d, // USAGE_PAGE (Digitizers)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x64, // LOGICAL_MAXIMUM (100)
0x95, 0x02, // REPORT_COUNT (2)
0x09, 0x48, // USAGE (Width)
0x09, 0x49, // USAGE (Height)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0, // END_COLLECTION