Unix Man (Справочное руководство)


CURSES(3X) - часть 12


touchwin (win)
touchline (win, start, count)

Забыть информацию о том, какие части окна изменились (эта информация используется для оптимизации вывода). Считать, что все окно требует перерисовки. Это часто бывает необходимо для пересекающихся окон, так как изменение одних окон вызывает изменение и других, но информация об этих изменениях в структурах данных других окон не отражается. Обращение к touchline говорит о том, что изменилось count строк окна, начиная со строки с номером start.

Ввод


getch ( )
wgetch (win)
mvgetch (y, x)
mvwgetch (win, y, x)

С клавиатуры терминала, связанного с окном, считывается символ. Если установлен режим NODELAY и символ еще не введен, возвращается значение ERR. Если установлен режим DELAY, программа приостанавливается до тех пор, пока система не передаст ей введенный текст. В зависимости от режима CBREAK это будет после ввода одного символа (режим CBREAK) или после ввода строки целиком (режим NOCBREAK). В режиме HALF-DELAY программа приостанавливается до тех пор, пока не будет введен символ или истечет указанный период времени. Если не установлен режим NOECHO, вводимые символы отображаются в соответствующем окне. Между обращениями к move и getch, вызываемыми из процедур mvgetch и mvwgetch, не делается refresh.

Используя процедуры getch, wgetch, mvgetch и mvwgetch, нельзя устанавливать одновременно режимы NOCBREAK и ECHO. Результаты могут оказаться непредсказуемыми и зависят от состояния, в котором находится драйвер .

Если предварительно была вызвана процедура keypad (win, TRUE) и нажата функциональная клавиша, то вместо посланных ею кодов будет возвращено значение, соответсвующее клавише (см. keypad в Установке режимов ввода). Функциональные клавиши определены в <curses.h>, их значения начинаются с числа 0401, а имена - с префикса KEY_. Если поступает символ, который может быть началом функциональной клавиши (например, ESC), curses запускает таймер. Если за ожидаемое время не будет получено продолжения, то символ передается сам по себе, в противном случае возвращается значение функциональной клавиши. Поэтому на многих терминалах после нажатия клавиши ESC необходимо немного подождать, прежде чем эта клавиша попадет программе. По этой же причине не рекомендуется программистам использовать клавишу ESC как односимвольную команду программе. См. также notimeout ниже.

Отметим, что getch, mvgetch и mvwgetch являются макросами.




Начало  Назад  Вперед



Книжный магазин