on rajoute des vieux trucs
This commit is contained in:
52
chap/curses.tex
Normal file
52
chap/curses.tex
Normal file
@@ -0,0 +1,52 @@
|
||||
%
|
||||
% nouveau 20 juillet 2014 ave StExupery
|
||||
%
|
||||
\chapter{curses}
|
||||
\label{curses}
|
||||
\index{curses}
|
||||
|
||||
En fait, nous allons plutôt parler de \textbf{ncurses} qui est
|
||||
l'implémentation actuelle de l'ancêtre \texttt{curses}. Voic ce
|
||||
qu'en dit une page de man :
|
||||
|
||||
\begin{quote}
|
||||
The ncurses library routines give the user a terminal-independent
|
||||
method of updating character screens with reasonable optimization.
|
||||
This implementation is ``new curses'' (ncurses) and is the approved
|
||||
replacement for 4.4BSD classic curses, which has been discontinued.
|
||||
\end{quote}
|
||||
|
||||
|
||||
\section{premier exemple}
|
||||
|
||||
Bien entendu, nous commencerons par l'ECM traditionnel de rigueur.
|
||||
|
||||
\lstinputlisting[language=C]{ex_curses.c}
|
||||
|
||||
La première étape consiste à initialiser et configurer le moteur
|
||||
interne de ncurses, et à régler l'interaction clavier/écran.
|
||||
|
||||
Ensuite, avec \texttt{mvaddstr}, nous écrivons le texte passé
|
||||
en paramètre à une position fixée ligne,colonne
|
||||
dans un écran virtuel
|
||||
qui sera ensuite transféré dans l'écran réel
|
||||
par le \texttt{refresh()}.
|
||||
|
||||
|
||||
\section{astuces}
|
||||
|
||||
Dans une boucle interactive, on va utiliser \texttt{getch()}, qui va
|
||||
bloquer tant qu'on n'a pas tapé sur une touche. Mais que faire si
|
||||
on veut utiliser, en plus du clavier, un autre périphérique de
|
||||
saisie, genre un Joystick\index{joystick} ?
|
||||
|
||||
Bien entendu, on peut utiliser \texttt{select(2)}, mais cela nécessite
|
||||
de connaitre le \textit{file descriptor} auquel est attaché le clavier.
|
||||
Dans le contexte classique, on peut assumer que ce sera le \texttt{fd}
|
||||
associé à \textit{stdin}, mais il est imprudent de compter là-dessus.
|
||||
|
||||
---> voir \texttt{newterm(3)}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user