HID PEN手写笔设备

描述符

/* USB PEN HID描述符 */
/* HID Report Descriptor PEN */
const u8 Pen_ReportDescriptor[] =
{
    0x05, 0x0d,             //  USAGE_PAGE (Digitizers)
    0x09, 0x02,             //  USAGE (Pen)
    0xa1, 0x01,             //  COLLECTION (Application)
    0x09, 0x20,             //      USAGE (Stylus)
    0xa1, 0x00,             //      COLLECTION (Physical)
//    0x85, REPORT_ID_PEN,    //          REPORT_ID (Pen)        
    0x09, 0x42,             //          USAGE (Tip Switch)
    0x09, 0x44,             //          USAGE (Barrel Switch)
    0x09, 0x45,             //          USAGE (Eraser Switch)
    0x09, 0x3c,             //          USAGE (Invert)
    0x09, 0x32,             //          USAGE (In Range)
    0x15, 0x00,             //          LOGICAL_MINIMUM (0)
    0x25, 0x01,             //          LOGICAL_MAXIMUM (1)
    0x75, 0x01,             //          REPORT_SIZE (1)
    0x95, 0x05,             //          REPORT_COUNT (5)
    0x81, 0x02,             //          INPUT (Data,Var,Abs)
    0x95, 0x0b,             //          REPORT_COUNT (11)
    0x81, 0x03,             //          INPUT (Cnst,Var,Abs)
    0x05, 0x01,             //          USAGE_PAGE (Generic Desktop)
    0x26, 0xff, 0x7f,       //          LOGICAL_MAXIMUM (32767)
    0x75, 0x10,             //          REPORT_SIZE (16)
    0x95, 0x01,             //          REPORT_COUNT (1)
    0xa4,                   //          PUSH
    0x55, 0x0d,             //          UNIT_EXPONENT (-3)
    0x65, 0x33,             //          UNIT (Inch,EngLinear)
    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)
    0xb4,                   //          POP
    0x05, 0x0d,             //          USAGE_PAGE (Digitizers)
    0x09, 0x30,             //          USAGE (Tip Pressure)
    0x81, 0x02,             //          INPUT (Data,Var,Abs)
    0x09, 0x3d,             //          USAGE (X Tilt)
    0x09, 0x3e,             //          USAGE (Y Tilt)
    0x16, 0x01, 0x80,       //          LOGICAL_MINIMUM (-32767)
    0x95, 0x02,             //          REPORT_COUNT (2)
    0x81, 0x02,             //          INPUT (Data,Var,Abs)
    0xc0,                   //      END_COLLECTION
    0xc0,                   //  END_COLLECTION
}

报文说明

Pen Input报文共9Byte

Byte0 Byte1 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7 Byte8 Byte9 Byte10 Byte11

Byte0 -- 开关
      |--Bit0: Tip switch触点开关
      |--Bit1:Barrel Switch桶开关
      |--Bit2:Eraser Switch擦开关
      |--Bit3:Invert反转
      |--Bit4:In Range
      |--Bit5:填0,保留
      |--Bit6:填0,保留
      |--Bit7:填0,保留

    笔操作流程:
        笔尖悬空 0x10
        笔尖接触屏幕 0x11
        笔尖抬起 0x10
        笔尖释放 0x00  
        
    橡皮擦操作流程:
        橡皮擦悬空 0x1a
        橡皮擦接触屏幕 0x16
        橡皮擦抬起 0x1a
        橡皮擦释放 0x00
    
Byte 1:0x00保留

Byte 2~3 : X坐标

Byte 4~5 : Y坐标

Byte 6~7 : Tip Pressure 压力 

Byte 8~9 : X Tilt

Byte 10~11 :Y Tilt

Byte8~11可以在HID描述符里删除


 继续浏览关于 HIDUSB 的文章

 本文最后更新于 2021/02/23 16:18:25,可能因经年累月而与现状有所差异

 引用转载请注明: 落梧笔记 > 电子 > HID PEN手写笔设备