HID report
Код
0x05,0x0D, //Usage Page (Digitizer) 05 0D
0x09,0x02, //Usage (Pen) 09 02
0xA1,0x01, //Collection (Application) A1 01
0x85,0x01, //Report 01 85 01
0x09,0x20, //Usage (Stylus) 09 20
0xA1,0x00, //Collection (Physical) A1 00
0x09,0x42, //Usage (Tip Switch) 09 42
0x09,0x32, //Usage (In Range) 09 32
0x15,0x00, //Logical Minimum (0) 15 00
0x25,0x01, //Logical Maximum (1) 25 01
0x75,0x01, //Report Size (1) 75 01
0x95,0x02, //Report Count (2) 95 02
0x81,0x02, //Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
0x95,0x06, //Report Count (6) 95 06
0x81,0x03, //Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
0x05,0x01, //Usage Page (Generic Desktop) 05 01
0x09,0x30, //Usage (X) 09 30
0x75,0x10, //Report Size (16) 75 10
0x95,0x01, //Report Count (1) 95 01
0x55,0x0D, //Unit Exponent (-3) 55 0D
0x65,0x11, //Unit (SI Lin: Length (cm)) 65 11
0x15,0x00, //Logical Minimum (0) 15 00
0x26,0xE7,0x03, //Logical Maximum (1000) 26 00 70
0x35,0x00, //Physical Minimum (0) 35 00
0x46,0xC4,0x54, //Physical Maximum (1000) 46 00 70
0x81,0x02, //Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
0x09,0x31, //Usage (Y) 09 31
0x15,0x00, //Logical Minimum (0) 15 00
0x26,0xE7,0x03, //Logical Maximum (1000) 26 00 40
0x35,0x00, //Physical Minimum (0) 35 00
0x46,0x58,0x34, //Physical Maximum (1000) 46 00 40
0x81,0x02, //Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
0xC0, //End Collection C0
0xC0, //End Collection C0
0x09,0x02, //Usage (Pen) 09 02
0xA1,0x01, //Collection (Application) A1 01
0x85,0x01, //Report 01 85 01
0x09,0x20, //Usage (Stylus) 09 20
0xA1,0x00, //Collection (Physical) A1 00
0x09,0x42, //Usage (Tip Switch) 09 42
0x09,0x32, //Usage (In Range) 09 32
0x15,0x00, //Logical Minimum (0) 15 00
0x25,0x01, //Logical Maximum (1) 25 01
0x75,0x01, //Report Size (1) 75 01
0x95,0x02, //Report Count (2) 95 02
0x81,0x02, //Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
0x95,0x06, //Report Count (6) 95 06
0x81,0x03, //Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03
0x05,0x01, //Usage Page (Generic Desktop) 05 01
0x09,0x30, //Usage (X) 09 30
0x75,0x10, //Report Size (16) 75 10
0x95,0x01, //Report Count (1) 95 01
0x55,0x0D, //Unit Exponent (-3) 55 0D
0x65,0x11, //Unit (SI Lin: Length (cm)) 65 11
0x15,0x00, //Logical Minimum (0) 15 00
0x26,0xE7,0x03, //Logical Maximum (1000) 26 00 70
0x35,0x00, //Physical Minimum (0) 35 00
0x46,0xC4,0x54, //Physical Maximum (1000) 46 00 70
0x81,0x02, //Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
0x09,0x31, //Usage (Y) 09 31
0x15,0x00, //Logical Minimum (0) 15 00
0x26,0xE7,0x03, //Logical Maximum (1000) 26 00 40
0x35,0x00, //Physical Minimum (0) 35 00
0x46,0x58,0x34, //Physical Maximum (1000) 46 00 40
0x81,0x02, //Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
0xC0, //End Collection C0
0xC0, //End Collection C0
Соответсвенно репорт: ID (1 байт), Tip Switch и In Range (1 байт) и X, Y (по 2 байта).
Если просто подключить, загрузить восьмерку дождаться появления рабочего стола и нажимать на тачскрин - работает без проблем.
Но стоит только во время загрузки нажать на экран, т.е. будут передаваться координаты нажатия (и установленные два бита TS/IR естественно) вместо нулей, то после заргузки тач-скрин не работоспособен.
При этом, судя по аппаратному USB-анализатору, никаких проблем нет - данные (через interrupt endpoint) успешно передаются, в диспетчере устройств тоже порядок.
Что этому виндосу ещё не хватает?
PS: Монитор вьюсоник с мультитач работает нормально во всех ситуациях, но у него и репорт в 4 раза больше.