#include #include #include #include #include #include "config.h" #include "exceptions.h" /* * Quelques fonctions globales pour initialiser le terminal et en faire quelque chose qui ressemble * aux fonctions DOS. En clair, l'interface n'a pas besoin d'attendre que l'utilisateur tape ENTREE * pour lire une touche. De plus, dans ce mode, il n'y a pas d'echo a l'ecran. Donc l'interface * peut refaire ce qu'elle veut derriere */ FILE *input; struct termios initial_settings, new_settings; void initterm(void) { tcgetattr(fileno(input), &initial_settings); new_settings = initial_settings; new_settings.c_lflag &= ~ICANON; new_settings.c_lflag &= ~ECHO; new_settings.c_cc[VMIN] = 1; new_settings.c_cc[VTIME] = 0; new_settings.c_lflag &= ~ISIG; if (tcsetattr(fileno(input), TCSANOW, &new_settings) != 0) { exception(2, _("could not set terminal attributes")); } } void clearterm(void) { tcsetattr(fileno(input), TCSANOW, &initial_settings); } void openterm(void) { if (!(input = fopen("/dev/tty", "r"))) { exception(2, _("could not open terminal")); } }