c_programming_language/ncurses/DESCRIPTION.md

40 lines
2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Links
- [Tutorial for ncurses](https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/helloworld.html)
# Построчная буферизация
Построчная буферизация означает, что символы не отправляются программе сразу, а сначала накапливаются в буфере пока пользователь не нажмет `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;
- Сигналы работают;
- Нет буферизации по строкам;
- Каждый символ доступен сразу после нажатия.
3. Raw mode
Это когда:
- Ввод передается немедленно;
- Полный контроль над всеми клавишами;
- Не работают сигналы