| 
									
										
										
										
											2024-05-08 21:52:39 +02:00
										 |  |  | :mod:`!tty` --- Terminal control functions
 | 
					
						
							|  |  |  | ==========================================
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. module:: tty
 | 
					
						
							|  |  |  |    :platform: Unix
 | 
					
						
							|  |  |  |    :synopsis: Utility functions that perform common terminal control operations.
 | 
					
						
							| 
									
										
										
										
											2016-06-11 15:02:54 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | .. moduleauthor:: Steen Lumholt
 | 
					
						
							|  |  |  | .. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-11 15:02:54 -04:00
										 |  |  | **Source code:** :source:`Lib/tty.py`
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | --------------
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The :mod:`tty` module defines functions for putting the tty into cbreak and raw
 | 
					
						
							|  |  |  | modes.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-01 00:14:27 +08:00
										 |  |  | .. availability:: Unix.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | Because it requires the :mod:`termios` module, it will work only on Unix.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The :mod:`tty` module defines the following functions:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-19 13:13:30 -05:00
										 |  |  | .. 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.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-21 15:25:52 -08:00
										 |  |  |    This clears the ``ECHO`` and ``ICANON`` local mode flags in *mode* as well
 | 
					
						
							|  |  |  |    as setting the minimum input to 1 byte with no delay.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-19 13:13:30 -05:00
										 |  |  |    .. versionadded:: 3.12
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-21 15:25:52 -08:00
										 |  |  |    .. 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.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-19 13:13:30 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-16 15:58:14 +00:00
										 |  |  | .. function:: setraw(fd, when=termios.TCSAFLUSH)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Change the mode of the file descriptor *fd* to raw. If *when* is omitted, it
 | 
					
						
							|  |  |  |    defaults to :const:`termios.TCSAFLUSH`, and is passed to
 | 
					
						
							| 
									
										
										
										
											2023-05-19 13:13:30 -05:00
										 |  |  |    :func:`termios.tcsetattr`. The return value of :func:`termios.tcgetattr`
 | 
					
						
							|  |  |  |    is saved before setting *fd* to raw mode; this value is returned.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-03 20:46:38 -07:00
										 |  |  |    .. versionchanged:: 3.12
 | 
					
						
							| 
									
										
										
										
											2024-05-08 21:55:12 +02:00
										 |  |  |       The return value is now the original tty attributes, instead of ``None``.
 | 
					
						
							| 
									
										
										
										
											2023-10-03 20:46:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-16 15:58:14 +00:00
										 |  |  | .. function:: setcbreak(fd, when=termios.TCSAFLUSH)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Change the mode of file descriptor *fd* to cbreak. If *when* is omitted, it
 | 
					
						
							|  |  |  |    defaults to :const:`termios.TCSAFLUSH`, and is passed to
 | 
					
						
							| 
									
										
										
										
											2023-05-19 13:13:30 -05:00
										 |  |  |    :func:`termios.tcsetattr`. The return value of :func:`termios.tcgetattr`
 | 
					
						
							|  |  |  |    is saved before setting *fd* to cbreak mode; this value is returned.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-21 15:25:52 -08:00
										 |  |  |    This clears the ``ECHO`` and ``ICANON`` local mode flags as well as setting
 | 
					
						
							|  |  |  |    the minimum input to 1 byte with no delay.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-03 20:46:38 -07:00
										 |  |  |    .. versionchanged:: 3.12
 | 
					
						
							| 
									
										
										
										
											2024-05-08 21:55:12 +02:00
										 |  |  |       The return value is now the original tty attributes, instead of ``None``.
 | 
					
						
							| 
									
										
										
										
											2023-10-03 20:46:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-21 15:25:52 -08:00
										 |  |  |    .. 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.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Module :mod:`termios`
 | 
					
						
							|  |  |  |       Low-level terminal control interface.
 | 
					
						
							|  |  |  | 
 |