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

11/12/2018 Les inscriptions pour le Hackathon sont maintenant ouvertes.
07/12/2018 Ceux/celles qui souhaitent devenir délégué(e) de leur groupe, envoyez vos candidatures par mail pour le 14 décembre à 20h00, au plus tard.
06/12/2018 Pour rappel, les examens de L2 et L3 ont été anticipés et auront lieu en semaine 51.
06/12/2018 Ceux et celles qui sont inscrit(e)s au tutorat de MA0102 ont reçu un mail pour vous indiquer les modalités.

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