c_programming_language/ncurses/DESCRIPTION.md

2 KiB
Raw Permalink Blame History

Links

Построчная буферизация

Построчная буферизация означает, что символы не отправляются программе сразу, а сначала накапливаются в буфере пока пользователь не нажмет Enter.
Визуальное описание выглядит примерно так:
Режим cooked

Пользователь печатает: h e l l o [backspace] [backspace] i
Что видит пользователь: helli
Буфер терминала: helli
                                    ↓ [Enter]
Программа получает: "helli\n" (только после Enter!)

Режим cbreak

Пользователь печатает: h
Программа получает: 'h' ← сразу!

Пользователь печатает: e
Программа получает: 'e' ← сразу!

Пользователь печатает: l
Программа получает: 'l' ← сразу!

Режимы инициализации

raw() vs cbreak()

У терминалов есть 3 режима работы:

  1. Cooked mode (по умолчанию) Это когда - ввод буферизиуется построчно, пользователь должен нажать Enter, работают сигналы по типу Ctrl-C, Ctrl-Z, работает backspace для редактирования строки.
  2. Cbreak mode Это когда:
  • Ввод передается немедленно, без ожидания Enter;
  • Сигналы работают;
  • Нет буферизации по строкам;
  • Каждый символ доступен сразу после нажатия.
  1. Raw mode
    Это когда:
  • Ввод передается немедленно;
  • Полный контроль над всеми клавишами;
  • Не работают сигналы