I have been working on this device for a while, and have come up with the following: The protocol is simple: ?? ?? 52 70 ?? ?? ?? ?? KC 1 [DOWN] ?? ?? 52 70 ?? ?? ?? KC Key 48 1 49 2 50 3 51 4 52 5 53 6 54 7 55 8 56 9 57 Mode A 58 Mode B The ?? bits represent seemingly random numbers that appear through /dev/input/event3, which gets created when the keyboard is plugged in. I'm in the process of creating a userland application that reads from /dev/input/event3 and acts accordingly, based on user preferences. Should it be the job of the kernel to do the command mapping (and subsequently create a virtual keyboard), or should it stay as a userland-only program? I would be intrigued to know. Chris