[Python-es] Detección de pulsación de una tecla

Tomás Javier Robles Prado tjavier en usuarios.retecal.es
Mie Sep 11 18:48:54 CEST 2002


Hola a todos,

¿Alguien sabe si existe en Python alguna función estilo keypressed de Pascal? 

while not tecla_pulsada() :
	instrucción 1
	instruccion 2
	...

Esa es la idea. Busco una solución para Unix/Linux, pero si existe una 
multiplataforma, mucho mejor. Me sugirieron cosas como

def parada():
	cant = os.fstat(sys.stdin.fileno())[stat.ST_SIZE]
	if cant > 0:
		return 1
	else:
		return 0

o

import termios, sys, os 
fd = sys.stdin.fileno() 
old = termios.tcgetattr(fd) 
new = termios.tcgetattr(fd) 
new[3] = new[3] & ~termios.ICANON & ~termios.ECHO 
new[6][termios.VMIN] = 1 
new[6][termios.VTIME] = 0 
termios.tcsetattr(fd, termios.TCSANOW, new) 
s = ''    # We'll save the characters typed and add them to the pool. 
try: 
     while 1: 
          c = os.read(fd, 1) 
          print "Got character", `c` 
          s = s+c 
finally: 
     termios.tcsetattr(fd, termios.TCSAFLUSH, old) 

pero ninguna de las dos sirven. Quizá una combinación de ambas... ¿alguna 
idea?

Gracias
-- 
Un saludo,
T. Javier Robles Prado tjavier en usuarios.retecal.es
http://users.servicios.retecal.es/tjavier





Más información sobre la lista de distribución Python-es