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


           

С помощью Curses можно узнать,


use strict;

use Curses;

my Stimeout = 10;

if (@ARGV && $ARGV[O] =~ /~-(\d+\.?\d-)$/) <

Stimeout = $1;

shift,



die "usage: $0 [ -timeout ] end args\n" unless @ARGV;

initscr();       # Инициализировать экран

noecho();

cbreakO;

nodelay(1);      # Чтобы функция getch() выполнялась без блокировки

$SIG{INT} = sub { done("0uch!") };

sub done { endwin(); print "@_\n"; exit; }

while (1) {

while ((my $key = getch()) ne ERR)  {       # Возможен ввод

done("See ya") if $key eq  'q'         # нескольких символов

>

ray @data =  '(@ARGV) 2>&1';                          # Вывод+ошибки

for (my $i =0;   $i < $LINES;   $i++)  {

addstr($i,   0,   $data[$i]  ||   '   '  x $COLS);

standout();

addstr($LINES-1, $COLS - 24, scalar localtime);

standend();

move(0,0);

refresh();                   # Обновить экран

my (Sin, $out) = ('', '');

vec($in,fileno(STDIN),1) =1;        # Искать символ в stdin select($out = $in,undef,undef,$timeout);# Ожидание }

С помощью Curses можно узнать, когда пользователь нажал клавишу со стрел­кой или служебную клавишу (например, Ноте или Insert). Обычно это вызывает затруднения, поскольку эти клавиши кодируются несколькими байтами. С Curses все просто:

keypad(1);                                    # Включить режим ввода

$key = getch();                        # с цифровой клавиатуры

if ($key eq   'k'         11             # Режим vi

$key eq "\cP"      ||         # Режим emacs

$key eq KEYJJP)                 # Стрелка

{

# Обработать клавишу }

Другие функции Curses позволяют читать текст в определенной позиции экра­на, управлять выделением символов и даже работать в нескольких окнах.

Модуль perlmenu, также хранящийся на CPAN, построен на базе низкоуровне­вого модуля Curses. Он обеспечивает высокоуровневые операции с меню и экран­ными формами. Приведем пример экранной формы из поставки perlmenu:

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



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





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий