русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Библиотека libcurses(3LIB) и другие библиотеки


Дата добавления: 2013-12-23; просмотров: 843; Нарушение авторских прав


Видеотерминалы и терминальные эмуляторы поддерживают довольно богатые функции работы с текстом. Одной из главных функций является изменение положения курсора — точки, в кото­рой будет выводиться текст на экран. Перемещая курсор, пользовательская программа может рисовать на экране почти всё, что можно изобразить при помощи символов ASCII: экранные формы, выпадающие меню, диалоговые окна, даже изображения (так называемый ASCII art). Кроме того, многие терминалы поддерживают расширенные символы, например, так называе­мую «псевдографику». Эти символы позволяю рисовать на экране прямоугольные рамки и та­блицы. Многие видеотерминалы и практически все терминальные эмуляторы также поддержи­вают управление цветом символов и фона.

Доступ ко всем этим функциям осуществляется при помощи кодов расширения (escape sequences) — многобайтовых последовательностей, начинающихся с символа ASCII ESC. Разные модели терминалов поддерживают разные наборы кодов расширения. Существует несколько де-юре и де-факто стандартов этих кодов. Основной стандарт де-юре — это ECMA-48, известный также как ANSI X3.64 и ISO/IEC 6429, соответствующий набор кодов расширения также называется ANSI escape sequences. Наиболее известные стандарты де-факто — это управ­ляющие коды терминалов DEC VT-50, DEC VT-100 и xterm. Набор кодов расширения VT-100 сильно перекрывается со стандартом ANSI и считается одним из первых аппаратных термина­лов, реализовавших этот стандарт. Набор кодов xterm эмулирует как VT-100, так и ANSI, а так­же добавляет ряд функций, характерных для терминального эмулятора — так, код расширения ESC]2;stringBEL (гдe ESC — это ASCII ESC, а BEL — ASCII BEL) заменяет название окна xterm на string. В системном руководстве bash(1) содержится информация о том, как настроить строку приглашения bash, чтобы она содержала эту последовательность и формировала string так, что­бы эта строка, в свою очередь, содержала интересную для пользователя информацию, например, текущий каталог данной терминальной сессии, имя сетевого узла и т. д.



Так или иначе, многие терминалы, реализующие стандартные наборы команд, поддерживают их не полностью или добавляют какие-то свои расширения. Ядро Unix не предоставляет сервисов для работы с кодами расширения терминалов и передает эти коды терминалу «как есть». Для ра­боты с кодами расширения необходимо использовать библиотеки, например, libcurses(3LIB), ко­торая входит в поставку Solaris.

Библиотека libcurses обеспечивает формирование кодов расширения для выполнения заданных функций, например, для перемещения курсора в заданную точку экрана, а также интерпретацию кодов расширения, посылаемых терминалом, и их перевод в независимые от терминала псевдо­символы. Библиотека определяет тип терминала на основе переменной среды TERM, и исполь­зует базу данных, хранящуюся в каталоге /usr/share/lib/terminfo/. В этой базе для каждого из­вестного типа терминала хранится таблица, описывающая поддерживаемые им типы команд и код расширения, соответствующий каждой команда. Libcurses обеспечивает некоторую опти­мизацию: так, если требуется переместить курсор в заданную точку и терминал поддерживает команды для установки позиции курсора, библиотека сгенерирует соответствующую команду. Если же терминал такой команды не поддерживает, библиотека сгенерирует последовательность перемещений курсора на одну позицию вверх, вниз или вбок (такая функция есть почти у всех видеотерминалов).

Почти все «полноэкранные» программы, такие, как текстовые редакторы, веб-браузеры или файловые менеджеры, используют libcurses или какой-то из ее аналогов, чаще всего ncurses. Од­нако в нашем курсе мы изучать эту библиотеку не будем.



<== предыдущая лекция | следующая лекция ==>
Программный интерфейс ввода/вывода | Канонический ввод


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.361 сек.