# Keyboard Interactions

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

while 1:

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.