tty --- 終端機控制函式

原始碼:Lib/tty.py


tty 模組定義了將 tty 放入 cbreak 和 raw 模式的函式。

適用: Unix.

因為它需要termios 模組,所以只能在 Unix 上執行。

tty 模組定義了以下函式:

tty.cfmakeraw(mode)

將 tty 屬性串列mode 轉換成原始模式下的 tty 屬性串列,這個串列就像termios.tcgetattr() 所回傳的一樣。

在 3.12 版被加入.

tty.cfmakecbreak(mode)

將 tty 屬性串列mode 轉換成 cbreak 模式下的 tty 屬性串列,這個串列就像termios.tcgetattr() 所回傳的一樣。

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

在 3.12 版被加入.

在 3.12.2 版的變更:不再清除ICRNL 標記。這符合 Linux 和 macOS 的sttycbreak 行為,也符合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 模式為 raw 之前先儲存起來。此函式回傳這個值。

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

在 3.12 版的變更:現在的回傳值為原本的 tty 屬性,而不是None

在 3.12.2 版的變更:不再清除ICRNL 旗標。這恢復了 Python 3.11 及更早版本的行為,也符合 Linux、macOS 及 BSD 在他們的stty(1) man 頁面中描述的 cbreak 模式。

也參考

termios 模組

低階終端機控制介面。