:mod:`!tty` --- Terminal control functions ========================================== .. module:: tty :platform: Unix :synopsis: Utility functions that perform common terminal control operations. .. moduleauthor:: Steen Lumholt .. sectionauthor:: Moshe Zadka **Source code:** :source:`Lib/tty.py` -------------- The :mod:`tty` module defines functions for putting the tty into cbreak and raw modes. .. availability:: Unix. Because it requires the :mod:`termios` module, it will work only on Unix. The :mod:`tty` module defines the following functions: .. function:: cfmakeraw(mode) Convert the tty attribute list *mode*, which is a list like the one returned by :func:`termios.tcgetattr`, to that of a tty in raw mode. .. versionadded:: 3.12 .. function:: cfmakecbreak(mode) Convert the tty attribute list *mode*, which is a list like the one returned by :func:`termios.tcgetattr`, to that of a tty in cbreak mode. This clears the ``ECHO`` and ``ICANON`` local mode flags in *mode* as well as setting the minimum input to 1 byte with no delay. .. versionadded:: 3.12 .. versionchanged:: 3.12.2 The ``ICRNL`` flag is no longer cleared. This matches Linux and macOS ``stty cbreak`` behavior and what :func:`setcbreak` historically did. .. function:: setraw(fd, when=termios.TCSAFLUSH) Change the mode of the file descriptor *fd* to raw. If *when* is omitted, it defaults to :const:`termios.TCSAFLUSH`, and is passed to :func:`termios.tcsetattr`. The return value of :func:`termios.tcgetattr` is saved before setting *fd* to raw mode; this value is returned. .. versionchanged:: 3.12 The return value is now the original tty attributes, instead of ``None``. .. function:: setcbreak(fd, when=termios.TCSAFLUSH) Change the mode of file descriptor *fd* to cbreak. If *when* is omitted, it defaults to :const:`termios.TCSAFLUSH`, and is passed to :func:`termios.tcsetattr`. The return value of :func:`termios.tcgetattr` is saved before setting *fd* to cbreak mode; this value is returned. This clears the ``ECHO`` and ``ICANON`` local mode flags as well as setting the minimum input to 1 byte with no delay. .. versionchanged:: 3.12 The return value is now the original tty attributes, instead of ``None``. .. versionchanged:: 3.12.2 The ``ICRNL`` flag is no longer cleared. This restores the behavior of Python 3.11 and earlier as well as matching what Linux, macOS, & BSDs describe in their ``stty(1)`` man pages regarding cbreak mode. .. seealso:: Module :mod:`termios` Low-level terminal control interface.