Looking good!

About the user-input. I think you should do this by catching windows messages. If you use DirectInput you'll loose some text-editing features (e.g when you are pressing the "a", only one "a" appears but if you hold it for one sec, a lot of them will be added).

I'm not going to explain this because i haven't even done this yet, and i think you are able to figure this out yourself. You should look at WM_CHAR messages (also check MSDN for other types of windows messages that may become handy). I recall that delphi.about.com has some stuff about message handling. You might also want to take a look at that.

Good luck!