Операционная система UNIX. Руководство программиста




Опции ввода


Система UNIX производит множество действий с символами, вводимыми пользователем. Среди прочего, система выполняет следующее:

  • Отображает вводимые символы на экране терминала (такое отображение мы будем называть эхом).
  • Обрабатывает символы забоя (ERASE, обычно #) и уничтожения (KILL, обычно @).
  • Интерпретирует CTRL+D как конец файла (EOF).
  • Обрабатывает символы прерывания (INTR) и выхода (QUIT).
  • Сбрасывает бит четности символа.
  • Преобразует возврат каретки в перевод строки.

Curses полностью берет на себя управление экраном терминала, поэтому его подпрограммы отключают эхо, производимое системой UNIX, и делают его самостоятельно. Временами бывает необходимо программно отключать стандартную для системы UNIX обработку символов. Для этого предназначены некоторые подпрограммы curses, например, noecho() и cbreak(). Используя такие подпрограммы, можно управлять интерпретацией вводимых символов. В приведенной ниже таблице перечислены основные подпрограммы, предназначенные для управления режимом ввода.

Если программа использует curses и вводит с терминала, она должна установить некоторые опции ввода. Это связано с тем, что при старте программы терминал может оказаться в любом из режимов cbreak(), raw(), nocbreak(), или noraw(). Как показано в таблице, при запуске программы гарантируется только наличие режима echo().

Как правило, в интерактивной терминальной программе используются комбинация режимов noecho() и cbreak(). Пусть, например, нужно отображать вводимые символы не там, где находится курсор, а в нижней строке экрана. Для этого предназначена подпрограмма noecho(). Однако, хотя noecho() и подавляет отображение вводимых символов, символы забоя и уничтожения обрабатываются обычным образом. Для отключения этого режима используется подпрограмма cbreak().

Опции ввода Символы
Интерпретируются Не интерпретируются
Нормальное состояние "вне curses" прерывание, выход, сброс бита четности, <CR> в <NL>, забой, уничтожение, конец файла
Нормальное состояние "старт curses-программы" эхо (заменяет эхо системы UNIX) все остальное не определено
cbreak () и echo () прерывание, выход, сброс бита четности эхо забой, уничтожение, конец файла
cbreak () и noecho () прерывание, выход, сброс бита четности забой, уничтожение, конец файла, эхо
nocbreak () и noecho () разрыв, выход, сброс бита четности, забой, уничтожение, конец файла эхо
nocbreak () и echo () См. предостережение ниже
nl () <CR> в <NL>  
nonl ()   <CR> в <NL>
raw () [вместо cbreak ()]   разрыв, выход, сброс бита четности
<


Содержание  Назад  Вперед