Python: Função para pegar um caractere do teclado

julho 16th, 2012 by rudsonalves Leave a reply »

Em raras ocasiões tive a necessidade de ter uma função para pegar apenas um caractere do teclado. Me lembro que no Quick Basic, uma das minhas primeiras linguagens de programação, havia uma função getchar ou algo parecido. Esta função é bem útil quando se desenvolve programas para console, sem as modernas interfaces gráficas.

Estava implementando uma função para criar scripts automatizada, a qual fazia diversas perguntas de sim/não, dai a necessidade da função. Depois de uma busca pela rede encontrei este código abaixo, que me foi útil por algum tempo.

Trabalhando mais no programa acabei por remover o código, pois ficou sem aplicação para a forma que implementei o programa, seguindo mais o padrão dos comandos do unix. Para não perder esta pérola, coloco mais uma cópia do código na rede.

import sys, os, tty, termios
 
TERMIOS = termios
 
def getkey():
    '''getkey(): one key'''
    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)
    c = None
    try:
        c = os.read(fd, 1)
    finally:
        termios.tcsetattr(fd, TERMIOS.TCSAFLUSH, old)
    return c

Infelizmente perdi a referência do autor, mas se alguém encontrar, por favor me repasse para dar o devido mérito.

Advertisement

Deixe uma resposta