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()。termios.tcgetattr()的返回值在将 fd 设置为 raw 模式之前保存;此值将被返回。3.12 版中已更改: 返回值现在是原始的 tty 属性,而不是
None。
- tty.setcbreak(fd, when=termios.TCSAFLUSH)¶
将文件描述符 fd 的模式更改为 cbreak。如果省略 when,则默认为
termios.TCSAFLUSH,并传递给termios.tcsetattr()。termios.tcgetattr()的返回值在将 fd 设置为 cbreak 模式之前保存;此值将被返回。这将清除
ECHO和ICANON本地模式标志,并设置最小输入为 1 字节且无延迟。3.12 版中已更改: 返回值现在是原始的 tty 属性,而不是
None。3.12.2 版中已更改: 不再清除
ICRNL标志。这恢复了 Python 3.11 及更早版本的行为,并与 Linux、macOS 和 BSD 在其stty(1)手册页中描述的 cbreak 模式相关内容相符。
参见
- 模块
termios 底层终端控制接口。