USB HID Digitizer Pen Устройство не работает на MacOSX (работает на Windows / Linux) - PullRequest
0 голосов
/ 25 сентября 2019

Я создал USB HID Pen Digitizer, который сообщает следующее:

////////////////////////////
// HID PEN DIGITIZER PART //
////////////////////////////
0x05, 0x0d,                         //   USAGE_PAGE (Digitizers)
0x09, 0x01,                         //   USAGE (Digitizers)
0xa1, 0x01,                         //   COLLECTION (Application)
0x85, 0x02,                         //     REPORT_ID(2)
0x09, 0x02,                         //     USAGE (pen)
0xa1, 0x00,                         //    COLLECTION (Physical)

// Tip Switch & In Range
0x09, 0x42,                         //     USAGE (Tip Switch)
0x09, 0x32,                         //     USAGE (In Range)
0x09, 0x3c,                         //     USAGE (Invert)
0x09, 0x45,                         //     USAGE (Eraser)
0x15, 0x00,                         //     LOGICAL_MINIMUM (0)
0x25, 0x01,                         //     LOGICAL_MAXIMUM (1)
0x75, 0x01,                         //     REPORT_SIZE (1)
0x95, 0x04,                         //     REPORT_COUNT (4)
0x81, 0x02,                         //     INPUT (Data,Var,Abs)

// Padding
0x09, 0x00,                         //     USAGE (Undefined / Padding)
0x75, 0x04,                         //     REPORT_SIZE (4)
0x95, 0x01,                         //     REPORT_COUNT (1)
0x81, 0x01,                         //     INPUT (Cnst,Ary,Abs)

// X & Y TILT
0x09, 0x3d,                         //     USAGE (X tilt)
0x09, 0x3e,                         //     USAGE (Y tilt)
0x15, 0xa6,                         //     LOGICAL_MINIMUM (-90)
0x25, 0x5a,                         //     LOGICAL_MAXIMUM (90)
0x75, 0x08,                         //     REPORT_SIZE (8)
0x95, 0x02,                         //     REPORT_COUNT (2)
0x35, 0xa6,                         //     PHYSICAL_MINIMUM (-90)
0x45, 0x5a,                         //     PHYSICAL_MAXIMUM (90)
0x81, 0x02,                         //     INPUT (Data,Var,Abs)

// Tip pressure
0x09, 0x30,                         //     USAGE (PRESSURE)
0x16, 0x00, 0x00,                   //     LOGICAL_MINIMUM (0)
0x26, 0xff, 0x0f,                   //     LOGICAL_MAXIMUM (4095)
0x75, 0x10,                         //     REPORT_SIZE (16)
0x95, 0x01,                         //     REPORT_COUNT (1)
0x36, 0x00, 0x00,                   //     PHYSICAL_MINIMUM (0)
0x46, 0xff, 0x00,                   //     PHYSICAL_MAXIMUM (255)
0x81, 0x02,                         //     INPUT (Data,Var,Abs)

// Generic desktop X, Y, Z
// X
0x05, 0x01,                         //     USAGE_PAGE (Generic Desktop)
0x16, 0xc8, 0x05,                   //     LOGICAL_MINIMUM (1480)
0x26, 0x68, 0x47,                   //     LOGICAL_MAXIMUM (18280)
0x75, 0x10,                         //     REPORT_SIZE (16)
0x95, 0x01,                         //     REPORT_COUNT (1)
0x55, 0x0d,                         //     UNIT_EXPONENT (-3)
0x65, 0x11,                         //     UNIT (en cm)
0x09, 0x30,                         //     USAGE (X)
0x36, 0xC8, 0x05,                   //     PHYSICAL_MINIMUM (1480)
0x46, 0x68, 0x47,                   //     PHYSICAL_MAXIMUM (18280)
0x81, 0x02,                         //     INPUT (Data,Var,Abs)

// Y
0x16, 0x34, 0x08,                   //     LOGICAL_MINIMUM (2100)
0x26, 0x74, 0x36,                   //     LOGICAL_MAXIMUM (13940)
0x75, 0x10,                         //     REPORT_SIZE (16)
0x95, 0x01,                         //     REPORT_COUNT (1)
0x55, 0x0d,                         //     UNIT_EXPONENT (-3)
0x65, 0x11,                         //     UNIT (en cm)
0x09, 0x31,                         //     USAGE (Y)
0x36, 0x34, 0x08,                   //     PHYSICAL_MINIMUM (2100)
0x46, 0x74, 0x36,                   //     PHYSICAL_MAXIMUM (13940)
0x81, 0x02,                         //     INPUT (Data,Var,Abs)

// Z
0x16, 0x00, 0x00,                   //     LOGICAL_MINIMUM (0)
0x26, 0x10, 0x27,                   //     LOGICAL_MAXIMUM (10000)
0x75, 0x10,                         //     REPORT_SIZE (16)
0x95, 0x01,                         //     REPORT_COUNT (1)
0x55, 0x0d,                         //     UNIT_EXPONENT (-3)
0x65, 0x11,                         //     UNIT (en cm)
0x09, 0x32,                         //     USAGE (Z)
0x36, 0x00, 0x00,                   //     PHYSICAL_MINIMUM (0)
0x46, 0x10, 0x27,                   //     PHYSICAL_MAXIMUM (10000)
0x81, 0x02,                         //     INPUT (Data,Var,Abs)

0xc0,                               //   END_COLLECTION
0xc0,                               //   END_COLLECTION

Проблема возникает только при использовании приложений в MacOSX = не работает перо.Ручка HID работает, «контакт» в порядке, но данные о давлении не обрабатываются.Давление всегда находится на полном давлении, когда контакт включен.

Используя приложение, которое может справиться с этим (SketchBook от Autodesk), давление пера хорошо работает в Windows, но не в MacOSX.

кто-то уже сталкивался с подобной проблемой с устройством Pen на MacOSX?Что я могу сделать для отладки?

...