/*
Fichier modepage.h
Auteur Bernard Chardonneau
*/
/*
Logiciel de démarrage du système d'exploitation
Les commandes de Libremail qui nécessitent des saisies au clavier
durant leur exécution avec utilisation des flèches et autres touches
de déplacement et la touche ESC en fin de saisie ne peuvent fonctionner
aussi bien avec un démarrage par systemd qu'avec un démarrage par init.
Avec systemd, il faudra appuyer 2 fois sur la touche ESC pour qu'elle
soit prise en compte là où un seul appui suffit avec init.
Par défaut, Libremail est compilé pour fonctionner que le système
d'exploitation ait été initialisé par init ou par systemd. Une
détection est effectuée au démarrage des logiciels concernés pour
programmer au mieux la réception de caractères du clavier.
Il est possible d'éviter cette détection en compilant Libremail
uniquement pour l'un des systèmes dé démarrage, ce qui se fait en
décommentant l'un des deux #define qui suit.
*/
//#define systemd 0 // décommenter pour compiler pour init uniquement
//#define systemd 1 // décommenter pour compiler pour systemd uniquement
#define debpage() putseq ("H") // se positionne en haut de page
#define baspage() putseq ("99B") // se positionne en bas de page
#define effpage() putseq ("J") // efface la page à partir du curseur
#define effligne() putseq ("K") // efface la ligne à partir du curseur
#define insligne() putseq ("L") // insère une ligne au niveau ligne courante
#define montecurs() putseq ("A") // remonte le curseur d'une ligne
#define lumnor() putseq ("0m") // affichage en luminosité normale
/* commandes stty pour le mode de gestion du clavier */
#define cmd_mode_raw_init "stty -icanon min 0 time 5 -echo"
#define cmd_mode_raw_systemd "stty -icanon -echo"
#define cmd_mode_normal "stty icanon echo"
/* prototypes des fonctions de la bibliothèque modepage */
/* variables globales à l'application utilisées par modepage
(pour éviter des tonnes de passages de paramètres) */
#ifdef modepage
int nb_lignes; // nombre de lignes mémorisées
int lignecour; // numéro de la ligne courante
int lignepage, colonpage; // nombre ligne et colonnes de la page d'écran
int lignecran; // numéro de ligne du curseur à l'écran
#else
extern int nb_lignes;
extern int lignecour;
extern int lignepage, colonpage;
extern int lignecran;
#endif