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 中的 ECHOICANON 本地模式标志,并将最小输入设置为 1 个字节,无延迟。

3.12 版本新增。

在 3.12.2 版本中变更: 不再清除 ICRNL 标志。这与 Linux 和 macOS stty 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() 的返回值;返回此值。

这将清除 ECHOICANON 本地模式标志,并将最小输入设置为 1 个字节,无延迟。

在 3.12 版本中变更: 返回值现在是原始的 tty 属性,而不是 None

在 3.12.2 版本中变更: 不再清除 ICRNL 标志。这恢复了 Python 3.11 及更早版本的行为,并与 Linux、macOS 和 BSD 的 stty(1) 手册页中关于 cbreak 模式的描述相匹配。

参见

模块 termios

低级终端控制接口。