Article de reference

curses (bibliothèque de programmation)

curses est une bibliothèque de contrôle de terminal pour les systèmes de type Unix , permettant la construction d' applications d'interface utilisateur textuelle (TUI). Le nom e...

curses est une bibliothèque de contrôle de terminal pour les systèmes de type Unix , permettant la construction d' applications d'interface utilisateur textuelle (TUI).

Le nom est un jeu de mots sur le terme « optimisation du curseur ». Il s'agit d'une bibliothèque de fonctions qui gèrent l'affichage d'une application sur les terminaux à cellules de caractères (par exemple, VT100 ).

ncurses est le remplacement approuvé de curses classique pour 4.4BSD .

Aperçu

Grâce à curses, les programmeurs peuvent créer des applications textuelles sans avoir à programmer directement pour un type de terminal spécifique. La bibliothèque curses du système d'exécution envoie les caractères de contrôle appropriés en fonction du type de terminal. Elle fournit une abstraction d'une ou plusieurs fenêtres qui s'affichent à l'écran du terminal. Chaque fenêtre est représentée par une matrice de caractères. Le programmeur configure l'apparence souhaitée de chaque fenêtre, puis demande à curses de mettre à jour l'écran. La bibliothèque détermine alors un ensemble minimal de modifications nécessaires à la mise à jour de l'affichage, puis les exécute en utilisant les capacités et les séquences de contrôle spécifiques au terminal.

En bref, cela signifie que le programmeur crée une matrice de caractères décrivant l'apparence de l'écran et laisse curses gérer le reste.

L' API curses est décrite à plusieurs endroits. La plupart des implémentations de curses utilisent une base de données décrivant les capacités de milliers de terminaux différents. Quelques implémentations, comme PDCurses, utilisent des pilotes de périphériques spécialisés plutôt qu'une base de données de terminaux. La plupart des implémentations utilisent terminfo ; certaines utilisent termcap . Curses présente l'avantage d'être rétrocompatible avec les terminaux à cellules de caractères et simple d'utilisation. Pour une application ne nécessitant pas de graphismes bitmap ni de polices multiples, une implémentation d'interface utilisant curses sera généralement beaucoup plus simple et rapide qu'une implémentation utilisant une boîte à outils X.

Histoire

La première bibliothèque curses a été écrite par Ken Arnold et initialement fournie avec BSD UNIX, où elle a été utilisée pour plusieurs jeux, notamment Rogue . Des améliorations ont été apportées à la bibliothèque BSD dans les années 1990 sous le nom de curses « 4.4BSD », permettant par exemple de proposer plusieurs types de surbrillance vidéo. Cependant, ces améliorations restent peu utilisées.

Le nom « curses » est un jeu de mots sur l'optimisation du curseur . On affirme parfois, à tort, que curses était utilisé par l' éditeur vi ; en réalité, le code de curses qui optimise le déplacement du curseur a été emprunté à vi, qui est antérieur à curses.

Selon Goodheart, l'implémentation originale de curses par Ken Arnold réutilisait des fonctions de la bibliothèque termcap et les enrichissait. Quelques années plus tard, Mary Ann Horton , qui avait maintenu les sources de vi et termcap à Berkeley , rejoignit AT&T Corporation et créa une version différente utilisant terminfo , qui fut intégrée à UNIX System III et UNIX System V. En raison des restrictions de licence de ce dernier, les versions BSD et AT&T de la bibliothèque furent développées indépendamment. Outre l'amélioration apportée par termcap/terminfo, d'autres améliorations furent intégrées à la version AT&T :

mise en évidence vidéo (gras, souligné)
La version BSD ne prenait en charge que les points forts .
dessin au trait
La version BSD n'offrait que peu de support dans ce domaine.
couleurs
Cette fonctionnalité n'était pas prise en charge dans la version BSD.

Le développement de curses chez AT&T semble s'être interrompu au milieu des années 1990, lors de la définition de X/Open Curses. En 1995, Keith Bostic , mainteneur de BSD , a officiellement déprécié la bibliothèque curses au profit de ncurses . Le développement de ncurses et PDCurses se poursuit. Une version de curses BSD est toujours maintenue dans le système d'exploitation NetBSD (prise en charge étendue des caractères, migration de termcap vers terminfo, etc.).

pcurses et PDCurses

Différentes voies de développement ont débuté par l'imitation des curses d'AT&T, à partir d'au moins trois implémentations : pcurses de Pavel Curtis (débuté en 1982), PDCurses (Public Domain curses) de Mark Hessling pour son éditeur THE (débuté en 1987), ainsi que Rexx /Curses, et PC curses (version 1.4 et antérieures de Björn Larsson, inspirée de la bibliothèque de Pavel Curtis avant 1990).

ncurses

… et a été republié sous le nom de ncurses 1.8.1 fin 1993 ». ncurses est l’implémentation de curses la plus connue et a motivé le développement d’autres variantes, telles que BSD curses dans le projet NetBSD .

Portabilité

Bien que la bibliothèque ncurses ait été initialement développée sous Linux, OpenBSD, FreeBSD et NetBSD, elle a été portée sur de nombreux autres systèmes UNIX ANSI/POSIX, principalement par Thomas Dickey. PDCurses, bien que non identique à ncurses, utilise les mêmes appels de fonction et fonctionne de la même manière, à la différence qu'elle cible différents périphériques, tels que les fenêtres de console pour DOS , Win32 , OS/2 , ainsi que X11 . La migration entre les deux est aisée. Par exemple, le jeu roguelike ADOM a été écrit pour Linux et ncurses, puis porté sur DOS et PDCurses.

Captures d'écran

    Interface de lecture de nouvelles couleur pour Tin
    Interface de lecture de nouvelles couleur pour Tin
  • Les jurons utilisés dans JACK
    Les jurons utilisés dans JACK

Applications

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index