¿Cuál es la forma correcta de leer sys.stdin en iPython qtconsole?

Estoy tratando de escribir una biblioteca que funcione tan bien en plataformas como Python, iPython y dentro de qtConsole.

Todo funciona excepto la interacción con mi teclado.

Quiero cosas como ‘presionar cualquier tecla’ o ‘presionar S / N / Esc’

En Windows esto es fácil con msvcrt y kbhit. (aunque no he probado qtconsole en Windows) En Linux, esto funciona usando stdin y termios tanto en Python como en iPython.

El problema es que parece qtconsole usa stdin no bloqueante y no soporta termios.

Usted pensaría que esto sería una buena cosa, simplemente enjuague stdin y luego verifique si hay un personaje. El problema es que esto parece no funcionar. Nunca devuelve un personaje. Es como si el propio ipython se interponga en el camino de la alimentación estándar desde la terminal.

¿Cuál es la forma correcta de leer sys.stdin en qtconsole?

(Por cierto, no hay una etiqueta para qtconsole, esta pregunta es sobre qtconsole, no solo iPython)