Final update.
Well, I finally got it all figured out. Turned into 3 functions altogether. The key (so to speak) was learning what the KeyCode (from the KeyDown event) and KeyAscii (from the KeyPress event) values actually represented. So I have two functions for converting the "UIOJKLM,." keys to numbers or uppercase characters, depending on whether the control is alphanumeric or numeric-only and whether the Shift key is pressed.