Массив с_сс
Символы редактирования строки, которые рассматривались в разделе 9.2.4, находятся в массиве с_сс. Их позиции в этом массиве задаются константами, определенными в файле stdio. Все определенные в спецификации ХSI значения приведены в табл. 9.1. Размер массива определяется константой
NCCS, определенной в файле linux.
Следующий фрагмент программы показывает, как можно изменить значение символа quit
для терминала, связанного со стандартным вводом (дескриптор файла со значением 0):
var
tdes:termios;
(* Получить исходные настройки терминала *)
tcgetattr(0, tdes);
tdes.c_cc[VQUIT] := char(octal(031)); (* CTRL-Y *)
(* Изменить установки терминала *)
tcsetattr(0, TCSAFLUSH, tdes);
Таблица 9.1. Коды управляющих символов
Константа | Значение | ||
VINTR | Клавиша прерывания (Interrupt key) | ||
VQUIT | Клавиша завершения (Quit key) | ||
VERASE | Символ стирания (Erase character) | ||
VKILL | Символ удаления строки (Kill character) | ||
VEOF | Символ конца файла (EOF character) | ||
VEOL | Символ конца строки (End of line marker – необязательный) | ||
VSTART | Символ продолжения передачи данных (Start character) | ||
VSTOP | Символ остановки передачи данных (Stop character) | ||
VSUSP | Символ временной приостановки выполнения (Suspend character) |
Этот пример иллюстрирует наиболее безопасный способ изменения состояния терминала. Сначала нужно получить текущее состояние терминала. Далее следует изменить только нужные параметры, не трогая остальные. И, наконец, изменить состояние терминала при помощи модифицированной структуры termios. Как уже было упомянуто, сохранять исходные значения полезно также для восстановления состояния терминала перед завершением программы, иначе нестандартное состояние терминала может оказаться сюрпризом для остальных программ.