Цитата
Вы хотите сказать, что хост постоянно "клюёт" HID устройство с целью узнать нет ли там данных и если есть, то заклочить (clock) устройство и получить данные побитно? А зачем постоянно то? На это ведь уходит время и ресурсы.
Не один я это хочу это сказать. Это принцип работы USB в целом. Все обмены по шине инициируются хостом, для LS,FS устройств величина кадра 1 мСек, для HS 125 мкСек. Обмены HID устройства идут по iterrupt конечной точке, которая отправляет данные фактически в ближайший фрейм. Это все делается на железном уровне и само. Клавиатура получив нажатие кнопки формирует отчет входной отчет (отчет в хост) с кодом кнопки, отчет будет забран хостом в ближайший фрейм. Фрейм его обработает, выставить ACK, NACK или что ему понадобиться, проверит суммы, выделит данные и поставит флаг что пришли данные. Вы их считаете и обработаете.
преобразование HID - UART нету, те преобразователи USB-UART что есть это CDC класс, он клавиатуру не обработает. Но если вы возьмете что-то на базе LPC1768, то я вам давал ссылку на готовый стэк что обработает клавиатуру. Наверняка можно найти что-то и поменьше что сможет обработать клавиатуру и выдать вам данные в каком-то понятном виде, UART или что-то типа. Это близко к идее использовать PS/2, только интерфейс будет стандартный...