Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/08/2017, à 22:12

Hizoka

(Résolu] Différentier les flèches et echap

Bonsoir,

je suis confronté à un problème depuis plusieurs heures...

j'ai beau tester plein de trucs mais rien à y faire...

soit :

Touche=" "

while [[ ${Touche} ]]
do
  IFS= read -r -sn 1 Touche

  case "${Touche}" in
    $'\033') echo "033";;
    $'\104') echo "104";;
    $'\103') echo "103";;
    $'\101') echo "101";;
    $'\102') echo "102";;
    $'\133') echo "133";;
    *) echo "et plein dautres trucs..." ;;
  esac
done

En sachant qu'en appuyant sur  :

echap : 033
haut :033 - 133 - 101
bas : 033 - 133 - 102
gauche : 033 - 133 - 104
droite : 033 - 133 - 103

Comment faire (sans quitter la boucle pour savoir si j'ai appuyer sur echap ?!
J'ai essayé de passer par des variables, des testes de la la variable Touche...
mais rien n'y fait...

Une idée ?!

Merci !


ctac_ de developpez.net a écrit :
while  read -r -s -n 1 A
do
[ $A ] || { echo on quitte par return ; break ; }
if ([ $A = $'\033' ] ) ;then
	read -t 0
	[ $? -eq 1 ] && { echo echapp ; continue ; }
	read -r -s -n 1 A
	[ $A = $'\133' ] || { echo pas une touche qu on cherche ; break ; }
	read -t 0
	[ $? -eq 1 ] && { echo pas une touche qu on cherche ; break ; }
	read -r -s -n 1 A
	case $A in
		$'\104') echo gauche;;
		$'\103') echo droite;;
		$'\101') echo haut;;
		$'\102') echo bas;;
		*)  echo pas une touche qu on cherche ;;
	esac
	continue
else
	echo on quitte par une touche quelconque
	break
fi
done

Dernière modification par Hizoka (Le 23/08/2017, à 14:23)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne