Как отправить значения клавиатуры в HID с идентификатором отчета?

Я использую приведенный ниже дескриптор для отправки значений клавиш с клавиатуры через HID Bluetooth.

    USAGE_PAGE(1),      0x01,      
    USAGE(1),           0x06,      
    COLLECTION(1),      0x01,      
    REPORT_ID(1),        0x02,
    USAGE_PAGE(1),      0x07,      
    USAGE_MINIMUM(1), (byte) 0xE0,
    USAGE_MAXIMUM(1), (byte) 0xE7,
    LOGICAL_MINIMUM(1), 0x00,
    LOGICAL_MAXIMUM(1), 0x01,
    REPORT_SIZE(1),     0x01,      
    REPORT_COUNT(1),    0x08,
    INPUT(1),           0x02,    
    REPORT_COUNT(1),    0x01,     
    REPORT_SIZE(1),     0x08,
    INPUT(1),           0x01,       
    REPORT_COUNT(1),    0x05,      
    REPORT_SIZE(1),     0x01,
    USAGE_PAGE(1),      0x08,       
    USAGE_MINIMUM(1),   0x01,       
    USAGE_MAXIMUM(1),   0x05,      
    OUTPUT(1),          0x02,      
    REPORT_COUNT(1),    0x01,     
    REPORT_SIZE(1),     0x03,
    OUTPUT(1),          0x01,      
    REPORT_COUNT(1),    0x06,       
    REPORT_SIZE(1),     0x08,
    LOGICAL_MINIMUM(1), 0x00,
    LOGICAL_MAXIMUM(1), 0x65,       
    USAGE_PAGE(1),      0x07,       
    USAGE_MINIMUM(1),   0x00,
    USAGE_MAXIMUM(1),   0x65,
    INPUT(1),           0x00,       
    END_COLLECTION(0),

Проблема, с которой я сталкиваюсь, заключается в том, что я могу отправлять данные, но одни и те же данные отправляются бесконечное количество раз.

Если я устанавливаю байт модификатора в 2, то все работает нормально, то есть, когда последние прописные буквы отправляются для конкретного нажатия клавиш, но в случае, если я отправляю строчные буквы последнего, данные отправляются бесконечное количество раз.

1 ответ

Решение

Когда вы забудете отпустить клавиши, нажатия клавиш будут казаться "бесконечным числом". Массив содержит клавиши (до 6 в вашем случае), которые нажаты в данный момент. Вам необходимо очистить буфер до индекса "не указано событие", который в вашем случае равен 0x00. Если вы этого не сделаете, то хост, скорее всего, реализует функцию повтора клавиши "typ-o-matic"... то есть то, что вы видите, когда нажимаете и держите клавишу на обычной клавиатуре.

Другие вопросы по тегам