Читаем Основы программирования в Linux полностью

Выполните упражнение 6.6.

Упражнение 6.6. Применение дополнительной клавиатуры

Далее приведена короткая программа keypad.c, демонстрирующая применение режима дополнительной клавиатуры. После запуска программы нажмите клавишу и отметьте незначительную задержку, в течение которой программа пытается понять: Esc — это начало управляющей последовательности или просто нажатие одной клавиши,

1. Инициализировав программу и библиотеку curses, включите режим дополнительной клавиатуры:

#include

#include

#include

#define LOCAL_ESCAPE_KEY 27

int main() {

 int key;

 initscr();

 crmode();

 keypad(stdscr, TRUE);

2. Отключите отображение символов, чтобы помешать перемещению курсора при нажатии клавиш управления курсором. Экран очищается, и выводится некоторый текст. Программа ждет нажатия клавиши и до тех пор, пока не нажата клавиша или не возникла ошибка. Символ нажатой клавиши выводится на экран. Если нажатые клавиши соответствуют одной из последовательностей для дополнительной клавиатуры терминала, вместо символа выводится эта последовательность.

 noecho();

 clear();

 mvprintw(5, 5, "Key pad demonstration. Press 'q' to quit");

 move(7, 5);

 refresh();

 key = getch();

 while (key != ERR && key i= 'q') {

  move(7, 5);

  clrtoeol();

  if ((key >= 'A' && key <= 'Z') || (key >= 'a' && key <= 'z')) {

   printw("Key was%c", (char)key);

  } else {

   switch(key) {

   case LOCAL_ESCAPE_KEY:

    printw("%s", "Escape key");

    break;

   case KEY_END:

    printw("%s", "END key");

    break;

   case KEY_BEG:

    printw("%s", "BEGINNING key");

    break;

   case KEY_RIGHT:

    printw("%s", "RIGHT key");

    break;

   case KEY_LEFT:

    printw("%s", "LEFT key");

    break;

   case KEY_UP:

    printw("%s", "UP key");

    break;

   case KEY_DOWN:

    printw("%s", "DOWN key");

    break;

   default:

    printw("Unmatched — %d", key);

    break;

   } /* switch */

  } /* else */

  refresh();

  key = getch();

 } /* while */

 endwin();

 exit(EXIT_SUCCESS);

}

Как это работает

Включив режим дополнительной клавиатуры, вы увидите, как можно распознать различные функциональные клавиши на дополнительной клавиатуре, генерирующие escape-последовательности. Вы, возможно, сумеете заметить, что распознавание клавиши немного медленнее, чем других клавиш.

<p>Применение цвета</p>

В прошлом очень немногие терминалы ввода/вывода поддерживали цвета, поэтому у большей части самых старых версий библиотеки curses не было поддержки цветов. Цвета появились в библиотеке ncurses и других современных реализациях curses. К сожалению, на "неинтеллектуальный экран", первооснову библиотеки curses, повлиял API, и curses используют цвета очень ограниченным способом, отражающим слабые характеристики старых цветных терминалов.

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

Цветовая поддержка в библиотеке curses немного необычна, в том смысле, что цвет символа не определяется независимо от цвета фона. Вы должны задать цвет переднего плана и фона как пару, именуемую, что неудивительно, цветовой парой.

Прежде чем применять цвета в curses, нужно убедиться в том, что текущий терминал поддерживает цвета, и инициализировать подпрограммы управления цветом библиотеки curses. Для этого примените две функции: has_colors и start_color.

#include

bool has_colors(void);

int start_color(void);

Перейти на страницу:

Похожие книги

Полное руководство по Microsoft Windows XP
Полное руководство по Microsoft Windows XP

В книге известного американского автора описывается среда ОС Windows XP и принципы ее функционирования, приведен сравнительный анализ Windows XP с предшествующими версиями операционной системы Windows. Рассматриваются вопросы применения и модификации нового интерфейса с целью получения прямого доступа ко всем функциям Windows XP обсуждаются варианты подключения к компьютерным сетям. Несколько разделов посвящены работе с реестром и конфигурационными файлами, мультимедийным функциям и разнообразным системным службам, а также методам решения проблем с программным обеспечением и оборудованием. Особое внимание уделено обеспечению безопасности операционной системы.Издание адресовано пользователям и сетевым администраторам, желающим активно применять возможности операционной системы Windows XP (в том числе и недокументированные).

Джон Поль Мюллер , Питер Нортон

ОС и Сети / Книги по IT