# `termios` — POSIX style tty control

Цей модуль надає інтерфейс для викликів POSIX для керування tty I/O. Щоб отримати повний опис цих викликів, перегляньте termios(3) сторінку посібника Unix. Він доступний лише для тих версій Unix, які підтримують POSIX termios стиль tty I/O control, налаштований під час встановлення.

Усі функції в цьому модулі приймають файловий дескриптор fd як перший аргумент. Це може бути цілочисельний дескриптор файлу, наприклад, повернутий `sys.stdin.fileno()`, або file object, наприклад `sys.stdin`.

Цей модуль також визначає всі константи, необхідні для роботи з наданими тут функціями; вони мають ті самі назви, що й відповідники на C. Будь ласка, зверніться до системної документації, щоб дізнатися більше про використання цих інтерфейсів керування терміналами.

Модуль визначає такі функції:

`termios.``tcgetattr`(fd)

  Повертає список, що містить атрибути tty для файлового дескриптора fd, таким чином: `[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]`, де cc — це список спеціальних символів tty (кожен рядок довжиною 1, за винятком елементів з індексами `VMIN` і `VTIME`, які є цілими числами, коли ці поля визначені). Інтерпретація прапорів і швидкостей, а також індексування в масиві cc мають виконуватися за допомогою символічних констант, визначених у модулі `termios`.

`termios.``tcsetattr`(fd, when, attributes)

  Set the tty attributes for file descriptor fd from the attributes, which is a list like the one returned by `tcgetattr()`. The when argument determines when the attributes are changed: `TCSANOW` to change immediately, `TCSADRAIN` to change after transmitting all queued output, or `TCSAFLUSH` to change after transmitting all queued output and discarding all queued input.

`termios.``tcsendbreak`(fd, duration)

  Надіслати перерву на файловий дескриптор fd. Нульова тривалість посилає перерву на 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`, щоб перезапустити введення.

Дивись також

Модуль `tty`

  Функції зручності для звичайних операцій керування терміналом.

## приклад

Ось функція, яка запитує пароль із вимкненим відлунням. Зверніть увагу на техніку використання окремого виклику `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