termios — Tty-kontroll i POSIX-stil


Denna modul tillhandahåller ett gränssnitt till POSIX-anropen för tty I/O-kontroll. För en fullständig beskrivning av dessa anrop, se termios(3) Unix-manualsida. Den är endast tillgänglig för de Unix-versioner som stöder POSIX termios-stil tty I/O-kontroll som konfigureras under installationen.

Alla funktioner i denna modul tar en filbeskrivare fd som sitt första argument. Detta kan vara en heltalsfilbeskrivning, som den som returneras av sys.stdin.fileno(), eller ett filobjekt, som sys.stdin själv.

Denna modul definierar också alla konstanter som behövs för att arbeta med de funktioner som tillhandahålls här; dessa har samma namn som sina motsvarigheter i C. Se din systemdokumentation för mer information om hur du använder dessa gränssnitt för terminalstyrning.

Modulen definierar följande funktioner:

termios.tcgetattr(fd)

Returnerar en lista som innehåller tty-attributen för filbeskrivaren fd, enligt följande: [iflag, oflag, cflag, lflag, ispeed, ospeed, cc] där cc är en lista med tty-specialtecken (var och en en sträng med längden 1, utom objekten med index VMIN och VTIME, som är heltal när dessa fält definieras). Tolkningen av flaggorna och hastigheterna samt indexeringen i cc-arrayen måste göras med hjälp av de symboliska konstanter som definieras i modulen termios.

termios.tcsetattr(fd, when, attributes)

Ställ in tty-attributen för filbeskrivaren fd från attributes, som är en lista liknande den som returneras av tcgetattr(). Argumentet when bestämmer när attributen ska ändras:

termios.TCSANOW

Ändra attribut omedelbart.

termios.TCSADRAIN

Ändra attribut efter att ha sänt all köad utdata.

termios.TCSAFLUSH

Ändra attribut efter att ha sänt all köad utdata och kasserat all köad indata.

termios.tcsendbreak(fd, duration)

Skicka en paus på filbeskrivaren fd. En noll duration skickar en paus i 0,25–0,5 sekunder; en icke-noll duration har en systemberoende betydelse.

termios.tcdrain(fd)

Vänta tills alla utdata som skrivits till filbeskrivaren fd har överförts.

termios.tcflush(fd, queue)

Kassera köade data på filbeskrivaren fd. Väljaren queue anger vilken kö: TCIFLUSH för ingångskön, TCOFLUSH för utgångskön eller TCIOFLUSH för båda köerna.

termios.tcflow(fd, action)

Avbryt eller återuppta inmatning eller utmatning på filbeskrivaren fd. Argumentet action kan vara TCOOFF för att avbryta utdata, TCOON för att starta om utdata, TCIOFF för att avbryta inmatning eller TCION för att starta om inmatning.

termios.tcgetwinsize(fd)

Returnerar en tupel (ws_row, ws_col) som innehåller tty-fönsterstorleken för filbeskrivaren fd. Kräver termios.TIOCGWINSZ eller termios.TIOCGSIZE.

Tillagd i version 3.11.

termios.tcsetwinsize(fd, winsize)

Ställ in tty-fönsterstorleken för filbeskrivaren fd från winsize, som är en tupel med två punkter (ws_row, ws_col) som den som returneras av tcgetwinsize(). Kräver att minst ett av paren (termios.TIOCGWINSZ, termios.TIOCSWINSZ); (termios.TIOCGSIZE, termios.TIOCSSIZE) är definierat.

Tillagd i version 3.11.

Se även

Modul tty

Praktiska funktioner för vanliga terminalstyrningsoperationer.

Exempel

Här är en funktion som frågar efter ett lösenord med ekot avstängt. Notera tekniken med ett separat tcgetattr()-anrop och en tryfinally-sats för att säkerställa att de gamla tty-attributen återställs exakt oavsett vad som händer:

def getpass(prompt="Lösenord: "):
    import termios, sys
    fd = sys.stdin.fileno()
    gammal = termios.tcgetattr(fd)
    new = termios.tcgetattr(fd)
    ny[3] = ny[3] & ~termios.ECHO # lflags
    försök:
        termios.tcsetattr(fd, termios.TCSADRAIN, ny)
        passwd = input(prompt)
    slutligen: termios.tcsetattr(fd)
        termios.tcsetattr(fd, termios.TCSADRAIN, gammal)
    returnera passwd