Помогите пожалста разобраться, что за структура такая непонятная у дескриптора репорта клавиатуры?
На более простенькой клавиатуре потренировался "разгребать" дескриптор репорта, и все получилось отлично, а этот где-то не так, наверное анализирую... Вот мои результаты разборок:
Код
0x05 0x0C (GLOBAL_USAGEPAGE)
0x09 0x01 (LOCAL_USAGE)
0xA1 0x01 (COLLECTION)
0x85 0x01 (GLOBAL_REPORTID)
0x15 0x01 (GLOBAL_LOGICALMINIMUM)
0x26 0x5E 0x00 (GLOBAL_LOGICALMAXIMUM)
0x75 0x08 (GLOBAL_REPORTSIZE)
0x95 0x02 (GLOBAL_REPORTCOUNT)
0x0A 0x25 0x02 (LOCAL_USAGE)
0x09 0xB6 (LOCAL_USAGE)
0x09 0xB5 (LOCAL_USAGE)
0x09 0xB7 (LOCAL_USAGE)
0x09 0xCD (LOCAL_USAGE)
0x09 0xEA (LOCAL_USAGE)
0x09 0xE9 (LOCAL_USAGE)
0x09 0xE2 (LOCAL_USAGE)
0x0A 0x92 0x01 (LOCAL_USAGE)
0x0A 0x8A 0x01 (LOCAL_USAGE)
0x0A 0x21 0x02 (LOCAL_USAGE)
0x0A 0x23 0x02 (LOCAL_USAGE)
0x0A 0x2A 0x02 (LOCAL_USAGE)
0x0A 0x24 0x02 (LOCAL_USAGE)
0x0A 0x83 0x01 (LOCAL_USAGE)
0x1B 0x01 0x00 0x09 (LOCAL_USAGEMINIMUM)
0x00 (COLLECTION_PHYSICAL)
0x2B 0x4C 0x00 0x09 (LOCAL_USAGEMAXIMUM)
0x00 (COLLECTION_PHYSICAL)
0x05 0x0C (GLOBAL_USAGEPAGE)
0x0A 0x27 0x02 (LOCAL_USAGE)
0x0A 0x26 0x02 (LOCAL_USAGE)
0x09 0xB8 (LOCAL_USAGE)
0x81 0x60 (INPUT)
0xC0 (ENDCOLLECTION)
0x05 0x01 (GLOBAL_USAGEPAGE)
0x09 0x80 (LOCAL_USAGE)
0xA1 0x01 (COLLECTION)
0x85 0x02 (GLOBAL_REPORTID)
0x15 0x01 (GLOBAL_LOGICALMINIMUM)
0x25 0x03 (GLOBAL_LOGICALMAXIMUM)
0x75 0x02 (GLOBAL_REPORTSIZE)
0x95 0x01 (GLOBAL_REPORTCOUNT)
0x09 0x82 (LOCAL_USAGE)
0x09 0x81 (LOCAL_USAGE)
0x09 0x83 (LOCAL_USAGE)
0x81 0x60 (INPUT)
0x75 0x06 (GLOBAL_REPORTSIZE)
0x81 0x03 (INPUT)
0xC0 (ENDCOLLECTION)
0x09 0x01 (LOCAL_USAGE)
0xA1 0x01 (COLLECTION)
0x85 0x01 (GLOBAL_REPORTID)
0x15 0x01 (GLOBAL_LOGICALMINIMUM)
0x26 0x5E 0x00 (GLOBAL_LOGICALMAXIMUM)
0x75 0x08 (GLOBAL_REPORTSIZE)
0x95 0x02 (GLOBAL_REPORTCOUNT)
0x0A 0x25 0x02 (LOCAL_USAGE)
0x09 0xB6 (LOCAL_USAGE)
0x09 0xB5 (LOCAL_USAGE)
0x09 0xB7 (LOCAL_USAGE)
0x09 0xCD (LOCAL_USAGE)
0x09 0xEA (LOCAL_USAGE)
0x09 0xE9 (LOCAL_USAGE)
0x09 0xE2 (LOCAL_USAGE)
0x0A 0x92 0x01 (LOCAL_USAGE)
0x0A 0x8A 0x01 (LOCAL_USAGE)
0x0A 0x21 0x02 (LOCAL_USAGE)
0x0A 0x23 0x02 (LOCAL_USAGE)
0x0A 0x2A 0x02 (LOCAL_USAGE)
0x0A 0x24 0x02 (LOCAL_USAGE)
0x0A 0x83 0x01 (LOCAL_USAGE)
0x1B 0x01 0x00 0x09 (LOCAL_USAGEMINIMUM)
0x00 (COLLECTION_PHYSICAL)
0x2B 0x4C 0x00 0x09 (LOCAL_USAGEMAXIMUM)
0x00 (COLLECTION_PHYSICAL)
0x05 0x0C (GLOBAL_USAGEPAGE)
0x0A 0x27 0x02 (LOCAL_USAGE)
0x0A 0x26 0x02 (LOCAL_USAGE)
0x09 0xB8 (LOCAL_USAGE)
0x81 0x60 (INPUT)
0xC0 (ENDCOLLECTION)
0x05 0x01 (GLOBAL_USAGEPAGE)
0x09 0x80 (LOCAL_USAGE)
0xA1 0x01 (COLLECTION)
0x85 0x02 (GLOBAL_REPORTID)
0x15 0x01 (GLOBAL_LOGICALMINIMUM)
0x25 0x03 (GLOBAL_LOGICALMAXIMUM)
0x75 0x02 (GLOBAL_REPORTSIZE)
0x95 0x01 (GLOBAL_REPORTCOUNT)
0x09 0x82 (LOCAL_USAGE)
0x09 0x81 (LOCAL_USAGE)
0x09 0x83 (LOCAL_USAGE)
0x81 0x60 (INPUT)
0x75 0x06 (GLOBAL_REPORTSIZE)
0x81 0x03 (INPUT)
0xC0 (ENDCOLLECTION)
Ком, разумеется, клаву определяет безошибочно, значит, структурка у нее никакая не кривая, я её просто неправильно разобрал. Где я могу ошибаться?
Заранее спасибо за подсказки.