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

低階終端控制介面。