Книга: Основы программирования в Linux
Режимы клавиатуры
Режимы клавиатуры
Процедуры считывания с клавиатуры управляются режимами. Режимы устанавливаются с помощью следующих функций:
#include <curses.h>
int echo(void);
int noecho(void);
int cbreak(void);
int nocbreak(void);
int raw(void);
int noraw(void);
Функции echo
и noecho
просто включают и отключают отображение символов, набираемых на клавиатуре. Оставшиеся четыре функции управляют тем, как символы, набранные на терминале, становятся доступны программе с применением curses. Для того чтобы понять функцию cbreak
, необходимо иметь представление о стандартном режиме ввода. Когда программа, использующая библиотеку curses, стартует с вызова функции initscr
, устанавливается режим ввода, называемый режимом с обработкой (cooked mode). Это означает построчную обработку, т.е. ввод становится доступен программе после нажатия пользователем клавиши <Enter> (или <Return> на некоторых клавиатурах). Специальные символы на клавиатуре включены, поэтому набор соответствующих клавиатурных последовательностей может сгенерировать сигнал в программе. Управление потоком, если терминал запускается с терминала, также включено. Вызывая функцию cbreak
, программа может установить режим ввода cbreak
, в котором символы становятся доступными программе сразу после их набора, а не помещаются в буфер и передаются программе только после нажатия клавиши <Enter>. Как и в режиме с обработкой, специальные символы клавиатуры действуют, а простые клавиши, например <Backspace>, передаются для обработки непосредственно в программу, поэтому если вы хотите, чтобы нажатие клавиши <Backspace> приводило к привычным действиям, то вы должны запрограммировать их самостоятельно.
Вызов функции raw
отключает обработку специальных символов, поэтому становится невозможной генерация сигналов или управление потоком с помощью набранных на клавиатуре специальных символьных последовательностей. Вызов функции nocbreak
возвращает режим ввода в режим с обработкой символов, но режим обработки специальных символов не изменяет; вызов noraw
восстанавливает и режим с обработкой, и обработку специальных символов.
- 7.6. Режимы просмотра презентации
- Режимы ввода
- 8.5.3. Режимы энергосбережения
- Профилактика поломок клавиатуры
- 4. Режимы работы экспертных систем
- 1.1 Режимы ядра и пользователя Windows
- Устройство клавиатуры компьютера
- Режимы работы проигрывателя
- Режимы работы с документами
- Режимы работы с таблицами
- Создание клавиатуры
- Режимы: форматирование в зависимости от контекста