Pergunta

Estou escrevendo um aplicativo de maldição no Python no UNIX. Quero permitir que o usuário use o CY para arrancar de um anel de matar a la emacs.

O problema é, obviamente, que o CY é capturado pelo meu shell, que envia SigtStp para o meu processo. Além disso, a CZ também resulta em que o SIGTSTP está sendo enviado, portanto, pegar o sinal significa que Cy e CZ não são distinguíveis (embora mesmo sem isso as únicas soluções que eu consigo pensar são extremamente hackish).

Sei o que estou perguntando é possível (em C, se não estiver em Python), já que o Emacs faz isso. Como posso desativar o manuseio especial do shell de certos caracteres de controle enviados do teclado e fazer com que os personagens em questão apareçam no processo do processo?

Foi útil?

Solução

Veja o termios módulo e o termios(3) página de homem.

Outras dicas

Para funcionalidade básica, use tty. Por exemplo, chamando tty.setraw(sys.stdin) colocará o terminal da entrada padrão no modo bruto.

Para o caso mais geral, Python vem com um Termios Library, mas você provavelmente precisa de alguma experiência com o Termios para saber como usá -lo.

Alternativamente, uma maneira barata é gastar stty, que é uma interface de linha de comando para Termios.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top