Brand new to aduino, need quick guidance on where to start

I have a specific project in mind that I am having a hard time figuring out exactly where to start. The project consists of the following setup:

[Custom Application (i.e. Java)]
connects to (via USB hopefully)
[Arduino (+applicable shields)] : which performs USB Mouse & Keyboard emulation
connecting to (via USB hopefully)
[the PC]

Basically, I want to control mouse and keyboard of the PC from a java program (if possible). I think I remember coming across an SDK for Java & Arduino, but I am not exactly sure what components I need to purchase for the hardware layer [Arduino (+applicable shields)]. Once I know that the components I purchase will do the job I need, I can then learn how to program it correctly.

The nano + the USB Host Shield seems to be all I might need, but I wanted to double check if that makes sense to this community.

Long term, I would love to be able to reverse the data flow and record mouse/keyboard events back into the application. Hopefully I would not need a secondary hardware configuration to achieve this secondary goal.

I have looked at the postings at http://hunt.net.nz/users/darran/, but because I am so new to arduino, I am not sure if hardware stack mentioned (nano + USB Host Shield) is transferable to this project.

Any quickstart advice would be greatly appreciated. I apologize in advance for my ignorance, but I figure I have to start somewhere.

There is a fellow working on the same thing right now - http://arduino.cc/forum/index.php/topic,60574.0.html -

Thanks for the reply!

[Probably because I am so inexperienced right now] The project in the given link seems somewhat different from what I am trying to do. I need to emulate both the mouse and keyboard at the same time, and do so from an application. Eventually the hardware will need to sit between a mouse and keyboard and replay those events to the PC. The application I am referring to will be sitting on a separate machine that the PC being acted upon by the emulated mouse and keyboard events.

[Real USB Mouse+Keyboard]
---communicates/plugs-into--->
[PC1 with custom app]
---connects-to--->
[Arduino, receiving instructions, sending out emulated mouse and key events]
---connects-to--->
[PC]

I just want to double check what will be my Arduino hardware requirements for something like this. It basically needs to take a (hopefully USB) connection from the PC with the driving program, and receive instructions on what key and mouse events to emulate. Then it needs to connect to the PC and be seen by the PC as both a mouse and keyboard (can this be done with one USB connection, or might I need two?) It does not seem that I can complete this setup with just the Nano board, and seems like I may need a USB HID Shield, but before I purchase these, I wanted to double check that I'm considering everything I should be.

I apologize again, because I am just starting, it seems hard to extract what exactly is applicable to me from the referenced article. I figured my best shot was getting advice on what my hardware requirements would be to start, and then figuring out as I go how to eventually get everything working as desired.

[Real USB Mouse+Keyboard]
---communicates/plugs-into--->
[PC1 with custom app]
---connects-to--->
[Arduino, receiving instructions

This much is easy.

sending out emulated mouse and key events]
---connects-to--->
[PC]

This is the hard part. The Arduino has one serial port, with a USB->serial converter. The Arduino can connect to one serial port at a time.

Pretending to be an HID is not an easy thing to do. HIDs are typically USB masters - they issue commands that the USB slave (typically the PC) needs to respond to. The Arduino is NOT a USB master/host.

There are USB Host shields that can connect to the Arduino, There is a library that allows the Arduino with USB Host shield to do some things. Whether or not it allows you to do everything you want, or not, is up to you to determine.