termios —POSIXスタイルのttyコントロール
このモジュールは、tty I / O制御のためのPOSIX呼び出しへのインターフェースを提供します。 これらの呼び出しの詳細については、 termios(3) Unixのマニュアルページを参照してください。 これは、インストール中に構成されたPOSIX termios スタイルのttyI / O制御をサポートするUnixバージョンでのみ使用できます。
このモジュールのすべての関数は、最初の引数としてファイル記述子 fd を取ります。 これは、sys.stdin.fileno()
によって返されるような整数のファイル記述子、またはsys.stdin
自体などのファイルオブジェクトにすることができます。
このモジュールは、ここで提供される関数を操作するために必要なすべての定数も定義します。 これらは、Cの対応するものと同じ名前です。 これらの端末制御インターフェースの使用の詳細については、システムのドキュメントを参照してください。
このモジュールは、次の機能を定義します。
- termios.tcgetattr(fd)
- 次のように、ファイル記述子 fd のtty属性を含むリストを返します。
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]
ここで、 cc はtty特殊文字(それぞれ長さ1の文字列)のリストです。ただし、インデックスVMIN
およびVTIME
の項目は、これらのフィールドが定義されている場合は整数です)。 cc 配列のフラグと速度の解釈、およびインデックス付けは、 termios モジュールで定義されたシンボリック定数を使用して実行する必要があります。
- termios.tcsetattr(fd, when, attributes)
- 属性からファイル記述子 fd のtty属性を設定します。これは、 tcgetattr()によって返されるようなリストです。 when 引数は、属性がいつ変更されるかを決定します。
TCSANOW
はすぐに変更され、TCSADRAIN
はキューに入れられたすべての出力を送信した後に変更され、TCSAFLUSH
は後に変更されます。キューに入れられたすべての出力を送信し、キューに入れられたすべての入力を破棄します。
- termios.tcsendbreak(fd, duration)
- ファイル記述子 fd でブレークを送信します。 ゼロ duration は、0.25〜0.5秒間ブレークを送信します。 ゼロ以外の期間には、システムに依存する意味があります。
- termios.tcdrain(fd)
- ファイル記述子 fd に書き込まれたすべての出力が送信されるまで待ちます。
- termios.tcflush(fd, queue)
- ファイル記述子 fd のキューに入れられたデータを破棄します。 queue セレクターは、入力キューの場合は
TCIFLUSH
、出力キューの場合はTCOFLUSH
、両方のキューの場合はTCIOFLUSH
のいずれのキューを指定します。
- termios.tcflow(fd, action)
- ファイル記述子 fd の入力または出力を一時停止または再開します。 action 引数は、出力を一時停止する
TCOOFF
、出力を再開するTCOON
、入力を一時停止するTCIOFF
、または再起動するTCION
のいずれかになります。入力。
例
これは、エコーをオフにしてパスワードの入力を求める関数です。 別の tcgetattr()呼び出しと try … finally ステートメントを使用して、何が起こっても古いtty属性が正確に復元されるようにする手法に注意してください。
def getpass(prompt="Password: "):
import termios, sys
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ECHO # lflags
try:
termios.tcsetattr(fd, termios.TCSADRAIN, new)
passwd = input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd