Ответ 1
"Коды сканирования" (они действительно являются индексами кодов использования) публикуются на usb.org в таблицах USB HID Usage Table в главе 10 "Клавиатура/Страница клавиатуры (0x07)". Типичный макет отчета о клавиатуре можно найти в Спецификация класса USB-устройств для HID в Приложении B "Дескрипторы дескриптора загрузки", раздел "B.1 Protocol 1 (Keyboard)".
Это описывает формат отчета клавиатуры как:
Byte 0: Keyboard modifier bits (SHIFT, ALT, CTRL etc)
Byte 1: reserved
Byte 2-7: Up to six keyboard usage indexes representing the keys that are
currently "pressed".
Order is not important, a key is either pressed (present in the
buffer) or not pressed.
Обратите внимание, что спецификация USB не определяет раскладки клавиатуры. Он просто перечисляет коды использования, назначенные определенным ключевым функциям. Например, буквой "a" является код использования 0x04. Если вы хотите иметь верхний регистр "A", вам также нужно будет установить биты модификатора байта 0, чтобы выбрать "Левый сдвиг" (или "Сдвиг вправо" ).
Точный формат буфера отчета зависит от дескриптора отчета, отправленного на главный компьютер, когда клавиатура была подключена к USB-порту, поэтому приведенное выше является просто (довольно типичным) примером.