Hi Kauffman,
had a second look at your code and edited a little
The things i've done use information from the key down event for state selection.
The plotmods.shift info makes the Shift-down shift register obsolete
The char number returns the ascii code of the key, if the shift is down 32 is subrtracted from the ASCII code to get the lower case, this could even be done by a to lower case function
if the keydown was shift then the just-shift entered shift register is set
I removed the fire user event outside the while loop, also remember to destroy the event registration and the user event.
Just a few notes, try to store the location of X and Y inside the draw point and text vi.