Bonjour,
J'effectue le portage d'une application de unixware SCO vers linux redhat : Red Hat Enterprise Linux ES release 3 (Taroon Update 4)
Kernel 2.4.21-27.EL on an i686
Mon problème est d'obtenir,pour la touche "Entrée", le code 13.
On se connecte à l'application à l'aide d'un émulateur de terminal configuré en VT220.
Si je lance la commande showkey -a j'obtiens bien un code 13 :
^M 13 0015 0x0d
par contre quand l'application lit le clavier à l'aide de read(stdin..., elle récupère un code 10
J'aimerai donc savoir comment on configure linux pour obtenir un code 13 lors de la lecture à l'aide de read(stdin..
(ne pas perdre de vue que l'application est appelée à partir d'un émulateur VT220).
Merci par avance de vos réponses
pledreau
# stty
Posté par netsurfeur . Évalué à 3.
stty -a
Si tu as l'option icrnl, tu peux la désactiver avec:
stty -icrnl
[^] # Re: stty
Posté par pld . Évalué à 1.
Ce qui se passe c'est que la fonction read(stdin... ne voit pas que j'ai appuyé sur la touche "Entrée", mais j'ai le même problème pour les touches flèches par exemple. Le terminal (en l'occurence WTERM) affiche le code suivant ^M pour entrée). La fonction read quant à elle reste bloquée, en attente!!
ça me laisse un peu perplexe.
[^] # Re: stty
Posté par Olivier Jeannet . Évalué à 1.
Il me semble que par défaut, la fonction read(stdin, ..) est bufferisée, et qu'il faut appuyer sur Entrée pour que la fonction rende la main. Pour arriver à ce que tu veux, il faut passer le terminal en mode "brut" (raw), et là tu auras accès aux pressions des touches, y compris les touches flèches, mais peut-être avec une autre fonction que read().
Jette un oeil sur le code de "VI" par exemple, pour voir comment il lit le clavier.
[^] # Re: stty
Posté par pld . Évalué à 1.
les flèches sont correctement traitées.
merci
[^] # Re: stty
Posté par Olivier Jeannet . Évalué à 1.
les flèches sont correctement traitées.
C'est sans doute encore mieux d'effectuer cette opération depuis le programme, via l'API qui convient (je ne parle pas de faire un system("stty raw -echo");).
[^] # Re: stty
Posté par pld . Évalué à 1.
Ce qui se passe c'est que la fonction read(stdin... ne voit pas que j'ai appuyé sur la touche "Entrée", mais j'ai le même problème pour les touches flèches par exemple. Le terminal (en l'occurence WTERM) affiche le code suivant ^M pour entrée). La fonction read quant à elle reste bloquée, en attente!!
ça me laisse un peu perplexe.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.