| \section{Built-in Module \module{termios}} | 
 | \label{module-termios} | 
 | \bimodindex{termios} | 
 | \indexii{\POSIX{}}{I/O control} | 
 | \indexii{tty}{I/O control} | 
 |  | 
 |  | 
 | This module provides an interface to the \POSIX{} calls for tty I/O | 
 | control.  For a complete description of these calls, see the \POSIX{} or | 
 | \UNIX{} manual pages.  It is only available for those \UNIX{} versions | 
 | that support \POSIX{} \emph{termios} style tty I/O control (and then | 
 | only if configured at installation time). | 
 |  | 
 | All functions in this module take a file descriptor \var{fd} as their | 
 | first argument.  This must be an integer file descriptor, such as | 
 | returned by \code{sys.stdin.fileno()}. | 
 |  | 
 | This module should be used in conjunction with the | 
 | \module{TERMIOS}\refstmodindex{TERMIOS} module, which defines the | 
 | relevant symbolic constants (see the next section). | 
 |  | 
 | The module defines the following functions: | 
 |  | 
 | \begin{funcdesc}{tcgetattr}{fd} | 
 | Return a list containing the tty attributes for file descriptor | 
 | \var{fd}, as follows: \code{[}\var{iflag}, \var{oflag}, \var{cflag}, | 
 | \var{lflag}, \var{ispeed}, \var{ospeed}, \var{cc}\code{]} where | 
 | \var{cc} is a list of the tty special characters (each a string of | 
 | length 1, except the items with indices \constant{TERMIOS.VMIN} and | 
 | \constant{TERMIOS.VTIME}, which are integers when these fields are | 
 | defined).  The interpretation of the flags and the speeds as well as | 
 | the indexing in the \var{cc} array must be done using the symbolic | 
 | constants defined in the \module{TERMIOS} module. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{tcsetattr}{fd, when, attributes} | 
 | Set the tty attributes for file descriptor \var{fd} from the | 
 | \var{attributes}, which is a list like the one returned by | 
 | \function{tcgetattr()}.  The \var{when} argument determines when the | 
 | attributes are changed: \constant{TERMIOS.TCSANOW} to change | 
 | immediately, \constant{TERMIOS.TCSADRAIN} to change after transmitting | 
 | all queued output, or \constant{TERMIOS.TCSAFLUSH} to change after | 
 | transmitting all queued output and discarding all queued input. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{tcsendbreak}{fd, duration} | 
 | Send a break on file descriptor \var{fd}.  A zero \var{duration} sends | 
 | a break for 0.25--0.5 seconds; a nonzero \var{duration} has a system | 
 | dependent meaning. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{tcdrain}{fd} | 
 | Wait until all output written to file descriptor \var{fd} has been | 
 | transmitted. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{tcflush}{fd, queue} | 
 | Discard queued data on file descriptor \var{fd}.  The \var{queue} | 
 | selector specifies which queue: \constant{TERMIOS.TCIFLUSH} for the | 
 | input queue, \constant{TERMIOS.TCOFLUSH} for the output queue, or | 
 | \constant{TERMIOS.TCIOFLUSH} for both queues. | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{tcflow}{fd, action} | 
 | Suspend or resume input or output on file descriptor \var{fd}.  The | 
 | \var{action} argument can be \constant{TERMIOS.TCOOFF} to suspend | 
 | output, \constant{TERMIOS.TCOON} to restart output, | 
 | \constant{TERMIOS.TCIOFF} to suspend input, or | 
 | \constant{TERMIOS.TCION} to restart input.  | 
 | \end{funcdesc} | 
 |  | 
 | \subsection{Example} | 
 | \nodename{termios Example} | 
 |  | 
 | Here's a function that prompts for a password with echoing turned | 
 | off.  Note the technique using a separate \function{tcgetattr()} call | 
 | and a \keyword{try} ... \keyword{finally} statement to ensure that the | 
 | old tty attributes are restored exactly no matter what happens: | 
 |  | 
 | \begin{verbatim} | 
 | def getpass(prompt = "Password: "): | 
 |     import termios, 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 = raw_input(prompt) | 
 |     finally: | 
 |         termios.tcsetattr(fd, TERMIOS.TCSADRAIN, old) | 
 |     return passwd | 
 | \end{verbatim} | 
 |  | 
 | \section{Standard Module \module{TERMIOS}} | 
 | \label{module-TERMIOSuppercase} | 
 | \stmodindex{TERMIOS} | 
 | \indexii{\POSIX{}}{I/O control} | 
 | \indexii{tty}{I/O control} | 
 |  | 
 |  | 
 | This module defines the symbolic constants required to use the | 
 | \module{termios}\refbimodindex{termios} module (see the previous | 
 | section).  See the \POSIX{} or \UNIX{} manual pages (or the source) | 
 | for a list of those constants. | 
 |  | 
 | Note: this module resides in a system-dependent subdirectory of the | 
 | Python library directory.  You may have to generate it for your | 
 | particular system using the script \file{Tools/scripts/h2py.py}. |