>>1
Driver programming is one of the least n00b-friendly tasks ever. If you mess up, you can crash your computer pretty hard. You need to write it in C (and sometimes assembler) and you need to really understand how your processor works, how the OS works, and what you're allowed to in your drivers. There are a LOT of things that are fine in ordinary apps that just break in weird ways when you put them in driver code. Some of them are really basic, like initializing global variables. You'll also need to write the device firmware, which is a royal pain.
http://msdn.microsoft.com/en-us/library/ms809956.aspx
http://www.freesoftwaremagazine.com/articles/drivers_linux
http://developer.apple.com/mac/library/documentation/DeviceDrivers/Conceptual/WritingDeviceDriver/Introduction/Intro.html
What you're trying to do is design a HID device, so read the HID driver docs for your platform and read the HID protocol spec so your device can spit it out. It's a bit of a monster, but that's because it's flexible. You know why your BIOS has an option for USB keyboard support? It's because HID parsing is so complicated that boot loaders (like GRUB) can't handle it worth a damn. The BIOS puts your keyboard in a special compatibility (not full HID) mode just so it can understand what key is pressed.