I wouldn't call it a workaround, but you could make your own on-screen keyboard.
To cut back on needing an event for every single key, put all the keys into a family, create a family variable called key or something and assign the corresponding letter to each key. When the user taps a key, add its key value to the end of a text object (the contents of which are tested to determine if the user is correct or now). Include a backspace key to remove the letter on the end of the text object.
That should be all you need, I don't think different letter cases would be necessary.