PERL: БИБЛИОТЕКА ПРОГРАММИСТА



              

PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 503


Режим cbreak не мешает драйверу терминала интерпретировать символы кон­ца файла и управления. Если вы хотите, чтобы ваша программа могла прочитать комбинации Ctrl+C (обычно посылает процессу SIGINT) или Ctrl+D (признак конца файла в UNIX), используйте режим raw.

Вызов Read Key с нулевым аргументом означает, что мы хотим выполнить нор­мальное чтение функцией getc. При отсутствии входных данных программа ожидает их появления. Кроме того, можно передать аргумент -1 (неблокирующее чтение) или положительное число, которое определяет тайм-аут (продолжитель­ность ожидания в целых секундах; дробные значения секунд не допускаются). Неблокирующее чтение и чтение с тайм-аутом возвращает либо undef при отсут­ствии входных данных, либо строку нулевой длины при достижении конца файла.

Последние версии Term::ReadKey также включают ограниченную поддержку систем, не входящих в семейство UNIX.

t> Смотри также--------------------------------------------------------------------------------------------

Документация по модулю Term::ReadKey с CPAN; рецепты 15.8—15.9. Функ­ции getc и sysread описаны вperlfunc(l).

15.7. Предупреждающие сигналы

Проблема

Требуется выдать предупреждающий сигнал на терминале пользователя.

Решение

Воспользуйтесь символом "\а" для выдачи звукового сигнала:

print "\aWake up!\n";

Другой вариант — воспользуйтесь средством терминала "vb " для выдачи визу­ального сигнала:

use Term::Cap;

SOSPEED = 9600; eval {

require POSIX;

my $termios = POSIX::Termios->new();


532   Глава 15 • Пользовательские интерфейсы

$termios->getattr,

S0SPEED = $termios->getospeed;

Stermmal = Term: .Cap->Tgetent({OSPEED=>$OSPEEO}), $vb = "; eval {

$terminal->Trequire('vb '),

$vb = $terminal->Tputs('vb', 1),

print $vb;                 # Визуальный сигнал

Комментарий

Служебный символ "\а" — то же самое, что и "\cG", "\007" и "\хО7". Все эти обо­значения относятся к символу ASCII BEL, который выдает на терминал против­ный звонок. Вам не приходилось бывать в переполненном терминальном классе в конце семестра, когда десятки новичков одновременно пытаются перевести Ы в режим ввода? От этой какофонии можно сойти с ума. Чтобы не злить окружа­ющих, можно использовать визуальные сигналы. Идея проста: терминал дол­жен показывать, а не звучать (по крайней мере, не в многолюдных помещениях). Некоторые терминалы вместо звукового сигнала позволяют на короткое время поменять цвет символов с цветом фона, чтобы мерцание привлекло внимание пользователя.




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