Back to Cpython

:mod:`!tty` --- Terminal control functions

Doc/library/tty.rst

3.15.0a82.5 KB
Original Source

:mod:!tty --- Terminal control functions

.. module:: tty :synopsis: Utility functions that perform common terminal control operations.

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.