OVH Cloud OVH Cloud

terminal et OS X

25 réponses
Avatar
DINH Viêt Hoà
Bonjour,

J'ai un comportement très bizarre du terminal sur Mac OS X.

Je m'explique :

Dans un shell bash (que ce soit xterm X11 ou Terminal.app),
lorsque je tape Ctrl-V, End

j'obtiens la séquence : ^[[F

Sous linux, j'obtiens plutôt la séquence : ^[[4~

Y-a-t-il un explication à cette différence ?

De plus, lorsque je me connecte depuis un shell Mac OS X à un linux,
j'obtiens la séquence ^[[4~, soit la séquence obtenue sous Linux.

Quelqu'un a-t-il une explication logique à tout cela ?

--
DINH V. Hoa,

"Il y a anguille sous roche"

10 réponses

1 2 3
Avatar
Stephane Chazelas
2004-12-6, 17:53(+00), Nicolas George:
Stephane Chazelas wrote in message
:
(EOF, c'est l'equivalent en mode keypad de E[F)


Ah, peut-être quelqu'un ici poura me renseigner sur ce point : quel est
l'_intérêt_ de changer le codage ainsi ?


Ca doit etre quelquechose comme, on peut passer le keypad en
mode normal (<Up> envoie le code qui dit au terminal de faire
monter le curseur) soit en mode numeric, soit on laisse
l'application decider quoi faire avec.

En mode normal et en mode icanon, on peut bouger le curseur et
entrer du texte localement (sans que le terminal envoie quoi que
ce soit a l'application) et tout est envoyé d'un coup a
l'application sur frappe de entree.

Le mode "application" du keypad ne fait du sens que quand on
n'est pas en icanon, je suppose.

--
Stephane


Avatar
DINH Viêt Hoà

Ca doit etre quelquechose comme, on peut passer le keypad en
mode normal (<Up> envoie le code qui dit au terminal de faire
monter le curseur) soit en mode numeric, soit on laisse
l'application decider quoi faire avec.

En mode normal et en mode icanon, on peut bouger le curseur et
entrer du texte localement (sans que le terminal envoie quoi que
ce soit a l'application) et tout est envoyé d'un coup a
l'application sur frappe de entree.

Le mode "application" du keypad ne fait du sens que quand on
n'est pas en icanon, je suppose.


et tu sais comment ncurses fait pour agréger les séquences envoyées
afin de transmettre à l'application un seul code ?

(J'ai un problème qui fait que les codes ESC [ A sont envoyés
successivement à l'application au lieu d'un code fléche haut)

--
DINH V. Hoa,

"Pétage de plomb, excès de bière, de coke... probablement..."
-- Emmanuel Delahaye

Avatar
Stephane Chazelas
2004-12-7, 14:25(+01), DINH Viêt Hoà:
[...]
et tu sais comment ncurses fait pour agréger les séquences envoyées
afin de transmettre à l'application un seul code ?

(J'ai un problème qui fait que les codes ESC [ A sont envoyés
successivement à l'application au lieu d'un code fléche haut)


Faut utiliser keypad(3NCURSES).

Alors, quand elle voit un <Esc> elle attend les autres
caracteres.

--
Stephane

Avatar
DINH Viêt Hoà

et tu sais comment ncurses fait pour agréger les séquences envoyées
afin de transmettre à l'application un seul code ?

(J'ai un problème qui fait que les codes ESC [ A sont envoyés
successivement à l'application au lieu d'un code fléche haut)


Faut utiliser keypad(3NCURSES).

Alors, quand elle voit un <Esc> elle attend les autres
caracteres.


j'utilise déjà ceci pour initialiser ncurses :

<<
initscr();
raw();
keypad(stdscr, TRUE);
noecho();




n'y-a-t-il pas un genre de timeout qui ferait que ça ne fonctionne pas ?

genre j'ai les flèches haut et bas qui marchent dans bash mais pas dans
mon application.
Je suppose que bash ne passe pas par ncurses.

--
DINH V. Hoa,

"Pétage de plomb, excès de bière, de coke... probablement..."
-- Emmanuel Delahaye


Avatar
Laurent Wacrenier
DINH Viêt Hoà écrit:
n'y-a-t-il pas un genre de timeout qui ferait que ça ne fonctionne pas ?


Éventuelement, selon si notimeout() est appelé.
Mais le timeout devrait être suffisant.

Avatar
Nicolas George
Laurent Wacrenier wrote in message
:
Éventuelement, selon si notimeout() est appelé.


Je n'ai jamais réussi à faire fonctionner les fonctions de timeout de
ncurses de manière satisfaisante : je me retrouvais systématiquement avec un
timeout d'une seconde, quoi que je fasse. J'ai fini par décider de ne plus
jamais utiliser les fonctions de décodage automatiques, ce qui a d'autres
avantages (pouvoir attacher plusieurs séquences à une même touche pour se
prémunir contre les terminfo cassées, par exemple).

Avatar
Stephane Chazelas
2004-12-7, 15:43(+01), DINH Viêt Hoà:
[...]
j'utilise déjà ceci pour initialiser ncurses :

<<
initscr();
raw();
keypad(stdscr, TRUE);
noecho();




[...]

genre j'ai les flèches haut et bas qui marchent dans bash mais pas dans
mon application.
Je suppose que bash ne passe pas par ncurses.


Tu dois ne pas avoir d'entree pour kcu{b,f,u,d}1 dans la base
terminfo.

J'imagine que bash hardcode ces valeurs pour des cas comme ca.

Tu peux utiliser define_key(3NCURSES) pour ca.

--
Stephane



Avatar
DINH Viêt Hoà

Je n'ai jamais réussi à faire fonctionner les fonctions de timeout de
ncurses de manière satisfaisante : je me retrouvais systématiquement avec un
timeout d'une seconde, quoi que je fasse. J'ai fini par décider de ne plus
jamais utiliser les fonctions de décodage automatiques, ce qui a d'autres
avantages (pouvoir attacher plusieurs séquences à une même touche pour se
prémunir contre les terminfo cassées, par exemple).


et tu as regroupé tout cela dans une nouvelle bibliothèque ?
genre yacurses ?

--
DINH V. Hoa,

"Pétage de plomb, excès de bière, de coke... probablement..."
-- Emmanuel Delahaye

Avatar
Nicolas George
DINH Viêt Hoà wrote in message :
et tu as regroupé tout cela dans une nouvelle bibliothèque ?
genre yacurses ?


C'est en cours. J'avais fini, et il y a une semaine j'ai décidé d'ajouter le
support de la souris, donc c'est passé subitement l'état d'à moitié
terminé. Rien n'est encore publié, parce que ça manque lourdement de test.

Avatar
DINH Viêt Hoà

DINH Viêt Hoà wrote in message :
et tu as regroupé tout cela dans une nouvelle bibliothèque ?
genre yacurses ?


C'est en cours. J'avais fini, et il y a une semaine j'ai décidé d'ajouter le
support de la souris, donc c'est passé subitement l'état d'à moitié
terminé. Rien n'est encore publié, parce que ça manque lourdement de test.


API ncurses ?
y-a-t-il compatibilité avec les différents types de terminaux ?

--
DINH V. Hoa,

"Pétage de plomb, excès de bière, de coke... probablement..."
-- Emmanuel Delahaye


1 2 3