-   0x05, 0x0d,                   /*  USAGE_PAGE (Digitizers) */               \
 
-       0x09, 0x04,               /*  USAGE (Touch Screen) */                  \
 
-       0xa1, 0x01,               /*  COLLECTION (Application) */              \
 
-       0x85, HID_TS_REPORT_ID,   /*    REPORT_ID */                           \
 
-       0x09, 0x22,               /*    USAGE (Finger) */                      \
 
-       0xa1, 0x02,               /*    COLLECTION (Logical) */                \
 
-       0x09, 0x42,               /*      USAGE (Tip Switch) */                \
 
-       0x15, 0x00,               /*      LOGICAL_MINIMUM (0) */               \
 
-       0x25, 0x01,               /*      LOGICAL_MAXIMUM (1) */               \
 
-       0x75, 0x01,               /*      REPORT_SIZE (1) */                   \
 
-       0x95, 0x01,               /*      REPORT_COUNT (1) */                  \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0x09, 0x32,               /*      USAGE (In Range) */                  \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0x09, 0x47,               /*      USAGE (Touch Valid) */               \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0x09, 0x05,               /*      REPORT_COUNT (5) */                  \
 
-       0x81, 0x03,               /*      INPUT (Cnst,Ary,Abs) */              \
 
-       0x25, MAX_TOUCH_POINT,    /*      LOGICAL_MAXIMUM (MAX_TOUCH_POINT) */ \
 
-       0x75, 0x08,               /*      REPORT_SIZE (8) */                   \
 
-       0x09, 0x51,               /*      USAGE (Contact Identifier) */        \
 
-       0x95, 0x01,               /*      REPORT_COUNT (1) */                  \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs4) */             \
 
-       0x05, 0x01,               /*      USAGE_PAGE (Generic Desktop) */      \
 
-       0x26, 0x00, 0x10,         /*      LOGICAL_MAX9MUM (32767 ) */          \
 
-       0x75, 0x10,               /*      REPORT_SIZE (16) */                  \
 
-       0x55, 0x00,               /*      UNIT_EXPONENT (0) */                 \
 
-       0x65, 0x00,               /*      UNIT (None) */                       \
 
-       0x09, 0x30,               /*      USAGE (X) */                         \
 
-       0x35, 0x00,               /*      PHYSICAL_MINIMUM (0) */              \
 
-       0x46, 0x00, 0x00,         /*      PHYSICAL_MAXIMUM (0) */              \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0x09, 0x31,               /*      USAGE (Y) */                         \
 
-       0x46, 0x00, 0x00,         /*      PHYSICAL_MAXIMUM (0) */              \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0xc0,                     /*    END_COLLECTION */                      \
 
-       0xa1, 0x02,               /*    COLLECTION (Logical) */                \
 
-       0x05, 0x0d,               /*      USAGE_PAGE (Digitizers) */           \
 
-       0x09, 0x42,               /*      USAGE (Tip Switch) */                \
 
-       0x15, 0x00,               /*      LOGICAL_MINIMUM (0) */               \
 
-       0x25, 0x01,               /*      LOGICAL_MAXIMUM (1) */               \
 
-       0x75, 0x01,               /*      REPORT_SIZE (1) */                   \
 
-       0x95, 0x01,               /*      REPORT_COUNT (1) */                  \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0x09, 0x32,               /*      USAGE (In Range) */                  \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0x09, 0x47,               /*      USAGE (Touch Valid) */               \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0x09, 0x05,               /*      REPORT_COUNT (5) */                  \
 
-       0x81, 0x03,               /*      INPUT (Cnst,Ary,Abs) */              \
 
-       0x25, MAX_TOUCH_POINT,    /*      LOGICAL_MAXIMUM (MAX_TOUCH_POINT) */ \
 
-       0x75, 0x08,               /*      REPORT_SIZE (8) */                   \
 
-       0x09, 0x51,               /*      USAGE (Contact Identifier) */        \
 
-       0x95, 0x01,               /*      REPORT_COUNT (1) */                  \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0x05, 0x01,               /*      USAGE_PAGE (Generic Desktop) */      \
 
-       0x26, 000, 0x10,          /*      LOGICAL_MAXIMUM (32767 ) */          \
 
-       0x75, 0x10,               /*      REPORT_SIZE (16) */                  \
 
-       0x55, 0x00,               /*      UNIT_EXPONENT (0) */                 \
 
-       0x65, 0x00,               /*      UNIT (None) */                       \
 
-       0x09, 0x30,               /*      USAGE (X) */                         \
 
-       0x35, 0x00,               /*      PHYSICAL_MINIMUM (0) */              \
 
-       0x46, 0x00, 0x00,         /*      PHYSICAL_MAXIMUM (0) */              \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0x09, 0x31,               /*      USAGE (Y) */                         \
 
-       0x46, 0x00, 0x00,         /*      PHYSICAL_MAXIMUM (0) */              \
 
-       0x81, 0x02,               /*      INPUT (Data,Var,Abs) */              \
 
-       0xc0,                     /*    END_COLLECTION */                      \
 
-       0x05, 0x0d,               /*    USAGE_PAGE (Digitizers) */             \
 
-       0x09, 0x54,               /*    USAGE (Contact Count) */               \
 
-       0x95, 0x01,               /*    REPORT_COUNT (1) */                    \
 
-       0x75, 0x08,               /*    REPORT_SIZE (8) */                     \
 
-       0x15, 0x00,               /*    LOGICAL_MINIMUM (0) */                 \
 
-       0x25, MAX_TOUCH_POINT,    /*    LOGICAL_MAXIMUM (MAX_TOUCH_POINT) */   \
 
-       0x81, 0x02,               /*    INPUT (Data,Var,Abs) */                \
 
-       0x09, 0x55,               /*    USAGE (COntact Count Maximum) */       \
 
-       0xb1, 0x02,               /*    FEATURE (Data,Var,Abs) */              \
 
-       0xc0,                     /*  END_COLLECTION */                        \
 
-       0x05, 0x0d,               /*  USAGE_PAGE (Digitizers) */               \
 
-       0x09, 0x0e,               /*  USAGE (Device Configuration) */          \
 
-       0xa1, 0x01,               /*  COLLECTION (Application) */              \
 
-       0x85, FEAUTURE_REPORT_ID, /*    REPORT_ID (Configuration) */           \
 
-       0x09, 0x23,               /*    USAGE (Device Settings) */             \
 
-       0xa1, 0x02,               /*    COLLECTION (Logical) */                \
 
-       0x09, 0x52,               /*      USAGE (Device Mode) */               \
 
-       0x09, 0x53,               /*      USAGE (Device Identifier) */         \
 
-       0x15, 0x00,               /*      LOGICAL_MINIMUM (0) */               \
 
-       0x25, 0x0a,               /*      LOGICAL_MAXIMUM (10) */              \
 
-       0x75, 0x08,               /*      REPORT_SIZE (8) */                   \
 
-       0x95, 0x02,               /*      REPORT_COUNT (2) */                  \
 
-       0xb1, 0x02,               /*      FEATURE (Data,Var,Abs) */            \
 
-       0xc0,                     /*    END_COLLECTION */                      \
 
-       0xc0                      /*  END_COLLECTION */
 
根据自己定义的描述符,定义的发送的多点触控报告函数如下,采用的是混合模式,两个点打一个包:
- void HIDTouchScreen::touch(uint16_t *x, uint16_t *y, uint8_t *state,
 
-                            uint8_t n) {
 
-   if (n == 0) return;
 
-   if (n > MAX_TOUCH_POINT) n = MAX_TOUCH_POINT;
 
-   reportBuffer[0] = HID_TS_REPORT_ID;
 
-   for (uint8_t i = 0; i < n;) {
 
-     reportBuffer[1] = state[i];  // 设置状态
 
-     reportBuffer[2] = i + 1;     // 设置触摸点 ID
 
-     reportBuffer[3] = x[i] & 0xFF;
 
-     reportBuffer[4] = (x[i] >> 8) & 0xFF;
 
-     reportBuffer[5] = y[i] & 0xFF;
 
-     reportBuffer[6] = (y[i] >> 8) & 0xFF;
 
-     if (i == 0)
 
-       reportBuffer[13] = n;
 
-     else
 
-       reportBuffer[13] = 0;
 
-     i++;
 
-     if (i < n) {
 
-       reportBuffer[7] = state[i];  // 设置状态
 
-       reportBuffer[8] = i + 1;     // 设置触摸点 ID
 
-       reportBuffer[9] = x[i] & 0xFF;
 
-       reportBuffer[10] = (x[i] >> 8) & 0xFF;
 
-       reportBuffer[11] = y[i] & 0xFF;
 
-       reportBuffer[12] = (y[i] >> 8) & 0xFF;
 
-       i++;
 
-     } else {
 
-       for (uint8_t j = 7; j < 13; j++) {
 
-         reportBuffer[j] = 0;
 
-       }
 
-     }
 
-     sendReport();
 
-   }
 
- }
恳请大家帮分析一下,到底是什么原因导致 win10 无法接受多点触控报告,先谢谢了!