Cette question est en fait plusieurs questions, et les "caractères de contrôle" n'en abordent qu'une petite partie, par exemple la barre de progression de curl
. Plus généralement, ce sont des caractéristiques communes aux terminaux (et aux émulateurs de terminaux).
La plupart de ces caractéristiques communes sont normalisées dans ECMA-48: Fonctions de contrôle pour les jeux de caractères codés . Cependant, d'autres fonctionnalités ne le sont pas . Ils sont définis par l'implémentation.
ECMA-48 fait référence aux fonctions de contrôle . Cela inclut les caractères de contrôle et les séquences de contrôle (souvent appelés séquences d'échappement, séquences ANSI, etc.).
Certains caractères de contrôle sont utilisés pour des opérations simples , par exemple,
- déplacer le curseur sur la colonne précédente de la même ligne
- déplacer le curseur sur la première colonne de la même ligne
- déplacer le curseur sur la tabulation suivante sur la même ligne
- déplacer le curseur sur la ligne suivante (et faire défiler l'écran s'il est déjà sur la dernière ligne)
La barre de progression de curl
est construite à l'aide de ces opérations simples. Mais les personnages de contrôle ne peuvent pas faire grand chose, pas plus. Les séquences de contrôle font plus, par exemple,
- déplacer le curseur sur n'importe quelle ligne / colonne de l'écran
- déplacer le curseur sur n'importe quelle ligne de la même colonne à l'écran
- déplacer le curseur sur n'importe quelle colonne de la même ligne à l'écran
- définir des taquets de tabulation sur n'importe quelle colonne de l'écran
- déplacer le curseur sur la ligne précédente
- faire défiler l'écran vers le haut ou vers le bas sans déplacer le curseur
Voilà pour les parallèles entre simple / complexe. Les séquences de contrôle sont également utilisées pour changer la couleur du texte et de l'arrière-plan, effacer le texte de l'écran, afficher le texte en vidéo inverse (ou en gras, souligner, clignoter).
Les programmes qui dessinent une barre de progression vidéo inverse (ou colorée) utilisent des séquences de contrôle .
Bien que les séquences de contrôle puissent faire plus, elles ne peuvent faire que des choses spécifiques. Les assembler pour créer des éditeurs de texte, des écrans d'installation (et des programmes qui dessinent des barres de progression colorées) se compliquent. Une partie de cela est rendue plus simple en utilisant des bibliothèques qui connaissent ces choses. Initialement, nous avions termcap (et une base de données de quelques centaines de types de terminaux), étendu à terminfo (et une base de données d'environ mille types de terminaux).
Même avec la normalisation, il existe des dizaines de descriptions de terminaux que vous pouvez utiliser . Nous continuons donc à utiliser des bibliothèques pour toutes les applications, sauf les plus triviales. L'un est ncurses ("new-curses"), un autre est l'argot (techniquement "S-Lang").
Lectures complémentaires:
ncurses
.