tty
— 终端控制函数¶
源代码: Lib/tty.py
tty
模块定义了用于将 tty 置于 cbreak 和 raw 模式的函数。
可用性:Unix。
因为它需要 termios
模块,所以它只能在 Unix 上运行。
tty
模块定义了以下函数
- tty.cfmakeraw(mode)¶
将 tty 属性列表 mode(一个类似于
termios.tcgetattr()
返回的列表)转换为 raw 模式 tty 的属性列表。在版本 3.12 中添加。
- tty.cfmakecbreak(mode)¶
将 tty 属性列表 mode(一个类似于
termios.tcgetattr()
返回的列表)转换为 cbreak 模式 tty 的属性列表。这会清除 mode 中的
ECHO
和ICANON
本地模式标志,以及将最小输入设置为 1 字节,无延迟。在版本 3.12 中添加。
在版本 3.12.2 中更改: 不再清除
ICRNL
标志。这与 Linux 和 macOSstty cbreak
行为以及setcbreak()
历史上的行为相匹配。
- tty.setraw(fd, when=termios.TCSAFLUSH)¶
将文件描述符 fd 的模式更改为 raw。如果省略 when,则默认为
termios.TCSAFLUSH
,并传递给termios.tcsetattr()
。在将 fd 设置为 raw 模式之前,会保存termios.tcgetattr()
的返回值;返回该值。在版本 3.12 中更改:返回值现在是原始 tty 属性,而不是
None
。
- tty.setcbreak(fd, when=termios.TCSAFLUSH)¶
将文件描述符 fd 的模式更改为 cbreak。如果省略 when,则默认为
termios.TCSAFLUSH
,并传递给termios.tcsetattr()
。在将 fd 设置为 cbreak 模式之前,会保存termios.tcgetattr()
的返回值;返回该值。这将清除
ECHO
和ICANON
本地模式标志,并将最小输入设置为 1 字节,无延迟。在版本 3.12 中更改:返回值现在是原始 tty 属性,而不是
None
。在版本 3.12.2 中更改:不再清除
ICRNL
标志。这恢复了 Python 3.11 及更早版本的行为,并与 Linux、macOS 和 BSD 在其stty(1)
手册页中关于 cbreak 模式的描述相匹配。
另请参阅
- 模块
termios
低级终端控制接口。