Pular para o conteúdo

Capturar teclar quando presionada

Responder tópico
  • Denunciar
  • Indicar

1. Capturar teclar quando presionada

Enviado em 10/05/2011 - 11:50h

Quero interromper um loop quando o usuário precinar uma determinada tecla. Como faço isso?
Grato e aguardo qualquer tipo de ajuda.

Responder tópico

2. Re: Capturar teclar quando presionada

Enviado em 10/05/2011 - 12:05h

Olha, eu não conheco manipulador de eventos de teclado no bash. Eu sei que C possui isso, mas bash acho que não.

O que poderia resolver seu problema é usar sinais. Pesquise sobre o comando "trap" do bash. Ele permite que voce execute uma certa ação quando receber um sinal.

Por exemplo, faça seu loop executar enquanto a variavel "cont" for igual a 1.
Faça uma trap tratando o SigInt (Control + C). Quando receber esse sinal, altere o valor de "cont" para 0 (zero). Isso fara com que seu loop pare.

Espero ter ajudado!

3. Re: Capturar teclar quando presionada

Enviado em 10/05/2011 - 15:47h

Você pode tentar algo do tipo:

=====================================
#!/bin/bash
#
echo ":: Pressione a tecla 's' para sair ::"
tecla=""

# Poe o terminal em modo especial de interpretacao de caracteres
stty -echo -icanon min 0

while true
do
[ "$tecla" = "s" ] && break
echo "Hello World!"
sleep 1
read tecla
done

# Restaura o modo padrao
stty sane

echo "Tchau loop."

exit 0
=====================================

Mais detalhes?
man bash
man stty

4. Re: Capturar teclar quando presionada

Enviado em 12/05/2011 - 11:15h

SMarcell,

Essa "read" não vai causar uma parada total não?

Grato.

5. Re: Capturar teclar quando presionada

Enviado em 12/05/2011 - 11:17h

Hebang,

A idéia é boa, mas acho que não vai funcionar como eu espero não.

Grato pela atenção.

6. Re: Capturar teclar quando presionada

Enviado em 13/05/2011 - 09:11h

"Parada total" em que sentido?

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder