AVR with embedded USB?

I would be interested in seeing your shield/code for this.

Well, it's not ready for prime-time and is a horrible hack, but in the spirit of the thread: http://orbduino.sourceforge.net, go to downloads (I haven't even set up the page yet, so the only things there are the files; orb_board is the Eagle file, orb_library is the library (like UsbKeyboard, UsbJoystick, etc), and orb_sketches is the actual sketch (orb1 is just a testing sketch; hidsporb is the one that actually makes the thing go)).

The Eagle shield is my first attempt at designing a PCB, so it's not great; this is a revision of the "one layer with three jumpers" design that I etched in my kitchen. It looks terrible, but I can now use a $300 CAD device (the SpaceBall 4000FLX, about $20 from eBay) to play Left4Dead, which is good fun. Also works like a champ in Google Earth. You can see why I had high hopes for using Teensy, though-- you could get rid of the USB B socket, the zener diodes, and the resistors (and probably the DIP switch) and just have a socket for the Teensy, a socket for the Max233, and the DB9 plug; it'd be pretty sweet.

Basically this was done as a continuation of the Hidsporb driver mentioned earlier, because I like old gaming devices like the SpaceOrb 360 and think it's a pity they aren't supported by modern operating systems. I've ordered a batch of the boards from Seeed for the tiny SpaceOrb community (it must be at LEAST five people, lol : http://www.jaycrowe.com), so until they get the shields and their arduinos and other people besides me have a chance to test it out, it's still well in beta, but hopefully that'll be fixed in the next week or two. I'm curious to see if anyone expands it for use with, say, old serial joysticks or racing wheels. Unless they're changing the logical device (what Windows sees--not necessary with a joystick but if you wanted to implement hat-switches or a steering wheel, maybe) you'd just need to implement a "physical_device" object and a "translator" object. I tried making those proper abstract base classes but the Arduino environment got fussy about it and it probably used memory I didn't need to. Only the back end ("orb_device.h") would need to be rewritten significantly to use, say, LUFA on an AT90USB chip.

It does use PROGMEM pretty extensively for bindings (so you have to reflash to change bindings) but it seemed the best way to use memory. Also, the shield has a DIP switch so that you can disable communications to the orb for programming and reenable it for use (and so you can turn off "transmit to the orb" and still debug with serial messages). It's not elegant, but it works OK.

I still may have to implement a "sensitivity curve" like I did with HidSporb; it doesn't quite "feel" right with a linear response (the original orb driver and Hidsporb implemented a sort of "cubic curve" for response which felt much better. But that shouldn't be too hard; I may add it this weekend but honestly I'm tired of working on it for a while and want to get back to the game-playing business, which is why I wrote it to begin with. I'll make a proper announcement once it's tested (and has a better website!).