import bpy
import bgl
import blf
import time

# information for the add-ons window
bl_addon_info = {
    'name': '3D View:Screencast Key Status Tool',
    'author': 'Paulo Gomes',
    'version': (0,4),
    'blender': (2, 5, 4),
    'location': 'View3D > Spacebar > Search for "Screencast Key Status Tool"',
    'description': 'Display keys pressed in the 3d-view, useful for screencasts.',
    'warning': '',
    'wiki_url': '',
    'tracker_url': '',
    'category': '3D View'}

def draw_callback_px(self, context):
    # draw text in the 3d-view
    blf.size(0, 20, 72)
    final = 0

    # only display key-presses of last 2 seconds
    for i in range(len(self.key)):
        if time.time()-self.time[i] < 2:
            blf.position(0, 15, 50+20*i, 0)
            blf.draw(0, self.key[i])
            final = i
        else:
            break

    # get rid of statuses that aren't displayed anymore
    self.key = self.key[:final+1]
    self.time = self.time[:final+1]

class ScreencastKeysStatus(bpy.types.Operator):
    '''Draw keys pressed in 3DView'''
    bl_idname = 'view3d.screencast_keys'
    bl_label = 'Screencast Key Status Tool'

    def modal(self, context, event):
        context.area.tag_redraw()

        # keys that shouldn't show up in the 3d-view
        ignore_keys = ['LEFT_SHIFT', 'RIGHT_SHIFT', 'LEFT_ALT',
        'RIGHT_ALT', 'LEFT_CTRL', 'RIGHT_CTRL', 'TIMER', 'MOUSEMOVE',
        'MIDDLEMOUSE','LEFTMOUSE', 'RIGHTMOUSE', 'WHEELDOWNMOUSE',
        'WHEELUPMOUSE']

        if event.value == 'PRESS':
            # add key-press to display-list
            sc_keys = []

            if event.shift:
                sc_keys.append('Shift ')

            if event.alt:
                sc_keys.append('Alt ')

            if event.ctrl:
                sc_keys.append('Ctrl ')

            if event.type not in ignore_keys:
                sc_keys.append(event.type)

                self.key.insert(0, '+ '.join(map(str, sc_keys)))
                self.time.insert(0, time.time())

        if event.type == ('F7'):
            # stop script
            context.region.callback_remove(self._handle)
            return {'CANCELLED'}

        return {'PASS_THROUGH'}

    def invoke(self, context, event):
        if context.area.type == 'VIEW_3D':
            # start script
            context.window_manager.add_modal_handler(self)

            self._handle = context.region.callback_add(draw_callback_px, (self, context), 'POST_PIXEL')
            self.key = []
            self.time = []

            return {'RUNNING_MODAL'}

        else:
            # operator not invoked from within the 3d-view
            self.report({'WARNING'}, 'View3D not found, cannot run operator')
            return {'CANCELLED'}

def register():
    pass

def unregister():
    pass

if __name__ == '__main__':
    register()
space_view3d_screencast_keys

Un script que todavía se está desarrollando y que podemos copiarlo desde arriba, descargarlo desde space_view3d_screencast_keys y tambien podemos descargar desde la página… Link

Es un script que funciona enseñando en pantalla las pulsaciones de nuestro teclado; de momento solo funcionas con las letras, pero supongo que pronto lo tendrán terminado para las teclas de control también.

Para cargarlo en Blender 2.54, abrimos el editor de textos.

Cargamos el script y presionamos Alt+P , o como en la imagen Text > Run Script

Esto carga el script en el programa y para activarlo lo debemos hacer desde View3D > Spacebar > Serarch

O lo que es lo mismo desde la pantalla presionamos barra espaciadora y en búsqueda, hacemos un BUSCAR de, por ejemplo, Screen.

Y nos sale Screencast Key Status Tool que es la que buscamos. La presionamos y a partir de ese momento nos irán saliendo las letras en el visor.

Y como vemos en el recuadro inferior izquierdo, tenemos las teclas que hemos presionado. De momento, funcionan por tiempo, unos dos segundos, me parece; o si movemos ratón o presionamos otra tecla, que se borrará automáticamente.