tty — Terminal control functions

Source code:Lib/tty.py


Thetty module defines functions for putting the tty into cbreak and rawmodes.

Because it requires thetermios module, it will work only on Unix.

Thetty module defines the following functions:

tty.cfmakeraw(mode)

Convert the tty attribute listmode, which is a list like the one returnedbytermios.tcgetattr(), to that of a tty in raw mode.

Added in version 3.12.

tty.cfmakecbreak(mode)

Convert the tty attribute listmode, which is a list like the one returnedbytermios.tcgetattr(), to that of a tty in cbreak mode.

This clears theECHO andICANON local mode flags inmode as wellas setting the minimum input to 1 byte with no delay.

Added in version 3.12.

Changed in version 3.12.2:TheICRNL flag is no longer cleared. This matches Linux and macOSsttycbreak behavior and whatsetcbreak() historically did.

tty.setraw(fd,when=termios.TCSAFLUSH)

Change the mode of the file descriptorfd to raw. Ifwhen is omitted, itdefaults totermios.TCSAFLUSH, and is passed totermios.tcsetattr(). The return value oftermios.tcgetattr()is saved before settingfd to raw mode; this value is returned.

Changed in version 3.12:The return value is now the original tty attributes, instead ofNone.

tty.setcbreak(fd,when=termios.TCSAFLUSH)

Change the mode of file descriptorfd to cbreak. Ifwhen is omitted, itdefaults totermios.TCSAFLUSH, and is passed totermios.tcsetattr(). The return value oftermios.tcgetattr()is saved before settingfd to cbreak mode; this value is returned.

This clears theECHO andICANON local mode flags as well as settingthe minimum input to 1 byte with no delay.

Changed in version 3.12:The return value is now the original tty attributes, instead ofNone.

Changed in version 3.12.2:TheICRNL flag is no longer cleared. This restores the behaviorof Python 3.11 and earlier as well as matching what Linux, macOS, & BSDsdescribe in theirstty(1) man pages regarding cbreak mode.

See also

Moduletermios

Low-level terminal control interface.