Cyril Rabat


Prise en main de ncurses

 14/01/2016     21/01/2016      Programmation C      Programmation de base      ncurses   

Exemples simples d'utilisation de la bibliothèque ncurses

   Cet article présente comment activer le mode ncurses puis comment afficher des informations et récupérer une touche pressée.

Mots-clefs :   ncurses   

L'archive suivante contient l'ensemble des fichiers de cet article :

 bases.zip

Les fonctions de base de ncurses

Le fichier C suivant contient la définition de plusieurs fonctions nécessaires pour l'activation du mode ncurses.

#include "ncurses.h"
 
#include <ncurses.h>   /* Pour toutes les fonctions/constantes ncurses */
#include <stdlib.h>    /* Pour exit, EXIT_FAILURE */
 
/**
 * Initialisation de ncurses.
 */
void ncurses_initialiser() {
  initscr();	        /* Demarre le mode ncurses */
  cbreak();	        /* Pour les saisies clavier (desac. mise en buffer) */
  noecho();             /* Desactive l'affichage des caracteres saisis */
  keypad(stdscr, TRUE);	/* Active les touches specifiques */
  refresh();            /* Met a jour l'affichage */
  curs_set(FALSE);      /* Masque le curseur */
}
 
/**
 * Fin de ncurses.
 */
void ncurses_stopper() {
  endwin();
}
 
/**
 * Initialisation des couleurs.
 */
void ncurses_couleurs() {
  /* Verification du support de la couleur */
  if(has_colors() == FALSE) {
    ncurses_stopper();
    fprintf(stderr, "Le terminal ne supporte pas les couleurs.\n");
    exit(EXIT_FAILURE);
  }
 
  /* Activation des couleurs */
  start_color();
 
  /* Definition de la palette */
  init_pair(1, COLOR_BLUE, COLOR_BLACK);
  init_pair(2, COLOR_RED, COLOR_BLACK);
  init_pair(3, COLOR_GREEN, COLOR_BLACK);
}
 

 Télécharger le fichier

Premier exemple

Ce programme active le mode ncurses puis affiche des messages dans plusieurs couleurs. Enfin, il attend que l'utilisation tape sur une touche pour s'arrêter.

/**
 * Ce programme illustre le fonctionnement de base de ncurses.
 * Le mode ncurses est activé et plusieurs messages sont affichés de couleurs
 * différentes.
 * @author Cyril Rabat
 * @version 21/01/2016
 **/
 
#include <stdlib.h>     /* Pour EXIT_SUCCESS */
#include <ncurses.h>    /* Pour printw, attron, attroff, COLOR_PAIR, getch */
 
#include "ncurses.h"
 
int main() {
  int i;
 
  /* Initialisation de ncurses */
  ncurses_initialiser();
  ncurses_couleurs();
 
  /* Exemple d'affichage */
  for(i = 1; i <= 3; i++) {
    attron(COLOR_PAIR(i));
    printw("Bonjour (dans la couleur %d).\n", i);
    attroff(COLOR_PAIR(i));
  }
 
  /* Attente d'une touche */
  printw("Pressez une touche...");
  getch();
 
  /* Arrêt de ncurses */
  ncurses_stopper();
 
  return EXIT_SUCCESS;
}
 

 Télécharger le fichier

Gestion du clavier

Ce programme illustre comment utiliser ncurses pour gérer la saisie clavier. Un curseur est placé au milieu de l'écran et l'utilisateur peut le déplacer en cliquant sur les touches flèches du clavier.

/**
 * Ce programme illustre le fonctionnement de base de ncurses.
 * Le mode ncurses est activé puis l'utilisateur peut tapez sur les touches
 * flèches du clavier pour déplacer un curseur à l'écran.
 * @author Cyril Rabat
 * @version 21/01/2016
 **/
 
#include <stdlib.h>     /* Pour EXIT_SUCCESS */
#include <ncurses.h>    /* Pour printw, attron, attroff, COLOR_PAIR, getch */
 
#include "ncurses.h"
 
int main() {
  int ch, posX, posY;
 
  /* Initialisation de ncurses */
  ncurses_initialiser();
  printw("Pressez F2 pour quitter le programme. Utilisez les flèches pour déplacer le curseur.\n");
 
  /* Place le curseur à la position de départ */
  posX = COLS / 2 -1;
  posY = LINES / 2 - 1;
  mvaddch(posY, posX, ACS_DIAMOND);
  refresh();
 
  /* Routine principale */
  while((ch = getch()) != KEY_F(2)) {
    /* On efface le curseur */
    mvaddch(posY, posX, ' ');
 
    /* On calcule la nouvelle position */
    switch(ch) {
      case KEY_LEFT:
	if(posX > 0) posX--;
	break;
      case KEY_RIGHT:
	if(posX < COLS - 1) posX++;
	break;
      case KEY_UP:
	if(posY > 0) posY--;
	break;
      case KEY_DOWN:
	if(posY < LINES - 1) posY++;
	break;
    }
 
    /* On affiche le curseur */
    mvaddch(posY, posX, ACS_DIAMOND);
    refresh();
  }
 
  /* Arrêt de ncurses */
  ncurses_stopper();
 
  return EXIT_SUCCESS;
}
 

 Télécharger le fichier

Compilation et exécution

Le Makefile suivant permet de compiler les deux programmes précédents :

 makefile

Pour compiler les programmes précédents, tapez la commande suivante :

    make

Pour exécuter les programmes, tapez l'une des commandes suivantes :

    ./exemple1
    ./exemple2

Articles connexes


Version de cette page Mercredi 16 Décembre 2015

© Cyril Rabat 2018

Connexion

Mot de passe perdu

Dernières nouvelles

15/10/2018 Tous les étudiants de la Licence Informatique ont réunion sur la mobilité internationale, Mercredi 17 Octobre, de 13h30 à 14h00 (et non à 12h30), en Amphi 3.
02/10/2018 Pour la deuxième année consécutive, l'URCA est partenaire de l’événement Coding Battle. Tous les étudiants de Licence et de Master sont appelés à y participer le 17 octobre de 19h à 21h.
01/10/2018 Les emplois du temps sont maintenant accessibles depuis la page de la scolarité.
27/09/2018 Une page a été créée pour vous permettre d'obtenir toutes les informations concernant les stages pour la Licence. Contactez le responsable pour plus d'informations.

Contact

Courriel :
cyril.rabat [at] univ-reims.fr

Téléphone :
+33-326-91-33-81

Fax :
+33-326-91-33-97

Facebook :
lien Facebook direct