summaryrefslogtreecommitdiffstats
path: root/Doc/library/tty.rst
blob: ed63561c40de2497e0229e87f8cf67cc7e6c38c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
:mod:`tty` --- Terminal control functions
=========================================

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

.. moduleauthor:: Steen Lumholt
.. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il>

**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.