Compartir a través de


Descriptores de informe de ejemplo (touchpad-sample-report-descriptors)

Este tema presenta un descriptor de informe de ejemplo y extractos de descriptor de ejemplo para un dispositivo de Windows Precision Touchpad.

Nota:

Aunque los usos específicos del proveedor se pueden usar en cualquier nivel del informe, deben usarse de forma que se puedan implementar igualmente en todos los métodos de informes, es decir, serie, paralelo e híbrido. No cumplir con esta guía puede no dar lugar a un error de HLK, pero podría dar lugar a problemas de compatibilidad graves.

Descriptor de informe de ejemplo

Todos los valores y parámetros especificados en el descriptor de ejemplo siguiente son obligatorios.

//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

Extracto del descriptor de informe de ejemplo: (informe de características del modo de latencia)

El siguiente extracto procede del descriptor de la colección de nivel superior de Windows Precision Touchpad. Este fragmento de descriptor es para la compatibilidad opcional (pero muy recomendada) del informe de características del modo de latencia.

    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)

Extracto del descriptor de informe de ejemplo: (informe de características de intensidad háptica)

El siguiente extracto procede del descriptor de la colección de nivel superior de Windows Precision Touchpad para la compatibilidad opcional del informe de características de intensidad háptica.

    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 ()

Extracto del descriptor de informe de ejemplo: (Informe de características del umbral de pulsación de botón)

El siguiente extracto procede del descriptor de la colección de nivel superior de Windows Precision Touchpad para la compatibilidad opcional del informe de características del umbral de pulsación de botón.

    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)

Extracto del descriptor de informe de ejemplo: (informe de características de estado de certificación de dispositivo segmentado)

El siguiente extracto procede del descriptor de la colección de nivel superior de Windows Precision Touchpad, para una versión segmentada del informe de características del estado de certificación del dispositivo. Esto permite dividir el blob de estado de certificación en ocho segmentos de 32 bytes, frente a un único segmento de 256 bytes. El host indica qué número de segmento quiere que se le devuelva en SET FEATURE. En respuesta, el dispositivo devuelve el número de segmento, junto con el segmento asociado en 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)

Extracto del descriptor de informe de ejemplo: (informe de entrada PTP con compatibilidad con geometría)

    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

Colección de configuración

Colección de mouse

Colección del Panel táctil de precisión de Windows