"tty" --- 终端控制函数
**********************

**Source code:** Lib/tty.py

======================================================================

"tty" 模块定义了将 tty 放入 cbreak 和 raw 模式的函数。

可用性: Unix。

因为它需要 "termios" 模块，所以只能在 Unix 上运行。

"tty" 模块定义了以下函数：

tty.cfmakeraw(mode)

   操作 tty 属性列表 *mode*，它是一个与 "termios.tcgetattr()" 的返回值
   类似的列表，将其转换为原始模式 tty 的属性列表。

   Added in version 3.12.

tty.cfmakecbreak(mode)

   操作 tty 属性列表 *mode*，它是一个与 "termios.tcgetattr()" 的返回值
   类似的列表，将其转换为 cbreak 模式的 tty 的属性列表。

   这将清除 *mode* 中的 "ECHO" 和 "ICANON" 本地模式旗标并将最小输入设
   为 1 字节且无延迟。

   Added in version 3.12.

   在 3.12.2 版本发生变更: "ICRNL" 旗标将不再被清除。 这与 Linux 和
   macOS 的 "stty 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"
     低级终端控制接口。
