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()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 模式之前儲存;此值將被返回。

這將清除 ECHOICANON 本地模式標誌,並設定最小輸入為 1 位元組且無延遲。

3.12 版中已更改: 返回值現在是原始的 tty 屬性,而不是 None

3.12.2 版中已更改: 不再清除 ICRNL 標誌。這恢復了 Python 3.11 及更早版本的行為,並與 Linux、macOS 和 BSD 在其 stty(1) 手冊頁中描述的 cbreak 模式相關內容相符。

參見

模組 termios

底層終端控制介面。