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"

5 réponses

1 2 3
Avatar
Nicolas George
DINH Viêt Hoà wrote in message :
API ncurses ?
y-a-t-il compatibilité avec les différents types de terminaux ?


C'est une sur-couche de ncurses, qui utilise cette dernière pour consulter
les bases de données terminfo, mais fait soi-même la recomposition des
séquences d'échappement en touches. En prime, ça fait aussi la recomposition
de séquences d'octets en Unicode dans tous les encodages supportés par
l'iconv du système, ce qui était le but principal de l'opération.

Mais je préfère ne pas trop en parler pour le moment, on m'accuse déjà
beaucoup de produire du vaporware :)

Avatar
Nicolas George
Stephane Chazelas wrote in message
:
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.


J'ai beau retourner cette réponse dans ma tête, je ne vois pas ce qu'elle
explique. Ce dont il est question, il me semble, c'est l'envoi de Esc O
plutôt que Esc [ comme préfixe des touches fléchées. Or ce changement est
coplètement indépendant du mode du terminal : en mode canonique ou pas, les
touches fléchées peuvent envoyer l'une ou l'autre séquence.

Bref : pourquoi cet effort d'avoir une séquence d'échappement qui change le
codage des touches ?

Avatar
Jean-Marc Bourguet
Nicolas George <nicolas$ writes:

Bref : pourquoi cet effort d'avoir une séquence d'échappement qui
change le codage des touches ?


Permettre de passer d'un mode ou la sequence est interpretee par l'OS
a un autre ou elle l'est par l'application. Il faut naturellement un
OS qui soit prevu pour (ce qui n'est pas le cas d'Unix).

A+

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Stephane Chazelas
2004-12-8, 13:17(+00), Nicolas George:
[...]
Bref : pourquoi cet effort d'avoir une séquence d'échappement qui change le
codage des touches ?


Mon explication n'etait pas tres satisfaisante, d'autant qu'en
mode icanon, un backspace par exemple effacera les sequences de
positionnement de curseur et pas seulement le texte entré.

La raison doit etre plutot historique.

application mode:
sequence envoyees a l'application qui n'ont pas de
signification pour le terminal

numeric mode:
1 2 3 4...

normal mode:
(avec echo et -echoctl) fait bouger le curseur (mais sont
envoyee a l'application quand meme, meme si ca ne doit pas
etre le but). En gros la touche <Up> envoie cuu1, le code qui
fait monter le curseur d'1 ligne, et comme ca peut etre ^Y,
c'est pas bon, parce que, si on veut l'interpreter comme la
touche <Up>, on peut le confondre avec <Ctrl-Y>

Les applications passent en application mode, parce qu'elles
veulent savoir quelle touche a ete frappee. Elles peuvent rester
en mode normal pour que le terminal fasse le boulot de bouger le
curseur a leur place sur frappe de ces touches (pas tres utile
cela dit).

Par exemple, pour vt220, cud1 est ^J (n), je ne sais pas si la
frappe de <Down> envoie ^J en normal mode, mais si c'est le cas,
je comprends la necessité d'un application mode pour que les
applications fassent la difference entre <Enter> et <Down>.

Maintenant, ce n'est peut-etre pas la bonne explication non
plus.

--
Stephane

Avatar
Laurent Wacrenier
DINH Viêt Hoà écrit:
combinaison TERM séquence
xterm X11 xterm ESC [ F


Cela dépend du paramétrage de xterm. Selon que "vt220 keyboard" est
mis ou pas (dans le menu de gauche), il envoie

ESC [ F ou ESC [ 4 ~

Enfin, cette option dépend d'un tas de ressouces
(sunKeyboard, sunFunctionKeys, scoFunctionKeys, hpFunctionKeys)
Le comportement peut être différent si elles sont activées ou non.

C'est indépendant de $TERM.

1 2 3