There was a thread in the Computers & Software forum a few days ago in which pretty much the same question was asked:http://www.eham.net/ehamforum/smf/index.php/topic,91049.0.html
A while ago I had to demonstrate some Morse code (and take part in a competition against text messaging), and I used CWtype
and a paddle connected to the parallel port, with great success. CWtype acts as an electronic keyer and prints the letters sent on the screen.
There are other good options for straight keys mentioned in the other thread.