This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

I meet a problem during programming combo hid(keyboard+multi touch)on nrf52.

Hi
I met a problem during programming a combo of HID on nrf52.
I have set combo HID that have keyboard and multi touch.
after pairing my smartphone(galaxy note 8), keyboard data doesn't sent to my phone but multi touch os ok.

after some debugging, i found that a certain sentence of multich touch HID bring up a problem.

HID sentence of problem is contact identifier. refer to below.

0x09, 0x51,        //     Usage (0x51 - Contact identifier)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)


I have no idea for soving this problem.

please guide me any way .

thanks

My entire HID report map is .
static uint8_t report_map_data[] =
    {
        0x05, 0x01,                 // Usage Page (Generic Desktop)
        0x09, 0x06,                 // Usage (Keyboard)
        0xA1, 0x01,                 // Collection (Application)
      0x85, 0x01,                 //     Report Id (1)
        0x05, 0x07,                 //     Usage Page (Key Codes)
        0x19, 0xe0,                 //     Usage Minimum (224)
        0x29, 0xe7,                 //     Usage Maximum (231)
        0x15, 0x00,                 //     Logical Minimum (0)
        0x25, 0x01,                 //     Logical Maximum (1)
        0x75, 0x01,                 //     Report Size (1)
        0x95, 0x08,                 //     Report Count (8)
        0x81, 0x02,                 //     Input (Data, Variable, Absolute)
        0x95, 0x01,                 //     Report Count (1)
        0x75, 0x08,                 //     Report Size (8)
        0x81, 0x01,                 //     Input (Constant) reserved byte(1)
#if 0
        0x95, 0x05,                 //     Report Count (5)
        0x75, 0x01,                 //     Report Size (1)
        0x05, 0x08,                 //     Usage Page (Page# for LEDs)
        0x19, 0x01,                 //     Usage Minimum (1)
        0x29, 0x05,                 //     Usage Maximum (5)
        0x91, 0x02,                 //     Output (Data, Variable, Absolute), Led report
        0x95, 0x01,                 //     Report Count (1)
        0x75, 0x03,                 //     Report Size (3)
        0x91, 0x01,                 //     Output (Data, Variable, Absolute), Led report padding
#endif
        0x95, 0x06,                 //     Report Count (6)
        //0x95, 0x01,
        0x75, 0x08,                 //     Report Size (8)
        0x15, 0x00,                 //     Logical Minimum (0)
        //0x25, 0x65,                 //     Logical Maximum (101)
        0x25, 0x82,
        0x05, 0x07,                 //     Usage Page (Key codes)
        0x19, 0x00,                 //     Usage Minimum (0)
        //0x29, 0x65,                 //     Usage Maximum (101)
        0x29, 0x82,
        0x81, 0x00,                 //     Input (Data, Array) Key array(6 bytes)
        0x09, 0x05,                 //     Usage (Vendor Defined)
        0x15, 0x00,                 //     Logical Minimum (0)
        0x26, 0xFF, 0x00,           //     Logical Maximum (255)
        0x75, 0x08,                 //     Report Count (2)
        0x95, 0x02,                 //     Report Size (8 bit)
        0xB1, 0x02,                 //     Feature (Data, Variable, Absolute)
        0xC0,                       // End Collection (Application)
#ifdef _DUALTOUCH_   
        0x05, 0x0D,        // Usage Page (Digitizer)
        0x09, 0x04,        // Usage (Touch Screen)
        0xA1, 0x01,        // Collection (Application)
        0x85, 0x02,        //   Report Id 2
        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,No Wrap,Linear,Preferred State,No Null Position)
        0x09, 0x30,        //     Usage (Tip Pressure)
        0x25, 0x7F,        //     Logical Maximum (127)
        0x75, 0x07,        //     Report Size (7)
        0x95, 0x01,        //     Report Count (1)
        0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
        0x09, 0x51,        //     Usage (0x51 - Contact identifier)
        0x26, 0xFF, 0x00,  //     Logical Maximum (255)
        0x75, 0x08,        //     Report Size (8)
        0x95, 0x01,        //     Report Count (1)
        0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
        0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
        0x09, 0x30,        //     Usage (X)
        0x09, 0x31,        //     Usage (Y)
        0x26, 0xFF, 0x7F,  //     Logical Maximum (32767)
        0x65, 0x00,        //     Unit (None)
        0x75, 0x10,        //     Report Size (16)
        0x95, 0x02,        //     Report Count (2)
        0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
       
        0x35, 0x00,                    //     PHYSICAL_MINIMUM (0)
    0x05, 0x0d,                    //     USAGE_PAGE (Digitizers)
    0x26, 0xff, 0x00,              //     LOGICAL_MAXIMUM (255)
    0x46, 0xff, 0x00,              //     PHYSICAL_MAXIMUM (255)
    0x75, 0x08,                    //     REPORT_SIZE (8)
    0x95, 0x02,                    //     REPORT_COUNT (2)
    0x09, 0x48,                    //     USAGE (Width)            //width of contact (0 ~ 255)
    0x09, 0x49,                    //     USAGE (Height)           //Height of contact  (0 ~ 255)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
       
        0xC0,              //   End Collection
        0x05, 0x0D,        //   Usage Page (Digitizer)
        0x27, 0xFF, 0xFF, 0x00, 0x00,  //   Logical Maximum (65534)
        0x09, 0x56,        //   Usage (0x56 - Scan Time)
        0x75, 0x10,        //   Report Size (16)
        0x95, 0x01,        //   Report Count (1)
        0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
        0x09, 0x54,        //   Usage (0x54 - Contact count)
        0x25, 0x05,        //   Logical Maximum (5)
        0x75, 0x08,        //   Report Size (8)
        0x95, 0x01,        //   Report Count (1)
        0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
        0x05, 0x0D,        //   Usage Page (Digitizer)
        0x09, 0x55,        //   Usage (0x55 - Contact point maximum)
        0x25, 0x0A,        //   Logical Maximum (10)
        0x75, 0x08,        //   Report Size (8)
        0x95, 0x01,        //   Report Count (1)
        0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
        0xC0,              // End Collection
#endif     

Parents Reply Children
No Data
Related