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 中的
ECHO
和ICANON
本地模式旗標,並將最小輸入設定為 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 之前先儲存起來。此函式回傳這個值。這會清除
ECHO
和ICANON
本地模式旗標,並將最小輸入設定為 1 位元組,且無延遲。在 3.12 版的變更:現在的回傳值為原本的 tty 屬性,而不是
None
。在 3.12.2 版的變更:不再清除
ICRNL
旗標。這恢復了 Python 3.11 及更早版本的行為,也符合 Linux、macOS 及 BSD 在他們的stty(1)
man 頁面中描述的 cbreak 模式。
也參考
termios
模組低階終端機控制介面。