Есть готовые библиотеки дл USB HID
http://microsin.ru/content/view/1110/44/Цитата
В архив библиотеки LUFA добавлены многочисленные примеры демонстрационных программ, которые показывают, как использовать библиотеку. Примеры разработаны для макетных плат USBKEY, STK525, STK526, EVK527, XPLAIN и RZUSBSTICK (в большинстве случаев в двух вариантах - Low Level API и USB Class Driver). Вот список примеров:
* USB устройство Audio In
* USB устройство Audio Out
* USB устройство двухканального виртуального последовательного порта (Dual Virtual Serial Device)
* стандартное устройство USB HID (Generic HID Device)
* стандартный хост USB HID
* USB джойстик
* USB хост джойстика
* USB клавиатура
* USB устройство клавиатура/мышь
* USB хост клавиатуры
* USB клавиатура в двойном режиме (хост или устройство)
* устройство памяти USB ("флешка", MSD, Mass Storage Device)
* USB устройство Mass Storage/клавиатура
* USB хост Mass Storage
* USB устройство MIDI Device
* USB хост MIDI
* USB мышь
* USB хост мыши
* USB хост принтера
* устройство Ethernet RNDIS (CDC)
* хост Ethernet RNDIS (CDC)
* хост Still Image
* USB устройство виртуального последовательного порта
* USB устройство виртуального последовательного порта и мыши
* USB хост виртуального последовательного порта
Пакет библиотеки LUFA также содержит загрузчики программного кода (bootloader) для следующих классов USB:
* класс CDC, протокол совместим с AVR109 (AVRDude)
* класс DFU, протокол совместим с Atmel DFU (Atmel FLIP, программатор DFU)
* класс HID, протокол Teensy (Teensy Loader)
В пакете библиотеки LUFA имеются также следующие проекты с открытым исходным кодом:
* адаптер программатора Arduino для макетной платы Benito board
* клон программатора AVRISP-MKII, совместимого со средой программирования AVRStudio (поддерживаются протоколы ISP, PDI и TPI).
* USB хост пусковой установки ракет от Дейва Флетчера
* считывающее устройство для магнитной полосы, совместимый Stripe Snoop от Денвера Джинджерича
* проект светодиодной (LED) напоминалки, с несколькими примерами для .NET хоста
* переходник USB <--> последовательный порт
* логгер данных температуры, который записывает данные в собственную память Dataflash, в дисковый раздел FAT
* вебсервер с использованием uIP, работающий через подключенное устройство RNDIS
* программатор XPLAIN PDI, основанный на мосте UART <--> USB
...а вот проект например -
http://generichid.sourceforge.net/