Well from looking at the rockbox code it doesn't look that difficult to program. The hard part is making the plugin interface but rockbox already has docs on that. Rockbox actually makes it very easy to do HID functions if you look at the source code of the latest build.
id = HID_KEYBOARD_F10;
rb->usb_hid_send(HID_USAGE_PAGE_KEYBOARD_KEYPAD, id);
Although it is still in development, this is absolutely not true its just the documentation was never finished or kept up to date by the Summer Of Code 2009 people who programmed it.
As can rockbox. In fact, when I plug in my microsd card, it shows 2 separate MSDs and a HID