Capturar teclar quando presionada

1. Capturar teclar quando presionada

Aprendiz - CE
aprendiz_ce

(usa Debian)

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.


  


2. Re: Capturar teclar quando presionada

Mauricio Souza Klein
Hebang

(usa Arch Linux)

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

Sandro Marcell
SMarcell

(usa Slackware)

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

Aprendiz - CE
aprendiz_ce

(usa Debian)

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

Aprendiz - CE
aprendiz_ce

(usa Debian)

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

Sandro Marcell
SMarcell

(usa Slackware)

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

"Parada total" em que sentido?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts