usb HID type input/output

I got an arduino mega board for my birthday yesterday,

The plan is to use it on my bus driving simulator i am building, to handle the inputs and outputs,

Basically i need to be able to take individual button and matrix keypad inputs, and send them to the computer as individual joystick buttons (direct input i believe) i believe i'll need to have them sent as a couple of joysticks to get around the 32 button limit in windows?

Some of the switches on the real dashboard i have are latching, but the simulator expects momentory switches, so i may need to have some switches send a trigger each time the button is pressed and released.

later on i will want a few analouge inputs... just 10k potentiomiters, and have them sent to the computer as joystick axis.

Then i want some outputs, at first just things like led's to light indicator lamps on my dashboard when the ones on the simulator's dash light up, then a couple of lcd displays (1x40 and 2x24) that are in the ticket and ibis machines.

And eventually i'd like to control either servo's or stepper motors to drive a tachograph and other gauges.

All this needs to go over USB, to a computer running windows 7, 64bit,

I want to learn the coding and all that, so any pointers to where i can read up about how to turn the arduino board into a usb input/output board that's seen by the computer as a HID joystick type devise.

There are a few links in the playground here: http://arduino.cc/playground/Main/InterfacingWithHardware#USB.