Какую цель используют зарезервированные байты / байты заполнения в HID-дескрипторах? - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь реализовать дескриптор устройства HID для пользовательской клавиатуры со светодиодами и встроенной мышью. Я нахожусь в момент, когда я пытаюсь собрать дескриптор HID, и наткнулся на что-то, для чего я не могу найти объяснения.

Дескриптор, показанный в этом посте и этом примере в определении USB, имеет два артефакта, которые я не совсем понимаю. А именно,

  • есть зарезервированный байт после модификаторов и заполнение
  • после светодиодов.

Заполнение после светодиодов, которое я предполагаю, является таким что светодиодный выход (ввод с клавиатуры) является полным байтом, может кто-нибудь подтвердить это?

Я вообще не уверен, почему после модификаторов есть зарезервированный байт. Это мой главный вопрос, наверное. Некоторое разъяснение будет с благодарностью.

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

Так, чтобы дескриптор с

  • байт модификатора
  • зарезервированный байт
  • 6 клавиш

будет выглядеть примерно так?

struct my_descriptor {
    uint8_t modifiers;
    uint8_t reserved; /* never set */
    uint8_t keys[6];
};

edit

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

...