I need a way to convert serial input from an Arduino Uno through an usb port to keystrokes. This is for a makeshift dance mat I made to play Stepmania on, so the requirements are that I need to be able to press four different buttons- doesn't matter which, any key is fine, as well as mouse buttons, joystick commands etc., anything the game can map. I need to be able to control when the button is pressed and when it is released: this is important; simply pressing and instantly releasing a key isn't good enough, nor is rapidly pressing a key over and over again, I need to be able to simulate holding a key down exactly as if I was to hold it down on a real keyboard.
I know that the Leonardo can act as a keyboard, but I'd rather not have to buy one of those. My computer does not have a ps2 port, so I cant use any ps2 keyboard emulation solutions.
Things I've tried already:
There's a program called AAC Keys which converts serial commands to keystrokes, it works well but is incapable of holding down keys. The same goes for the SerialKeys utility in Windows NT, and anything else that uses the GIDEI protocol.
I've tried Java Robot class in Processing, but it also seems unable to hold a key down. One person says at Silicon Republic: 08/05/10 that robot works great for holding keys down, but the best I was able to get out of it was pressing a key rapidly with a loop, which isn't good enough. There are both keypress and keyrelease functions, but they seem to only work for things like holding down shift so you can capitalize a letter or pressing ctrl-alt-delete, but not actually holding down keys for an extended period of time.
I've read that Gobetwino won't work either, but haven't tried it myself.
There are some promising looking instructions at http://mitchtech.net/arduino-usb-hid-keyboard/ for turning an UNO into a hid device with a firmware update, but I can't get any of the flashing software to work. I tried Atmel Flip, first on an old Xp system, where it simply says "could not open usb device" after I select the device and on a Windows 7 system where it freezes up whenever I try to select the input option. I tried the dfu programmer on a laptop running Linux Mint, but it says that there is no device on the COM. On all three systems I can upload code to the arduino fine, I know the COM is open, I've tried bridging the reset and ground pins before flashing, and I've tried both the UNO R3 SMD (the one with the ATmega16U2) and an older UNO with 8U2, after soldering a 10k resistor to the back per the instructions.
It looks to me like the latter is the best option, but as you can see I'm having no luck with flashing the firmware. Flashing firmware sounds like a somewhat commonplace operation, so I was hoping someone here would have some advice on how I can get that to work, or give me some other ideas on how I can solve this problem.