Le paquetage terminfo est un ensemble de fichiers compilés à l'aide de
l'utilitaire tic
. Chaque fichier contient une série de
commandes capables de réaliser, sur le terminal référencé par ce fichier,
toutes les opérations de gestion d'un écran : modification de la visibilité du
curseur, déplacement du curseur, défilement du texte, modification des
couleurs du texte et/ou du fond, etc...Puisque les fichiers sont compilés cela
signifie qu'il existe des fichiers sources, modifiables et directement
lisibles. En général un jeu de fichiers sources accompagnent la bibliothèque
ncurses.
Les fichiers terminfo sont habituellement situés dans les chemins suivants :
Pour faciliter la recherche, chaque fichier compilé décrivant les capacités de traitement d'un terminal est placé dans un sous-répertoire du répertoire terminfo. Le nom de ce sous répertoire est constitué de la première lettre du terminal géré. Le fichier lui-même porte le nom du terminal suivi de différentes lettres qui indiquent les multiples déclinaisons du terminal en question.Ainsi si vous tapez la commande :
locate xterm
Vous verrez défiler à l'écran toutes les variantes du terminal xterm qui est le
terminal habituellemnt émulé sous X Window.
Tous ces fichiers sont regroupés dans le répertoire :
/usr/share/terminfo/x
En ce qui concerne le fichier source, il peut très bien manquer à votre distribution. En tout état de cause vous pourrez le télécharger aux adresses :
Il existe un utilitaire qui permet de visualiser le contenu d'un fichier
terminfo décrivant les capacités d'un terminal déterminé. Cet utilitaire est
infocmp
. Ainsi, si sous le shell vous validez la commande
suivante :
infocmp xterm
Vous obtiendrez l'affichage suivant qui, évidemment, éclairera immédiatement,
pour vous, les capacités de traitement d'un terminal xterm
!
[pierre@localhost pierre]$ infocmp xterm
# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm
xterm|xterm terminal emulator (X Window System),
am, km, mir, msgr, xenl,
cols#80, it#8, lines#24,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
el=\E[K, enacs=\E)0, home=\E[H, ht=^I, il=\E[%p1%dL,
il1=\E[L, ind=^J,
is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf5=\E[15~,
kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, kslt=\E[4~,
rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[2J\E[?47l\E8,
rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
rs2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, sc=\E7,
sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
Nous comprenons tout de même que passée la première ligne qui rappelle les différents noms du terminal nous trouvons une série d'identificateurs. Chaque identificateur désigne une capacité de traitement du terminal ; pour cette raison ils sont souvent appelés capname.
Nous constatons que chaque identificateur de capacité du terminal est séparé du suivant par une virgule. Il est clair également que nous pouvons distinguer trois types différents d'identificateur :