If scene.kb.keys is nonzero, one or more keyboard events have been stored, waiting to be processed.
Executing key = scene.kb.getkey() obtains a keyboard input and removes it from the input queue. If there are no events waiting to be processed, getkey() waits until a key is pressed.
If len(key) == 1, the input is a single printable character such as 'b' or 'B' or new line ('\n') or tab ('\t'). Otherwise key is a multicharacter string such as 'escape' or 'backspace' or 'f3'. For such inputs, the ctrl, alt, and shift keys are prepended to the key name. For example, if you hold down the shift key and press F3, key will be the character string 'shift+f3', which you can test for explicitly. If you hold down all three modifier keys, you get 'ctrl+alt+shift+f3'; the order is always ctrl, alt, shift.
Here is a test routine that let's you type text into a label:
prose = label() # initially blank text
if scene.kb.keys: # is there an event waiting to be processed?
s = scene.kb.getkey() # obtain keyboard information
if len(s) == 1:
prose.text += s # append new character
elif (s == 'backspace' or s == 'delete') and len(prose.text) > 0:
prose.text = prose.text[:-1] # erase one letter
elif s == 'shift+delete':
prose.text = '' # erase all the text
Note that mouse events also provide information about the ctrl, alt, and shift keys, which may be used to modify mouse actions.
You can also input a line of text from the keyboard by highlighting the output window (where print statements are displayed), using the standard Python function raw_input(). The statement text = raw_input() accepts a line of typing ending with Enter and sets text to the input, not including the end-of-line. The statement text = raw_input('Type something: ') prompts for the input before you type.