Capacités du terminal - Terminal capabilities
Dans l'informatique et les télécommunications, les capacités d'un terminal sont diverses fonctionnalités de terminal, au-delà de ce qui est disponible à partir d'un téléimprimeur pur , que les systèmes hôtes (et les programmes qui s'exécutent sur eux) peuvent utiliser. Il s'agit (principalement) de codes de contrôle et de codes d' échappement qui peuvent être envoyés ou reçus du terminal. Les codes d'échappement envoyés au terminal exécutent diverses fonctions dont un terminal CRT (et des émulateurs de terminal logiciel ) est capable, mais qu'un téléscripteur ne l'est pas; comme déplacer le curseur du terminal vers des positions sur l'écran, effacer et faire défiler tout ou partie de l'écran, allumer et éteindre les imprimantes connectées, programmer des touches de fonction programmables, changer les couleurs et les attributs d'affichage (comme la vidéo inversée ) et régler l'affichage chaînes de titre. Les codes d'échappement reçus des terminaux signifient des choses telles que la touche de fonction , touche fléchée et une autre touche spéciale ( touche maison , touche de fin , touche d'aide , touche PgUp , PgDn , insérer la clé , la clé de suppression , et ainsi de suite) frappes .
Unix et POSIX: termcap, terminfo, et al.
Dans Unix et d'autres systèmes compatibles POSIX qui prennent en charge l' interface du terminal POSIX , ces capacités sont codées dans des bases de données configurées par un administrateur système et accessibles à partir de programmes via la bibliothèque terminfo (qui remplace l'ancienne bibliothèque termcap ), sur laquelle des bibliothèques construites telles que les bibliothèques curses et ncurses , par lesquelles les programmes d'application utilisent les capacités du terminal pour fournir des interfaces utilisateur textuelles avec des fenêtres, des boîtes de dialogue, des boutons, des étiquettes, des champs de saisie, des menus, etc. L'intention est que cela permette aux programmes d'application d'être indépendants des caractéristiques réelles du terminal. Ils n'ont pas besoin de câbler de codes de contrôle ou de séquences d'échappement dans leur code, et n'ont donc pas de problèmes à être utilisés sur une gamme de terminaux avec une gamme de capacités.
termcap
La bibliothèque termcap (pour « term inal cap capabilities») a été développée pour les systèmes BSD. Il utilise une base de données stockée dans le fichier / etc / termcap . Cette base de données se compose d'une série d'enregistrements (dont chacun se compose d'une ou plusieurs lignes dans le fichier, jointes par des barres obliques inversées aux extrémités de chaque ligne qui continue sur une suivante) dont chacun représente les capacités d'un terminal particulier. Les champs de l'enregistrement comprennent le ou les noms du type de terminal, suivis d'une séquence de capacités, séparés par des deux-points. Les champs de capacité eux-mêmes se divisent en trois groupes:
- caractéristiques du terminal
- Celles-ci comprennent des éléments tels que le nombre (nominal) de lignes et de colonnes de l'affichage du terminal, si la sortie passe automatiquement à la ligne suivante lorsqu'elle atteint la fin d'une ligne, et ainsi de suite.
- séquences de contrôle envoyées en sortie au terminal
- Celles-ci comprennent les codes de contrôle et les séquences d'échappement envoyés au terminal pour qu'il effectue une action (pas nécessairement une action d'affichage). Un exemple de l'un des plus simples est la séquence de sortie pour effacer l'écran, qui peut être le caractère de saut de page (ASCII FF ) sur certains types de terminal mais peut, par exemple, être la séquence d'échappement ␛2J sur un terminal qui nécessite des séquences d'échappement ANSI .
- séquences de contrôle envoyées en entrée par le terminal
- Ceux-ci comprennent les codes de contrôle et les séquences d'échappement que le terminal envoie à l'hôte pour représenter diverses actions et événements, tels que des touches de fonction et des touches fléchées enfoncées.
terminfo
La bibliothèque terminfo (" term inal info rmation") a été développée pour les systèmes System V. Il utilise une base de données stockée dans plusieurs fichiers dans un répertoire, qui peut être de différentes manières (sur différents Unices et systèmes compatibles POSIX) / usr / lib / terminfo , / usr / share / terminfo , ou même / usr / share / lib / terminfo . (Son emplacement n'est même pas uniforme dans les différentes distributions de Linux .)
Contrairement à la base de données termcap, la base de données terminfo est compilée, une base de données lisible par machine qui est construite à partir d'un format de fichier source lisible par l'homme par un programme utilitaire, tic . Ils peuvent être décompilés d'une forme lisible par machine à une forme lisible par l'homme par un autre programme utilitaire, infocmp . La commande pour sortir la forme lisible par l'homme de la définition de terminal "vt100", par exemple, est:
infocmp vt100
L'utilisation d'un format lisible par machine visait à éviter la surcharge inutile, dans les programmes d'application utilisant des systèmes tels que la bibliothèque termcap, de l'analyse répétée du contenu de la base de données pour lire les champs d'un enregistrement. L'utilisation de plusieurs fichiers visait à éviter la surcharge similaire de l'analyse du contenu de la base de données pour trouver l'enregistrement de base de données pour le type de terminal cible. L'index de nom de type de terminal est, en fait, la structure de répertoires ordinaire du système de fichiers Unix / POSIX. À l'origine, Unix avait de graves problèmes de performances avec des répertoires volumineux contenant de nombreux fichiers, et donc terminfo utilise une structure à deux niveaux, divisant les entrées du répertoire par la première lettre en une série de sous-répertoires. Les formats de système de fichiers plus récents utilisés sur les systèmes Unix ne souffrent pas autant de ces problèmes (parce que leurs structures de répertoires sur disque ne sont plus de simples tableaux d'entrées, mais sont organisées en arborescences ou tables de hachage) et donc la nécessité de cet élément de conception , qui existe toujours dans les implémentations terminfo modernes, a depuis disparu.
Programmes utilitaires pour exercer les capacités du terminal
Sur les systèmes Unix, la commande tput est utilisée pour rechercher une capacité spécifique dans la base de données du système et la sortir vers la sortie standard de la commande (qui est, vraisemblablement, le terminal par lequel la fonction désignée par la capacité doit être exécutée). L'une des opérations les plus simples consiste à effacer l'écran. Le nom du champ de base de données qui stocke la séquence de sortie pour cela est clair , donc les arguments de commande au programme tput pour effacer l'écran sont
tput clear
Une autre opération consiste à initialiser ou à réinitialiser le terminal à un état par défaut connu (des attributs de caractères, des polices, des couleurs, etc.). Les commandes pour cela sont:
tput init
et
tput reset
Normalement, la commande tput utilise le type de terminal spécifié par la TERM variable d'environnement , l'une des variables d'environnement de contrôle de l'interface de terminal POSIX . Cependant, cela peut être remplacé pour forcer tput à rechercher un autre type de terminal dans la base de données, avec une option de ligne de commande pour la commande. Ainsi, par exemple, pour émettre la séquence de réinitialisation appropriée pour le type de terminal nommé "vt100" dans la base de données (généralement un terminal DEC VT100 ), quel que soit le type de terminal spécifié dans les variables d'environnement, la commande est:
tput -T vt100 reset
Références
Ce qui soutient quoi
Sources utilisées
- Afzal, Amir (2008). UNIX illimité: une approche de début (5e éd.). Prentice Hall. ISBN 978-0-13-119449-6 .
- Blum, Richard (2008). Ligne de commande Linux et Bible Scripting Shell . Série biblique. John Wiley et fils. ISBN 978-0-470-25128-7 .
- Cercueil, Stephen (1991). UNIX system V version 4: la référence complète . Osborne McGraw-Hill. ISBN 978-0-07-881653-6 .
- Frisch, Æleen (2002). Administration système essentielle . A nutshell handbook (3e éd.). O'Reilly Media, Inc. ISBN 978-0-596-00343-2 .
- Kumar, Sudhir (2004). Encyclopédie du système d'exploitation . Publications Anmol PVT. LTD. ISBN 978-81-261-1792-5 .
- Raymond, Eric S. (2004). L'art de la programmation Unix . Série informatique professionnelle Addison-Wesley. Addison-Wesley. ISBN 978-0-13-142901-7 .
- Winsor, Janice (2001). Guide de l'administrateur système avancé Solaris 8 (3e éd.). Prentice Hall PTR. ISBN 978-0-13-027703-9 .
Lectures complémentaires
- Strang, John; Mui, Linda; O'Reilly, Tim (1991). Termcap et terminfo . Nutshell handbook (3e éd.). O'Reilly Media, Inc. ISBN 978-0-937175-22-4 .