"termios" --- POSIX style tty control
*************************************

======================================================================

Ce module fournit une interface aux appels POSIX pour le contrôle des
entrées-sorties d'un terminal. Pour une description complète de ces
appels, voir la page du manuel UNIX *termios(3)*. Il n'est disponible
que pour les versions Unix qui gèrent le contrôle des entrées-sorties
du terminal à travers des appels POSIX *termios* configurés à
l’installation.

Disponibilité: Unix.

Toutes les fonctions de ce module prennent un descripteur de fichier
*fd* comme premier argument. Ça peut être un descripteur de fichiers
entier, tel que le renvoie "sys.stdin.fileno()", ou un *file object*,
tel que "sys.stdin".

Ce module définit aussi toutes les constantes nécessaires pour
travailler avec les fonctions fournies ici ; elles ont les mêmes noms
que leurs équivalents en C. Pour plus d’informations sur l’utilisation
de ces terminaux, veuillez vous référer à votre documentation système.

Le module définit les fonctions suivantes :

termios.tcgetattr(fd)

   Return a list containing the tty attributes for file descriptor
   *fd*, as follows: "[iflag, oflag, cflag, lflag, ispeed, ospeed,
   cc]" where *cc* is a list of the tty special characters (each a
   string of length 1, except the items with indices "VMIN" and
   "VTIME", which are integers when these fields are defined).  The
   interpretation of the flags and the speeds as well as the indexing
   in the *cc* array must be done using the symbolic constants defined
   in the "termios" module.

termios.tcsetattr(fd, when, attributes)

   Set the tty attributes for file descriptor *fd* from the
   *attributes*, which is a list like the one returned by
   "tcgetattr()".  The *when* argument determines when the attributes
   are changed:

   termios.TCSANOW

      Change attributes immediately.

   termios.TCSADRAIN

      Change attributes after transmitting all queued output.

   termios.TCSAFLUSH

      Change attributes after transmitting all queued output and
      discarding all queued input.

termios.tcsendbreak(fd, duration)

   Envoie une pause sur le descripteur de fichier *fd*. Une *duration*
   à zéro envoie une pause de 0,25 à 0,5 seconde ; une *duration*
   différente de zéro possède une signification spécifique sur chaque
   système.

termios.tcdrain(fd)

   Attend que toutes les sorties écrites dans le descripteur de
   fichier *fd* soient transmises.

termios.tcflush(fd, queue)

   Vide la queue de données du descripteur de fichier *fd*. Le
   sélecteur *queue* précise la queue : "TCIFLUSH" pour la queue des
   entrées, "TCOFLUSH" pour la queue des sorties, ou "TCIOFLUSH" pour
   les deux queues.

termios.tcflow(fd, action)

   Suspend ou reprend l’entrée ou la sortie du descripteur de fichier
   *fd*. L’argument *action* peut être "TCOOFF" pour suspendre la
   sortie, "TCOON" pour relancer la sortie, "TCIOFF" pour suspendre
   l’entrée, ou "TCION" pour relancer l’entrée.

termios.tcgetwinsize(fd)

   Return a tuple "(ws_row, ws_col)" containing the tty window size
   for file descriptor *fd*. Requires "termios.TIOCGWINSZ" or
   "termios.TIOCGSIZE".

   Ajouté dans la version 3.11.

termios.tcsetwinsize(fd, winsize)

   Set the tty window size for file descriptor *fd* from *winsize*,
   which is a two-item tuple "(ws_row, ws_col)" like the one returned
   by "tcgetwinsize()". Requires at least one of the pairs
   ("termios.TIOCGWINSZ", "termios.TIOCSWINSZ"); ("termios.TIOCGSIZE",
   "termios.TIOCSSIZE") to be defined.

   Ajouté dans la version 3.11.

Voir aussi:

  Le module "tty"
     Fonctions utiles pour les opérations de contrôle communes dans le
     terminal.


Exemple
=======

Voici une fonction qui demande à l’utilisateur d’entrer un mot de
passe sans l’afficher. Remarquez la technique qui consiste à séparer
un appel à "tcgetattr()" et une instruction "try"… "finally" pour
s’assurer que les anciens attributs du terminal soient restaurés tels
quels quoi qu’il arrive :

   def getpass(prompt="Password: "):
       import termios, sys
       fd = sys.stdin.fileno()
       old = termios.tcgetattr(fd)
       new = termios.tcgetattr(fd)
       new[3] = new[3] & ~termios.ECHO          # lflags
       try:
           termios.tcsetattr(fd, termios.TCSADRAIN, new)
           passwd = input(prompt)
       finally:
           termios.tcsetattr(fd, termios.TCSADRAIN, old)
       return passwd
