Les terminaux asynchrones
par
popularité : 2%
Les terminaux asynchrones
Le but du jeu est d’obtenir le prompt login sur un terminal.
La gestion des terminaux asynchrones est assurée au moyen de fichiers. Suivant les systèmes, les fichiers peuvent avoir des noms différents ( s’est pour faire simple … je suppose).
I. Les fichiers avant les SV
A. /etc/ttys (BSD 4.[1-2])
:
Ce fichier comprend une ligne par liaison. La structure des lignes sont BEttyxx.
B est une valeur booléenne, 1pour le login possible et 0 dans le cas contraire
E est un caractère qui servira d’étiquette d’entrée dans le fichier /etc/gettytab pour avoir les caractéristiques de
la liaison.
ttyxx est le nom du fichier spéciaux dans le
répertoire /dev
Exemple du fichier :
14console 02ttyh0 1fttyh2 01ttyh7 |
En version BSD 4.3, il a un autre look du type :
Fichier-Spécial commande type flag1 … flagN # commentaire
B. /etc/ttytype
(BSD
4.[1-2]) :
Ce fichier permet d’associer un type de terminal à un port asynchrone pour initialiser la variable TERM automatiquement en fonction du type du terminal connecté sur ce port. La structure des lignes de ce fichier est : name ttyxx
name est le type de terminal déclaré dans la base de données /etc/termcap. Dans le cas d’un pseudo terminal ( connexion : telnet, rlogin, …), name a pour valeur network.
ttyxx est le nom du fichier spécial ce trouvant dans /dev qui sera associé à un port asynchrone ou à un pseudo terminal.
Exemple du fichier :
2392 console
vt100 tty0p0
vt200 tty0p1
network pts/1
C. /etc/securetty
(BSD
4.2, HP-UX) :
Si ce fichier existe, tout personnes ayant un UID=0 (root normalement) ne pourront se connecter que sur le(s) terminal(aux) indiquée(s) dans ce fichier. Une erreur dans ce fichier est root ne peut plus se connecté (cela pourrait être gênent … ).
Exemple du fichier :
/dev/console
/dev/ttyp0
Conseil à deux caramels :
Pour la création ou la modification de ce fichier, il est préférable d’avoir établi plusieurs connexion en temps que root sur le système. Ensuite, on teste … si gros boulette, on peut toujours remodifier le fichier en question.
Si on n’avait pas eu d’autre(s) connexion(s) ouverte(s) en temps que root est bien galère … il aurait fallu booter mini root sur le système ou sur un cd-rom.
D. /etc/gettytab
(BSD
4.[1-3]) :
Ce fichier décrit les caractéristiques de base des différents ports asynchrones. Il est utilisé par la démon getty pour paramétrer les ports asynchrones.
Il existe quatre types de champs qui sont séparés par des
deux points :
Le premier représente le nom de l’étiquette d’entrée, telle qu’on la désigne dans le fichier /etc/ttys. L’ étiquette peut avoir des alias en mettant le caractère | pour les séparés.
Les champs booléens composés de deux lettres définissent une caractéristique présente ou non.
Les champs qui sont sous la forme xx#valeur définissent les caractéristiques numériques
Les champs de la forme XX=valeur définissent les caractéristiques alphanumériques.
Exemple du fichier :
a|std.300|300-baud :nd#1:cd#1:tc=300-baud :
4|console|console HP-UX :co :rw :sp#9600
II. Pour les systèmes V R [23]
A. /etc/inittab :
Ce fichier est lu lors du démarrage du système pour le
configurer, il sert aussi pour lancer des démons getty sur les ports désirés.
Dans le troisième champ des lignes concernées, il peut y avoir off ou respawn.
Off indique que le démon getty n’est pas en action sur ce port et respawn
indique qu’il doit toujours l’être.
Exemple du fichier :
init:4:initdefault :
ioin::sysinit :/sbin/ioinitrc >/dev/console 2>&1
tape::sysinit :/sbin/mtinit > /dev/console 2>&1
muxi::sysinit :/sbin/dasetup </dev/console >/dev/console
2>&1 # mux init
stty::sysinit :/sbin/stty 9600 clocal icanon echo opost onlcr
ixon icrnl ignpar </dev/systty
brc1::bootwait :/sbin/bcheckrc </dev/console >/dev/console
2>&1 # fsck, etc.
cprt::bootwait :/sbin/cat /etc/copyright >/dev/syscon #
legal req
sqnc::wait :/sbin/rc </dev/console >/dev/console
2>&1 # system init
powf::powerwait :/sbin/powerfail >/dev/console 2>&1
# powerfail
cons:123456:respawn :/usr/sbin/getty console console #
system console
ttp1:234:respawn :/usr/sbin/getty -h tty0p1 9600
ttp2:234:off :/usr/sbin/getty -h tty0p2 9600
ttp3:234:off :/usr/sbin/getty -h tty0p3 9600
B. /etc/gettydefs :
Ce fichier joue le même rôle que le fichier /etc/gettytab
pour les systèmes BSD. Chaque entrée est séparée par une ligne vide et
chaque champ est séparé par un #.
La syntaxe de ce fichier est :
Etiquette # modes initiaux # modes finaux # identification #
étiquette suivante
Etiquette est utilisée comme point d’entrée dans
la table. Elle apparaît comme argument de la commande getty dans le fichier /etc/inittab.
Modes initiaux détermine les caractéristiques de la
liaison au moment où le processus getty affiche " login :"
sur le terminal
Modes finaux déterminent les caractéristiques de la
liaison. Ils sont positionnés juste avant que getty exécute login.
Identification est la chaîne de caractères utilisée
comme invitation au login ( généralement Login : , Console Login :)
Etiquette suivante permet si on actionne la touche break
de relire le fichier avec une autre étiquette.
Exemple du fichier :
console # B9600 SANE CLOCAL CS8 ISTRIP IXANY TAB3 HUPCL
# B9600 SANE CLOCAL CS8 ISTRIP IXANY TAB3 HUPCL
#Console Login : #console
1200 # B1200 HUPCL IGNPAR PARENB ICRNL IXON OPOST ONLCR CS7
CREAD
ISIG ICANON ECHO ECHOK PARENB ISTRIP IXANY TAB3
# B1200 SANE CS7 PARENB ISTRIP IXANY TAB3 HUPCL
#login : #2400
2400 # B2400 HUPCL IGNPAR PARENB ICRNL IXON OPOST ONLCR CS7
CREAD
ISIG ICANON ECHO ECHOK PARENB ISTRIP IXANY TAB3
# B2400 SANE CS7 PARENB ISTRIP IXANY TAB3 HUPCL
#login : #4800
C. /etc/issue :
Ce fichier au format ascii sera afficher, s’il existe avant
le prompt login lors de la connexion. Il joue le même rôle que le champ im
du fichier /etc/gettytab des version BSD 4.[2-3].
D. La commande stty
Cette commande permet d’afficher et de modifier les
caractéristiques de la connexion. Elle sera détaillée ultérieurement.
III. Principe du SAF ( System Access Facility ) SVR4 :
Le SAF est une suite de commandes qui fournit l’accès via
les ports série à des périphériques comme les modems ou les terminaux. En
plus, le SAF fournit un accès aux services réseau comme par exemple une
imprimante distante mais ce service est peu utilisé, on utilise plutôt le
système BSD dans ce cas.
La souplesse du SAF est de gérer un nombre important de
ports série, une structure hiérarchique de fichiers et de commandes
d’administration est mise en place pour contrôler chaque port individuellement
et en groupe.
SAC ( System Access Controler ) :
Processus, lancé par init à partir de /etc/inittab,
qui assure le contrôle général de l’ensemble.
Port_moniteur :
Un port moniteur gère un groupe de terminaux.
Port_service :
Un port service correspond à une voie ( un terminal ).
A. Les Port_moniteurs
1. ttymon
Les démons portmon ont pour rôle la gestion des
contrôleurs asynchrones. Ils lancent chaque fois que cela est nécessaire un
processus ttymon assurant la gestion du terminal asynchrone concerné. Le
processus ttymon remplace le processus getty.
Gestion des terminaux classiques, assure :
- l’initiation matérielle des ports
- la mise à jour des paramètres de la ligne
- l’activation du service dès qu’une connexion est établie.
Un seul processus pour un groupe de terminaux.
Le mode express de ttymon gère des terminaux
particuliers ( console par exemple ). Il est lancé directement par init via
/etc/inittab avec l’option -g.
2. muxmon
Gestion des terminaux sous le multiplexeur de voies logiques DPTG2
( ba80 ou 9766 ), assure le chargement de ces terminaux puis ttymon
prend le relais pour lancer le service.
A chaque terminal déclaré sous DPTG2, un processus muxmon
sera associé à un processus ttymon.
3. Inetd
Il est à l’écoute des demandes de services réseau et lance
le service approprié lorsqu’elles surviennent. Les services réseau sont
spécifiés dans le fichier /etc/inetd.conf.
4. listen
Pour les connexions orientées réseaux tcp/ip.
Le démon listen remplit une fonctionnalité proche de celle
assuré par le démon inetd. Il est à l’écoute des demandes de services
réseau et lance le service approprié lorsqu’elles surviennent. Les commandes pmadm
et nlsadmin permettent de configurer ce démon.
Informations préliminaires :
Un port_moniteur appelé pmtag de type pmtype
(ttymon,inetd,listen,...) pilotera un ou plusieurs terminaux appelés port_service.
Ce port_service sera défini sous un
mnémonique appelé svctag. C’est sous cette appellation que
l’administrateur du système pourra agir au niveau port_service.
B. Le fichier au niveau SAC
Le fichier /etc/saf/_sactab contient tous les
port_moniteurs et leur type qui doivent être demarré par SAC.
L’utilisateur communique avec SAC Ã travers la
commande sacadm.
Le format de la commande est :
sacadm –a -p pmtag -t type –c commande
–v version
Options :
-a : pour ajouter un moniteur de port
-p : le pmtab ( nom symbolique ) associé au moniteur de port
-t : le type de moniteur de port (ttymon)
-c cmd : la chaîne de commande cmd est utilisée pour le
démarrer un moniteur de port
-v : le numéro de version
-k : pour arrêter un moniteur de port
-r : pour supprimer un moniteur de port
-l : pour obtenir la liste des services
Pour le reste de options cf. le man adoré.
La lecture du fichier /etc/saf/_sactab se fait par la
commande :
sacadm -l
PMTAG |
Identificateur du port_moniteur |
PMTYPE |
Type du port_moniteur |
FLGS |
Indicateurs |
RCNT |
Nombre d’essais en cas de problème |
STATUS |
Etat (start, stop, enable ou disable) |
COMMAND |
Nom absolu du port_monitor à démarrer |
1. Le fichier au niveau port_moniteur
Les fichiers /etc/saf/pmtag/_pmtab contiennent
tous les services démarrés par le port_moniteur spécifié par pmtag.
L’utilisateur communique avec les port_moniteurs à travers
la commande pmadm.
Format de la commande :
pmadm –a –p pmtag –s service_tag –i identity –f
flag –v version –m "ttyadm –l tty_label –d device –T term_type
–i 'message' –s service -S y|n
"
Options :
-a : ajouter un service à un moniteur de port particulier
-p : le pmtab ( nom symbolique ) associé au moniteur de port
-s : le nom symbolique du service
-i id : l’identité à assigner au service au démarrage. id
doit être une entrée valide du fichier
/etc/passwd
-f : pour associer un drapeau (flag) au service : ce flag peut
être
u, pour créer une entrée dans /var/adm/utmp
x, pour ne pas valider le service
-v : le numéro de version du moniteur de port
-m : information de configuration spécial ttymon
fourni par la commande ttyadm.
-r : supprimer un service sur un port
-S y|n : y è contrôle soft (
Xon/Xoff) : DTE
n è contrôle hard ( DCD) :
DCE
Pour le reste de options cf. le man adoré.
Un exemple concret :
pmadm –a –p newpmtag –s ttya –i root –f u –v 1
–m "ttyadm –l 9600 –d /dev/term/a –T tvi925 –i 'message' –s /usr/bin/login
-S y
"
La lecture des fichiers /etc/saf/pmtag/_pmtab se
fait par la commande :
pmadm –l
SVCTAG |
Identificateur du port_service |
FLGS |
Indicateur d’état (si x—> disable) |
ID |
Identité de l’utilisateur sous lequel est lancé le |
PMSPECIFIC |
Identification de la voie physique, le nom du process, |
COMMENTS |
Commentaires |
Exemple de la commande :
PMTAG PMTYPE SVCTAG FLGS ID <PMSPECIFIC>
toto ttymon ttya u root /dev/term/a - - /usr/bin/login - 9600 ldterm,ttcompat
ttya login : - tvi925 y #Terminal – Hardwired
zsmon ttymon ttyb u root /dev/term/b I - /usr/bin/login - 9600
ldterm,ttcompat ttyb login : - tvi925 y #
2. Arborescence de SAF
La représentation suivante permet de comprendre comment
évoluent les répertoires et fichiers de SAF :
Exemple 1 : Schéma d’une arborescence solaris
2.7
Le port_moniteur de pmtype zsmon portant le pmtag
ttymon est créé.
Les fichiers SAF :
/etc/saf/_sysconfig : Script de configuration système
/etc/saf/_sactab : Le fichier
d’administration du SAC. Contient les données de configuration pour
les moniteurs de ports que le SAC contrôle.
/etc/saf/pmtag : Le répertoire pour le moniteur
de ports pmtag
(/etc/saf/zsmon : ici zsmon)
/etc/saf/pmtag/_pmtab : Fichier d’administration
de pmtag. Contient les données de
configuration du moniteur de ports.
/var/saf/_log : le fichier journal du sac
/var/saf/pmtag : le répertoire pour les fichiers
journal créés pour pmtag
Exemple 2 :
Le port_moniteur de pmtype ttymon portant le pmtag
ttymon1 est créé.
Le port_service de svctag voie5 correspondant
à la voie écran /dev/term/05 est validé.
Le port_moniteur de pmtype ttymon portant le pmtag
lpt6 est créé.
Le port_service de svctag lpt6 correspondant Ã
la voie imprimante /dev/term/06 est validé.
Nota : 16 écrans max par port moniteur. Il est conseillé de ne mettre
qu’une imprimante par port moniteur.
3. Les fichiers de trace
Les évenements survenant au cours de l’administration de SAF
sont mémorisés.
Le fichier /etc/saf/pmtag/_pid contient le
numéro du processus du port_moniteur pmtag.
Les fichiers /etc/saf/pmtag/svctag
contiennent les actions à lancer sur le port_service svctag.
4. Le fichier /etc/ttydefs
Ce fichier contient des entrées permettant de déterminer la
vitesse et les paramètres d’un port tty.
La commande sttydefs -l 9600NP
( par exemple ) permet de visualiser l’entrée 9600NP de ce fichier :
ttylabel |
Label identifiant la ligne (voir le champ PMSPECIFIC du |
Initial flags |
Paramètres de la ligne avant connexion |
Final flags |
Paramètres de la ligne après connexion |
autobaud |
Option pour la recherche de vitesse automatique (A) |
nextlabel |
Nouveau label identifiant la ligne à exécuter en cas |
Exemple du fichier :
4800E:4800 hupcl evenp:4800 evenp::2400
2400E:2400 hupcl evenp:2400 evenp::1200
auto:hupcl:sane hupcl:A:9600
console:9600 hupcl opost onlcr:9600::console
5. La commande who
La commande who -lH
permet de lister les port_moniteurs ayant l’état RUNNING.
# who -lH
NAME LINE TIME IDLE PID COMMENTS
LOGIN console mars 18 12:06 2:53 250
toto . mars 18 12:06 old 255
zsmon . mars 18 12:06 old 256
LOGIN console mars 18 12:06 2:53 259 (:0)
6. Divers commandes :
a) Déclaration d’un terminal par termadd
Cette commande crée les port_moniteurs, les port_services,
les fichiers spéciaux et le fichier contenant le chargement du clavier.
termadd -T type
-n nom_tty -b interface
-s nationalité -l label
-t pmtag -p prompt -k clavier
Exemples :
termadd -T 97801-5 -n 019 -b itp1,3 -s FR -t ttymon2
– l 97801 -p " itp0v4 login : "
termadd -T generic -n 003 -b echase0,unit0,4 -l 9600NP
termadd -T printer -n lptr1 -b echase0,unit0,16 -t lptr1
– l printer
termadd -T printer -n parall -b centronics0,0 -t centronics
–d
La commande Termadd pour DPTG2 :
DPTG2 étant un multiplexeur 10 voies logiciel qui permet
d’avoir le multifenêtrage sur les terminaux 9766. On peut
déclarer 8 fenêtres ( 0 à 7 ) plus deux canaux pour des imprimantes ( 8 et 9
).
termadd -T type
-n nom_tty
-b interface -o channel=fenêtre
Fenêtre |
numéro de la fenêtre à déclarer ( 0 à 7 ) |
Exemples :
termadd -T 9766 -n ba0120 -b chase0,12 -o channel=0
termadd -T ba80 -n itp094 -b itp0,9 -o channel=4
Déclaration des imprimantes sur ba80/9766
termadd -T type
-n nom_tty
-b interface
-o channel=canal,login=0
L’option login=0 sert à préciser qu’il ne faut pas
envoyer de message de prompt sur cette voie.
Le numéro de canal (fenêtre) utilisé pour le fichier
spécial est en général :
p pour le canal 8 (imprimante sas)
q pour la canal 9 (imprimante sas ou v24)
pour les différencier des fenêtres
Exemple :
Déclaration du canal 8 pour une imprimante sur le terminal
de l’exemple précédant.
termadd -T ba80-08 -n ba11p -b chase1,1 -o channel=8,login=0
b) Visualisation des terminaux déclarés
La commande de visualisation est : termshow
c) Effacement d’un terminal
La commande d’effacement d’un terminal est : termdel
nom_tty
!Attention :
L’effacement d’un terminal créé par termadd
doit toujours se faire par termdel.
7. Voir les caractèristiques d’un terminal
La commande stty permet de lire ou de modifier
certaines caractéristiques (modes) du protocole de communication avec le
terminal courant.
stty -a
# stty -a
speed 38400 baud ;
eucw 1:0:0:0, scrw 1:0:0:0
intr = ^c ; quit = ^~; erase = ^ ? ; kill = ^u ;
eof = ^d ; eol = <undef> ; eol2 = <undef> ; swtch =
<undef> ;
start = ^q ; stop = ^s ; susp = ^z ; dsusp = ^y ;
rprnt = ^r ; flush = ^o ; werase = ^w ; lnext = ^v ;
-parenb -parodd cs8 -cstopb -hupcl cread -clocal -loblk -crtscts
– crtsxoff –pare xt
-ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr
icrnl –iuclc ixon -ixany -ixoff imaxbel isig icanon -xcase echo echoe echok -echonl
–noflsh -tostop echoctl -echoprt echoke -defecho -flusho -pendin iexten opost
– olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel tab3
8. Modifier les caractèristiques
stty mode
valeur
Exemples :
stty kill ’w’
stty -icrnl
Liste des paramètres de stty
brkint |
signale une interruption sur unbreak |
bs0 |
sélectionne le type de délai pour le retour arrière |
clocal |
ligne sans modem |
cr0 |
sélectionne le type de délai pour le retour chariot |
cread |
entrée validée |
cs8 |
format bits |
-cstopb |
1 bit de stop |
-defecho | |
dsusp = EM |
caractère d’arrêt des processus foreground |
echo |
écho des caractères tapés |
echoctl |
echo des caractères "controlés" sous la |
echoe |
écho des caractères effacés |
echok |
envoie NL après KILL |
echoke |
BS SP BS efface la ligne entière |
-echonl |
pas d’écho de NL |
-echoprt |
pas d’echo des caractères erase |
eof = EOT |
caractère fin de fichier |
eol = NULL |
caractère de fin de ligne |
eol2 = NULL |
caractère de fin de ligne additionnel |
erase = ^H |
caractère d’effacement |
ff0 |
sélectionne le type de délai pour le FF |
flush = ^o |
|
-flusho |
la sortie n’est pas vidée |
hupcl |
la déconnexion interrompt la transmission |
icanon |
traitement caractère à caractère (traitement de |
-icrnl |
cr = cr ne pas ajouter CR Ã NL |
iexten |
valide les fonctions étendues pour une donnée en |
-ignbrk |
prise en compte des interruptions en entrée |
-igncr |
prendre en compte les rc en entrée |
ignpar |
ignorer les erreurs de parité |
-imaxbel |
pas de BEL si la ligne en entrée est trop longue |
-inlcr |
nl = nl ne pas ajouter NL Ã CR |
-inpck |
pas de contrôle de parité en entrée |
intr = DEL |
caractère d’interruption |
isig |
active le contrôle de caractères pour éviter INTR et |
-istrip |
lire les 8 bits/caractère entrés |
iuclc |
les majuscules sont transformées en minuscules en |
ixany |
tout caractère relance la sortie |
-ixoff |
pas de régulation d’entrée |
ixon |
régulation de sortie par XON/XOFF |
kill = ^U |
caractère d’effacement de ligne |
lnext = SYN |
caractère qui inhibe le caractère suivant |
loblk |
bloque la sortie d’un process précédent s’il n’y a |
nl0 |
sélectionne le type de délai pour le LF |
-noflsh |
activer le vidage des tampons sur interruption |
-ocrnl |
ajouter CR Ã NL en sortie |
-ofdel |
remplissage par ’\0’ |
ofill |
délai sur temporisation |
olcuc |
remplacer les caractères minuscules en majuscules en |
onlcr |
ajouter NL Ã CR-NL en sortie |
-onlret |
NL exécute la fonction CR |
-onocr |
pas de CR en colonne 0 après un retour à la ligne |
opost |
traitement des caractères finaux en sortie |
-parenb |
sans parité |
-parext |
non validation de la parité étendue |
-parmrk |
ne pas masquer les erreurs de parité |
-parodd |
parité paire (si parenb) |
-pendin |
ne réaffiche pas l’entrée à chaque lecture |
quit = FS |
caractère d’abandon |
rprnt = DC2 |
caractère de réimpression des caractères |
speed = 9600 |
débit en bauds de la ligne |
start = DC1 |
caractère XON |
stop = DC3 |
caractère XOFF |
susp = SUB |
caractère d’arrêt des processus foreground |
swtch = EM |
caractère utilisé par shl |
tab0 Ã tab3 |
valeur du caractère de tabulation |
-tostop |
n’émet pas SIGTTOU quand un process background écrit |
vt0 |
sélectionne le type de délai pour la tabulation |
Werase = ETX |
caractère d’effacement d’un mot |
-xcase |
pas de traitement des minuscules/majuscules |
9. Définition du type de terminal
Pour utiliser un terminal, certains utilitaires comme vi
s’appuient sur une description du terminal.
TERM=97801 ; export TERM
Le fichier /etc/ttytype est consulté pour affecter le
bon TERM au bon terminal.
Ces commandes peuvent être mises dans le fichier .profile
de l’utilisateur.
La descripton de la plupart des terminaux vendus sur le
marché se trouvent dans les bases de données /usr/lib/terminfo et/ou
dans le fichier /usr/share/lib/termcap (plus ancienne).
10. terminfo
Pour décrire un terminal, on codifie l’ensemble de ses
capacités sous la forme d’une description source.
La source est compilée par l’utilitaire tic. Le code
objet généré est rangé dans un sous-répertoire de /usr/lib/terminfo.
* Compilation
tic -v fichier
* Visualisation d’une description ("décompilation")
infocmp -I TypeTerminal
Exemple :
Le terminal 97801 est décrit par le fichier /usr/lib/terminfo/9/97801
infocmp -I 97801 > 97801.ti
Exemple terminfo :
infocmp -I 97801
\E signifie <ESCAPE>
^X signifie <CTRL X>
La commande tput permet d’activer les
caractéristiques définies dans le fichier.
Exemples :
tput clear
tput smso
11. Liste des codes utilisés dans TERMINFO
terminfo |
termcap |
caractéristiques générales |
code |
code |
|
cols |
co |
nombre de colonnes |
lines |
li |
nombre de lignes |
hc |
hc |
sortie imprimante locale (hard copy) |
os |
os |
superposition de caractères |
mouvements du curseur |
||
am |
am |
marge automatique |
cuu1 |
up |
déplacement du curseur vers le haut |
cud1 |
do |
déplacement du curseur vers le bas |
cuf1 |
nd |
déplacement non destructeur du curseur vers la droite |
home |
ho |
déplacement du curseur au début de l’écran (home) |
hd |
hd |
demi-page vers le bas |
hu |
hu |
demi-page vers le haut |
rmm |
mo |
adressage direct de l’écran |
gestion de l’écran |
||
clear |
cl |
effacement de l’écran |
el |
ce |
effacement jusqu’Ã la fin de la ligne |
ed |
cd |
effacement jusqu’à la fin de l’écran |
dl1 |
dl |
suppression de la ligne |
il1 |
al |
insertion d’une ligne |
smir |
im |
entrée en mode insertion de caractères |
rmir |
ei |
sortie du mode insertion de caractères |
ich1 |
ic |
insertion de 1 caractère |
dch1 |
dc |
suppression de 1 caractère |
touches de fonctions spéciales |
||
kf<n> |
k<n>* |
où <n> est un entier, donne la valeur de la |
kcuu1 |
ku |
flèche vers le haut |
kcud1 |
Kd |
flèche vers le bas |
kcub1 |
Kl |
flèche vers la gauche |
kcuf1 |
Kr |
flèche vers la droite |
kbs |
Kb |
touche <backspace> |
khome |
Kh |
touche home |
smkx |
Ks |
entrée en mode fonction du clavier auxiliaire |
rmkx |
Ke |
sortie du mode fonction du clavier auxiliaire |
attributs d’affichage |
||
smso |
So |
entrée en mode vidéo inverse |
rmso |
Se |
sortie du mode vidéo inverse |
smacs |
As |
passage en mode caractères spéciaux |
rmacs |
Ae |
retour au mode caractères normaux |
hs |
Hs |
existence d’une ligne spéciale |
eslok |
Es |
droits d’accès à la ligne spéciale |
ts1 |
Ts |
accès à la ligne spéciale |
smul |
Us |
entrée en mode souligné |
rmul |
Ue |
sortie en mode souligné |
civis |
Vi |
curseur invisible |
cnorm |
Ve |
curseur normal |
pour les touches fonctions de 0 Ã 9.
IV. Les fichiers de définitions des terminaux
Ces fichiers sont utilisés par toutes les commandes et bibliothèques UNIX
qui font de la gestion d’écran comme emacs, more, vi … Ils permettent
d’assurer une gestion d’écran indépendante du type de terminal utilisé.
A. Le fichier /etc/termcap (BSD 4.[1-4])
Le fichier /etc/termcap est une base de données qui décrit les
caractéristiques des terminaux existant. Il utilise une syntaxe similaire Ã
celle du fichier /etc/gettytab déjà vu.
Voici un exemple de configuration d’un modèle vt220 dans ce fichier :
dl|vt200|vt220|vt200-js|vt220-js|dec vt200 series with jump
scroll :
:im=\E[4h:ei=\E[4l:mi:dc=\E[P:dm=:ed=:al=\E[L:dl=\E[M :
:cs=\E[%i%d ;%dr:sf=\ED:sr=\EM:sb=\EM :
:ce=\E[K:cl=\E[H\E[J:cd=\E[J:cm=\E[%i%d ;%dH:nd=\E[C:up=\E[A :
:so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m :
:md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m :
:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1 ;24r\E[24 ;1H :
:rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h :
:tc=vt100 :
B. Le répertoire /usr/lib/terminfo ( SV R[1-4] )
Ce répertoire joue le même rôle que le fichier /etc/termcap.
Il contient un fichier de description compilé par terminal. Chaque fichier est
ranger dans un répertoire qui a pour intitulé la premier lettre du terminal.
L’exemple ci dessous nous montre les différents répertoires
existants.
/usr/lib/terminfo # ls
1 3 5 7 9 X b d f h j l n p r t v x z
2 4 6 8 D a c e g i k m o q s u w y
Cette exemple montre les différents terminaux dans le
répertoire /usr/lib/terminfo/c :
/usr/lib/terminfo # ls v
toto vi200 virtual vt100-nav vt100.ti vt220.ti vc103 vi200-f
visual vt100-nav-w vt100am vt320 vc203 vi200-ic vitty vt100-np vt100nam vt320-am
vc303 vi200-rv vk100 vt100-s vt100s vt320-nam vc303-a vi200-rv-ic vs100
vt100-s-bot vt100w vt320.ti vc403a vi300 vs100s vt100-s-top vt125 vt50 vc404
vi300-aw vt100 vt100-top-s vt132 vt50h
vc404-na vi300-rv vt100-am vt100-w vt200 vt52 vc404-s
vi300-ss vt100-bot-s vt100-w-am vt220 vc404-s-na vi550 vt100-nam vt100-w-nam
vt220-am
vc415 viewpoint vt100-nam-w vt100-w-nav vt220-nam
Commentaires Forum fermé