Что такое код ncurses_mvhline

Содержание

ncurses_mvhline

(PHP 4 >= 4.2.0, PHP 5 = 1.0.0)

ncurses_mvhline — Set new position and draw a horizontal line using an attributed character and max. n characters long

Описание

Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ. Поведение этой функции, ее имя и относящаяся к ней документация могут измениться в последующих версиях PHP без уведомления. Используйте эту функцию на свой страх и риск.

К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.

FPublisher

Web-технологии: База знаний

Документация PHP

ncurses_mvhline

(PHP 4 >= 4.2.0, PHP 5, PECL ncurses:1.0.0)

ncurses_mvhline — Set new position and draw a horizontal line using an attributed character and max. n characters long

Описание

int ncurses_mvhline ( int $y , int $x , int $attrchar , int $n )

Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ. Поведение этой функции, ее имя и относящаяся к ней документация могут измениться в последующих версиях PHP без уведомления. Используйте эту функцию на свой страх и риск.

К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.

Ncurses не работает с кириллицей

Доброго времени суток.

Хочу написать консольную игру под Linux с использованием ncurses.

05.09.2014, 19:28

проблема с ncurses
просто нашёл листинг, в котором «привет мир» пишется через библиотеку ncurses: #include.

Библиотека ncurses.h
Здравствуйте, как можно перевести данную программу под linux? Знаю что есть библиотека ncurses.h но.

Не работает вывод кириллицей
Не знаю как сделать что бы выводилось русскими буквами! Кто знает помогите

Программа не работает с кириллицей
Привет. У меня программа — транслитерация. У меня такой вопрос: почему когда я ввожу сочинение с .

Copy() не работает с кириллицей
Здравствуйте! Такая проблема: команда copy() в Lazarus в разных проектах почему-то работает.

Введение в ncurses

Библиотека ncurses обеспечивает программиста функциями для создания текстового интерфейса пользователя (Text-based User Interface — TUI) не зависящего от типа терминала. В частности, ncurses позволяет создавать окна и управлять их характеристиками, задавать экранные координаты, цвет и другие атрибуты выводимых символов. Она также оптимизирует операции по обновлению содержимого окон. ncurses можно рассматривать как аналог библиотеки crt в Turbo Pascal.

ncurses разрабатывается в рамках проекта GNU и работает на POSIX-совместимых системах. Для Windows существует PDCurses — свободная библиотека, реализующая большинство функций ncurses.

Структура программы

Программа, использующая ncurses, обычно имеет вид:

Вызов initscr инициализирует ncurses. Функция endwin очищает все выделенные для ncurses ресурсы и должна вызываться после любой другой функции этой библиотеки.

Выведем на экран традиционную надпись «Hello, World!» :

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

Ожидание ввода данных getch нужно для того, чтобы надпись не исчезла с экрана.

Экран и окна

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

Для описания окна (экрана) в ncurses существует структура данных WINDOW . Теперь мы можем описать работу функций библиотеки более подробно. Так, при вызове initscr выделяется память под следующие переменные:

Если произойдет ошибка, то initscr вернет ERR . В противном случае возвращается указатель на stdscr .

stdscr — это буфер, в который выводит данные printw и другие подобные функции, а curscr — изображение, реально выводимое на экран. При вызове функции refresh происходит копирование содержимого stdscr в curscr .

Переделаем наш пример так, чтобы надпись выводилась в окно:

В начале программы мы проверяем инициализацию ncurses, а затем создаем окно с помощью функции newwin :

  • nlines — это число строк;
  • ncols — число столбцов окна;
  • y0 и x0 — координаты верхнего левого угла окна.

При этом начало координат (0,0) находится в левом верхнем углу экрана. Переменные LINES и COLS инициализируются при вызове initscr и задают высоту экрана в строках и ширину в столбцах. В нашем случае окно совпадает с экраном. Все указанные переменные имеют тип int .

Функция delwin(win) удаляет окно win .

Создадим теперь окно размером 20 строк на 50 столбцов и выведем надпись в его центре:

Здесь, для наглядности, границы окна показаны с помощью функции box .

Функции ncurses, начинающиеся с w , предназначены для работы с окнами WINDOW , тогда как остальные имеют дело с stdscr . В нашем случае wrefresh(win) обновляет curscr , помещая в него содержимое окна win , то есть делает с win то же самое, что refresh делает с stdscr .

Функции, начинающиеся с mv , сначала переместят курсор в позицию (y,x) , а затем выполняют какое-то действие. Так, в примере, функция mvaddstr перемещает курсор в середину экрана, учитывая при этом длину строки hello , после чего выводит эту строку.

Символы

В следующем примере с помощью функции mvaddch , выводящей заданный пользователем символ, строится график функции y = x^2 для целочисленных x , лежащих в диапазоне [-4;4]:

Для выводимых символов можно устанавливать цвет символа и цвет фона. Ниже приведен фрагмент программы, в которой надпись «Hello, world!» выводится разными цветами символов и фона:

Чтобы символ ‘X’ был выведен с цветами из цветовой пары номер 4, укажем:

Установить атрибуты для окна можно с помощью функции wattron :

которая задает для окна атрибут (или комбинацию атрибутов) attr . После этого любой текст, выводимый в этом окне с помощью waddch или waddstr будет иметь атрибуты attr .

Например, для вывода на экран сообщения в наиболее ярком режиме, наберем:

Предопределенные значения атрибутов приведены в таблице:

Атрибут Описание
A_NORMAL нормальный, переустановка всего остального
A_STANDOUT наиболее яркий режим
A_UNDERLINE подчеркивание
A_REVERSE обратное изображение
A_BLINK мигание
A_DIM тусклый или полуяркий режим
A_BOLD жирный шрифт
A_ALTCHARSET использование альтернативной символьной таблицы
A_INVIS невидимый режим
A_PROTECT режим защиты
A_CHARTEXT маска для действующих символов (chtype)
A_COLOR маска для цвета
COLOR_PAIR(n) установка цветовой пары n
PAIR_NUMBER(a) получение цветовой пары, лежащей в атрибуте a

Определим для окна атрибуты «мерцание» и «жирный шрифт» и будем выводить символы с заданными ранее цветами

[Код полностью](/images/comp/Comp.NcursesTutorial/nccolor.c](/images/comp/Comp.NcursesTutorial/ncattrr.c)

Остальная часть этой программы — такая же как в примере из раздела «Экран и окна».

Перед началом использования цветов необходимо проверить, доступны ли они нам, и убедиться, что количество возможных цветовых пар COLOR_PAIRS не меньше того, которое мы хотим создать.

Для инициализации операций с цветом вызывается функция start_color .

Функция has_colors позволяет узнать, можно ли использовать цвета. Если она возвращает FALSE , то использовать цвета нельзя.

Для создания цветовых пар служит функция init_pair :

foreground — цвет символа; background — цвет фона. pair_number — номер созданной цветовой пары. Каждой паре будет соответствовать номер от 1 до COLOR_PAIRS-1 (0 зарезервирован для стандартного отображения). Для изменения цвета вызывается функция color_set , в которой указывается номер нужной цветовой пары.

Атрибуты

Помимо цветов можно управлять и другими атрибутами символов, такими как тип шрифта (жирный, подчеркнутый), мерцание и т. п. Эти атрибуты представляются целыми числами, каждый бит которых отвечает за определенный видеоэффект.

Есть два способа использования атрибутов: указывать их для каждого выводимого символа или глобально — для всего окна.

Атрибут символа устанавливается при вызове функции waddch(win, ch) или addch(ch) . Для связывания символа с атрибутом и комбинирования атрибутов служит логическое ИЛИ. Например, A_UNDERLINE — предопределенный атрибут, отвечающий за подчеркивание символа. Для того, чтобы вывести в окно win символ ‘X’ с подчеркиванием нужно указать:

Обратите внимание, что атрибуты окна относятся ко всему содержимому окна, в том числе и к рамке. В то же время надпись «Hello, world!» не мерцает, поскольку выводится не в окне, а на экране, на который не распространяется назначение атрибутов с помощью wattron .

Для чтения символа из stdscr используется функция getch :

По умолчанию введенный символ отображается на экране. Запретить отображение можно функцией noecho .

Вызов функции cbreak позволяет getch считывать поступившие от пользователя данные непосредственно после нажатия клавиши. В противном случае полученные данные поступят в обработку только после того, как будет считан символ новой строки. Тогда данные поступают в getch посимвольно, по принципу FIFO, до тех пор пока буфер ввода не опустеет.

По умолчанию, getch ожидает нажатие клавиши. Это полезно, например, когда нужно притормозить выполнение программы. Отменить это умолчание можно с помощью функции nodelay(stdscr, TRUE) . Такое поведение используются для создания циклов в игровых программах, где требуется оперативная реакция пользователя. Например:

Вызов функции keypad(stdstr, TRUE) , позволяет обрабатывать нажатия специальных клавиш, таких как стрелки, Ctrl или Delete, а также их комбинаций. В результате нажатия генерируется целое число, которое можно считать, обработать и выполнить какое-либо действие.

В таблице ниже приведены коды клавиш:

Код клавиши Описание
KEY_DOWN Клавиши со стрелками
KEY_UP
KEY_LEFT
KEY_RIGHT
KEY_HOME Home
KEY_BACKSPACE Backspace
KEY_F(n) Функциональная клавиша с 0 = 63
KEY_DC Delete
KEY_IC Insert
KEY_ENTER Enter

Считывание и обработка нажатия клавиш выполняется так:

Чтение символов из окна выполняется функцией

Чтение может выполняется вместе с перемещением курсора в заданную позицию:

В следующем пример символ ‘X’ перемещается по экрану клавишами со стрелками:

Ссылки

  • Мэтью Н., Стоунс Р. Основы программирования в Linux. — СПб.: БХВ-Петербург, 2009, Глава 6. — с. 253—301. Ncurses Programming Guide by by X. Li. Еще одно краткое руководство.NCURSES Programming HOWTO, Pradeep Padala. Все, что нужно. *Руководство программиста для Linux, перевод А. Паутнова. Справочник на русском.

Читайте также

Комментарии

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

Консольные приложения на Curses

Приложения с текстовым интерфейсом, работающие в терминале, по-прежнему очень популярны и отлично конкурируют с приложениями с графическим интерфейсом. Mutt , irssi , vim , tmux и многие другие являются незаменимыми в повседневной работе. На CPAN есть модули, позволяющие создавать приложения с текстовым интерфейсом, в том числе модуль Curses , являющийся обвязкой к распространённой C-библиотеке ncurses .

История

Для самых ранних ЭВМ в качестве ввода/вывода информации использовались электромеханические телетайпы (Teletype, или сокращённо TTY), которые позволяли вводить текст с клавиатуры и печатать на бумаге символ за символом, полученные от ЭВМ. Позже телетайп был заменён терминалом, где принтер заменил ЭЛТ-экран, на который на фиксированные позиции можно было выводить символы. Самым первым компьютерным терминалом стал DataPoint 3300, который имел экран, позволяющий выводить 25 рядов по 72 символа. Примечательно, что этот терминал был создан на основе обычных TTL-микросхем, а дальнейшие попытки упростить логику и уменьшить размер внутренней начинки терминала стали одной из побуждающих причин разработки микропроцессоров.

Как правило, к одному мейнфрейму под управлением какой-либо из UNIX-систем подключалось множество терминалов. ЭВМ запускала программу командной оболочки, ввод и вывод которой был связан с устройством терминала. Оболочка обрабатывала вводимые команды и выводила результаты их работы на терминал.

Стандартом де-факто на долгие времена стал терминал VT100, созданный компанией DEC в 1978 г. Терминал подключался к вычислительной машине через последовательный интерфейс, позволял выводить 80 или 132 символа в ряд и использовал для кодировки символов стандарт ASCII, а также набор управляющих последовательностей (escape-последовательностей), которые были стандартизованы ANSI в виде стандарта ECMA-48. Escape-последовательности получили своё название от кода клавиши Escape, который предварял набор кодов, определяющих управляющую последовательность. Управляющие последовательности позволяли передвигать курсор, очищать экран, задавать толщину символов или даже делать мигающую строку, на цветных терминалах появилась возможность задавать цвет фона и символа. Например, последовательность кодов ESC[1m задаёт жирный шрифт для последующих выводимых символов, а ESC[0m сбрасывает все установленные атрибуты.

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

С ростом числа терминалов стала возникать проблема с поддержкой всех их видов внутри программ. В 1978 г. Билл Джой, при работе над текстовым радактором vi для Berkeley Unix, выделил код для поддержки разных типов терминалов в отдельную библиотеку под названием termcap, которая стала базой данных описаний существующих терминалов и позволяла реализовывать программы, независимые от типа терминала. Termcap давал возможность программе узнать ширину терминала, правильную последовательность escape-кодов для перемещения курсора и т.д. Вслед за termcap появилась библиотека terminfo, которая являлась улучшенной реализацией termcap с более быстрым доступом к описанию терминала. Именно terminfo получила максимальное распространение в UNIX-системах.

В 1980 г. большую популярность получила игра Rogue, которая дала старт целому жанру rogue-подобных игр, в которой игровой персонаж исследует подземелья, сражается с монстрами и ищет сокровища. Игра для вывода использовала текстовую консоль, монстры обозначались заглавными буквами, коридоры и границы подземелий прорисовывались ASCII-символами | и — . Один из разработчиков, Кен Арнольд, специально для игры создал библиотеку, которая абстрагировалась от работы с конкретным типом терминала, вводила абстрактные понятия окон как матриц символов, забирая на себя все заботы по выводу и обновлению экрана. Библиотека получила название curses («проклятие»), что является каламбуром на словосочетание «cursor optimization». Первоначально curses была основана на termcap. В отличие от termcap, которая фактически являлась текстовой базой данных о свойствах терминалов, curses предоставляла довольно внятное C API.

Позже появились библиотеки pcurses и PDcurses, которые являлись свободными альтернативами BSD curses. В 1991 г. работа над pcurses была продолжена, а в 1993 г. она была переименована в ncurses, что было сокращением от new curses (новая curses), и стала развиваться в рамках проекта GNU. Со временем к ncurses появились обертки для других языков программирования, в том числе и Perl-модуль Curses, который позволяет использовать библиотеку в Perl-программах.

Широкое использование аппаратных терминалов прекратилось после появления видеодисплеев, но тем не менее простота интерфейса и количество существующих для него программ привело к тому, что были созданы эмуляторы терминала — программы, которые эмулировали видеотерминал внутри другой видео системы, например, X Window. Это позволяло продолжать использовать программы, заточенные для работы в терминале, и в других системах. Наиболее популярные графические эмуляторы терминала — xterm, rxvt, а также современные gnome-terminal и konsole.

Использование консольных приложений с текстовым интерфейсом актуально и на сегодняшний день. Такие приложения как top, vim, emacs, mutt, irssi, moc, midnight commander используют многие и просто не представляют себе другой альтернативы. Терминальное приложение может работать поверх последовательных линий и поверх сети на очень низких скоростях, которые недоступны VNC или RDP. А в отличие от веб-интерфейсов, не требуют от клиента наличия гигабайтов оперативной памяти и многоядерных процессоров для того, чтобы удовлетворить системным требованиям современных браузеров.

Устройство терминала

Поскольку исторически терминалы являлись внешними устройствами с посимвольным обменом информации по последовательным линиям, то в UNIX-системах каждому терминалу соответствовал файл устройства вида /dev/tty* . Системные консоли были доступны на /dev/tty[0..NN] , последовательные порты на /dev/ttyS[0..NN] и т.д. (вариация названия зависела от конкретной реализации UNIX-системы). Для каждого такого устройства существует возможность установки скорости обмена, управляющих последовательностей и других настроек. Текущие настройки любого такого устройства можно увидеть с помощью утилиты stty :

Для процессов, которым необходима работа с терминалом, не связанным с каким-то физическим устройством, создаются так называемые псевдотерминалы. В современных UNIX-системах для эмулятора терминала по запросу создаётся файл устройства псевдотерминала в файловой системе devpts, например /dev/pts/0 , c которым ассоциируются стандартные файловые дескрипторы ввода/вывода STDIN , STDOUT и STDERR запускаемых эмулятором дочерних процессов. Эмулятор терминала определяет, каким будет тип терминала, каков будет размер экрана (количество строк и символов в строке) и другие параметры. Для запущеного же в псевдотерминале приложения нет никакого отличия работает ли он в псевдотерминале или на любом другом реальном терминале.

Perl Curses

Perl-модуль Curses является низкоуровневой обвязкой к С-библиотеке ncurses. Из существующей POD-документации практически невозможно понять, как программировать приложения на Curses , поскольку подразумевается, что вы будете использовать документацию по самой C-библиотеке ncurses.

Помимо Curses , на CPAN существуют ещё несколько дистрибутивов, которые позволяют разрабатывать приложения с текстовым интерфейсом. Часть их используют Curses , но имеют более высокоуровневый интерфейс, удобный для разработки. Это такие модули как Curses::UI и Curses::Toolkit . Есть также модули, которые вообще не привязаны к ncurses, например, Tickit . Если вы планируете создание сложных консольных приложений, где будут активно использоваться примитивы окон, диалогов, меню, форм, функции обратного вызова на события, то эти модули, вероятно, наиболее лучший выбор для использования. Если же стоит задача создания тривиального позиционного вывода информации, как, например, в приложении top , то использование Curses может быть целесообразнее.

Библиотека Curses работает с экраном, который представляется в виде прямоугольной матрицы, каждый элемент которой связан с позицией на экране для вывода символа. Начало координат, позиция (0,0), задаёт левый верхний угол экрана. На экране могут быть заданы одно или несколько окон и субокон — прямоугольных областей, для которых определены свои свойства вывода.

Старт с Curses

Несколько функций библиотеки инициализируют работу приложения в текстовом режиме:

initscr — функция инициирует режим curses, создаёт окно по умолчанию, производит очистку экрана и устанавливает текущую позицию курсора в левый верхний угол (0,0);

cbreak и raw — функции отключают буферизованный ввод, и приложение сразу получает информацию о нажатых клавишах, при этом raw также перехватывает и специальные сочетания клавиш, такие как Ctrl+C и Ctrl+Z ;

echo и noecho — включают и отключают режим «эха», т.е. вывод на экран вводимых с клавиатуры символов.

Библиотека Curses имеет ОО-интерфейс, в этом случае вместо инициализации окна по умолчанию через initscr можно использовать вызов new :

Многие функции С-библиотеки ncurses имеют различные вариации одной и той же функции с префиксами w, mv, и wmv. Префикс подразумевает, что появляется какой-либо дополнительный параметр: w — объект окна, mv — координаты y, x позиции курсора. В Perl-библиотеке Curses такие вариации функций были объединены в одну, но с опциональными параметрами окна и координат:

Такие функции получили название унифицированных, и их можно использовать как методы при программировании с использованием ОО-интерфейса. В документации Curses приведён полный список функций и указано, какие из них являются унифицированными, а какие — нет. Во всех последующих примерах будет использоваться ОО-интерфейс, поэтому если используется прямой вызов функций, то это явно подразумевает, что функция не является унифицированной.

Рассмотрим пример приложения, которое выводит сообщение в центр экрана, ожидает ввод пользователя и завершает работу:

Приложение создаёт окно. Метод keypad со значением истины в параметре включает обработку специальных клавиш, таких как F1 , F2 и т.д. Метод getmaxyx позволяет определить максимальные значения координат на экране, т.е. размер текущего терминала. Метод addstr позволяет вывести строку по заданным начальным координатам. Метод refresh отображает всё то, что мы вывели на экран. Метод getch ожидает нажатия клавиши и возвращает введённый символ. Функция endwin завершает режим curses, возвращая предыдущее содержимое экрана.

Окна и субокна

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

Для создания нового окна используется функция newwin :

где $rows , $cols — определяют высоту и ширину окна, а $y , $x — положение окна на экране.

Окна могут перекрываться, при этом в месте пересечения будет отображаться контент того окна, которое было обновлено последним. Если требуется создать окно внутри другого окна, то можно использовать функцию создания субокна subwin или derwin :

Отличие subwin и derwin в том, что в derwin координаты субокна задаются относительно верхнего левого угла родительского окна.

Для удаления окна или субокна используется функция delwin

Окно можно перемещать по экрану с помощью функции mvwin ( mvderwin — для субкона):

Очистить содержимое окна можно с помощью функции clear :

Существует возможность отобразить границы окна с помощью функции box :

где первый параметр определяет символ для вертикальных линий, а второй — горизонтальных. Если используется значение 0 (или undef ), то используются символы границ по умолчанию.

Если требуется задать различные символы для всех сторон и углов окна, то можно воспользоваться функцией border :

Атрибуты

Для каждого выводимого символа может быть установлены атрибуты, в том числе:

  • A_BOLD — режим повышенной яркости;
  • A_NORMAL — нормальный режим яркости;
  • A_DIM — режим пониженной яркости;
  • A_UNDERLINE — подчёркнутый текст;
  • A_REVERSE — инверсный текст;
  • A_BLINK — мерцающий текст;
  • A_INVIS — невидимый текст.

Не все терминалы поддерживают указанные атрибуты (как правило, A_NORMAL совпадает с A_DIM , а некоторые атрибуты могут заменяться цветовым выделением).

Установить конкретный атрибут или набор атрибутов можно функцией attron :

После чего при выводе текста в данное окно начинают применяться указанные атрибуты. Также для установки атрибутов можно использовать функцию attrset , но данная функция сбросит все другие атрибуты, которые были до этого установлены:

Для отключения определённых атрибутов используется функция attroff :

Цвета

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

Для создания палитры из двух цветов (цвет фона и цвет текста) используется функция init_pair :

Установить указанную палитру цветов для вывода можно всё той же функцией attron :

Цветовая палитра ограничена 16 цветами, причём базовых цветов только 8, а дополнительные цвета получаются за счёт использования повышенной яркости ( A_BOLD ):

Существует возможность переопределить любой базовый цвет с помощью функции init_color , которая для заданного базового цвета устанавливает значения интенсивности соответственно красного, зелёного и синего цветов в диапазоне от 0 до 1000:

Не все терминалы поддерживают такую возможность, поэтому перед изменением цветов палитры следует выяснить, присутствует ли такая возможность в текущем терминале, с помощью функции can_change_color .

Обработка ввода

Для получения значения введённого символа используется метод getch . В случае если была активирована обработка специальных клавиш ( F1 , PgUp , PgDown и т.д.) с помощью keypad(1) , то getch возвращает числовой код специальной клавиши, например, значение 338 для PgDown . Если же обработка специальных клавиш отключена, то getch() вернёт лишь первый код из escape-последовательности клавиши.

Если на вводе оказывается символ Unicode, то getch воспринимает лишь первый байт последовательности. Соответственно для обработки Unicode-символа, имеющего внутреннее представление из двух байт, потребуется два последовательных вызова getch :

В Curses определены константы для функциональных клавиш, а также функция KEY_F , возвращающая код F* -клавиш. Названия констант можно найти в документации Curses , все они имеют префикс KEY_ .

В С-библиотеке ncursesw, есть функция get_wch , которая может обрабатывать ввод «широких» символов, но, к сожалению, она не перенесена в Perl-обвязку Curses .

С помощью функции halfdelay можно указать, какое время (в десятых долях секунды) getch должен ожидать ввода символа. Если после истечения таймаута клавиша не нажата, getch вернёт значение ERR (-1).

Для получения строки символов до символа переноса строки (или EOF ) может использоваться функция getstr :

Управление курсором

Получить текущие координаты курсора можно с помощью getyx :

Если вызывается какая-либо функция вывода на экран без указания координат, то вывод производится начиная с текущей позиции курсора. Курсор можно передвигать по экрану с помощью функции move :

Очистка экрана

Существует возможность очистки экрана или его части. Под очисткой понимается заполнение его пробельными символами.

Функция clear очищает окно целиком:

Функции clrtoeol и clrtobot очищают экран, начиная с текущей позиции курсора до конца строки и конца окна соответственно:

Функции deleteln и delch удаляют строку и символ соответственно на текущей позиции курсора:

Функция insdelln вставляет указанное число пустых строк, начиная с текущей позиции курсора (или удаляет, если аргумент отрицательный).

Обработка событий мыши

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

Фиксировать наличие действий, произведённых мышью, можно всё той же функцией getch . Функция getmouse позволяет получить структуру произошедшего события, куда входит информация об идентификаторе устройства мыши (их может быть несколько), координатах мыши в трёх измерениях и непосредственно типе события.

Изменение размера экрана

Поскольку зачастую консольные приложения запускаются внутри графического окна эмулятора терминала, то во время работы приложения может происходить изменение размеров экрана, когда пользователь растягивает окно терминала или наоборот уменьшает. Для этих случаев существует сигнал SIGWINCH , которым эмулятор терминала оповещает запущенные приложения об изменении размера экрана.

Библиотека Curses устанавливает обработчик этого сигнала и пытается адаптировать существующие окна под новый размер экрана. Конечно не всегда это может быть выполнено корректно, поэтому для пользовательского приложения реализована возможность получить оповещение об произошедшем изменении размеров экрана — функция getch возвращает значение KEY_RESIZE :

Не стоит переопределять обработчик сигнала SIGWINCH в коде приложения, поскольку это приведёт к завершению работы приложения после получения сигнала.

Панели, меню и формы

В рамках проекта ncurses существуют дополнительные библиотеки, расширяющие возможности ncurses:

  • Панели. Представляют собой окна, которые могут перекрывать друг друга, при этом можно указать в каком порядке следуют панели, т.е. указывается третье измерение — глубина. Панели можно скрывать, отображать, перемещать наверх в стопке.
  • Меню. Позволяет реализовывать внутри ваших приложений привычные меню с поддержкой вложенности.
  • Формы. Позволяют создавать привычные элементы для ввода данных в виде текстовых полей, которые можно заполнять и редактировать.

Подробное описание этих расширений может стать темой для ещё одной статьи, но вполне возможно, если приложение требует подобного функционала, стоит посмотреть на более мощные альтернативы на CPAN, например, Curses::UI или Tickit .

Использование ncurses в PHP

Как программист и веб-разработчик, вы наверное время от времени пишете программы на php для администрирования сайта из консоли. Средствами языка можно сделать только выводящую/читающую из консоли программу, но с помощью библиотеки ncurses можно создать консольную утилиту с довольно сложным внешним видом, которая будет одинаково выглядеть в разных видах терминалов.

PHP очень гибок и расширяем, с его помощью можно создавать скрипты, которыми можно заменить аналогичные на других языках (Perl/bash-скрипты и прочее). Функциональность ncurses поразительна и действительно выводит возможности работы с терминальным php-приложением на новый уровень.

Предназначение статьи — дать вам «толчок» в сфере написания консольных утилит на php, которые будут использовать возможность этой библиотеки. Я собираюсь показать только самое важное, относящееся к самой библиотеке, и надеюсь дать вам базу для использования ncurses в вашем приложении.

Для кого предназначена статья

Изучаемые темы

Определения

От автора

Документация по функциями ncurses в php сильно ограничена. Некоторые функции использованные в данной статье отсутствуют на официальном сайте. Приложения с ncurses следуют стилю программирования на C, как если бы они были настоящими программами, а не скриптами.

Если у вас есть опыт программирования в C или C++, возможно вы уже знакомы с ncurses и можете представить, каким полезным инструментом может быть ncurses при использовании с интерпретируемым языком, таким как PHP.

Что нужно знать

Вам нужен PHP, скомпилированный с опцией -with-ncurses на unix-подобной системе. Не все терминалы поддерживают цветной вывод, поэтому я не стал включать использование цветов в статью.

Знайте, что вам может понадобиться «сбрасывать» ваш терминал командной reset. Если возникнет какая-либо ошибка и ncurses_end() не будет вызван, то ваш терминал будет работать неправильно.

Порядок выполнения нижеприведённых функций тоже важен. PHP может показать ошибку, если вы попытаетесь обновить окно, которое не имеет соответствующего обработчика.

Начнём с простого приложения прежде чем переходить к сложному.

Простой пример с окнами

Сначала создадим основное окно, которое будет использовать всё доступное пространство. Потом добавим меньшее окно посередине экрана и поместим туда строчку текста. Чтобы получилось вот так:

Начать нужно с вызова ncurses_init(); , чтобы перейти в режим ncurses. Без этого при вызове функций библиотеки PHP будет падать с ошибкой.

Сценарий для вывода двух окон и строки

Попробуйте изменить размеры окна и запустить скрипт ещё раз. Основное окно опять будет занимать ровно всё пространство.

Теперь вы может захотите увидеть какое-нибудь действо при нажатий на клавишу, или вы хотите сделать возможность выхода из приложения при нажатии на какую-либо кнопку. Я предпочитаю использовать для этого esc (27 ascii-код).
Чтобы добавить возможность выхода по нажатию на ESC, добавьте данный код вместо $pressed = ncurses_getch();

Теперь если вы нажмёте esc, программа завершится, в ином случае ascii-код нажатой клавиши будет отображён в маленьком окне.

Можно добавить заголовок, поместив код перед вызовом ncurses_refresh(); :

Вы не ограничены режимом REVERSE (цвет и фон меняются местами), также есть DIM, UNDERLINE и другие.

Можно повысить комфорт, добавив интерактивный выбор из меню.

Создаём меню

Многие программы имеют меню и возможность выбора из него. В прошлом на «чистом» PHP мы могли лишь выводить список вариантов, и давать возможность ввести номер нужного. Такой неудобный выбор одного варианта можно заменить более интуитивно понятным.

Сценарий вывода меню с возможностью выбора

По получившемуся меню можно перемещаться кнопками со стрелками и выходить с помощью esc.

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

Всё вместе

На сайте php.net перечислены 119 функций библиотеки ncurses. В нижеприведённой таблице есть список использованных функций и ссылки на документацию. Замечу, что четыре из перечисленных функций отсутствуют в официальной документации. (прим. переводчика: в настоящий момент все функции содержаться в документации на php.net, правда без подробного описания).

Функция Описание Документация
ncurses_init Инициализирует ncurses www.php.net/manual/en/function.ncurses-init.php
ncurses_newwin Создаёт новое окно www.php.net/manual/en/function.ncurses-newwin.php
ncurses_getmaxyx(resource window, int
return Y, int return X);
Записывает в переменные X и Y максимальных размеров терминала
ncurses_border Рисует рамку вокруг основного окна www.php.net/manual/en/function.ncurses-border.php
ncurses_refresh Обновляет основное окно. Для перерисовки второстепенных окон используйте ncurses_wrefresh www.php.net/manual/en/function.ncurses-refresh.php
ncurses_attron Применяет атрибут к выводимому тексту www.php.net/manual/en/function.ncurses-attron.php
ncurses_attroff Отключает применение атрибута www.php.net/manual/en/function.ncurses-attroff.php
ncurses_mvaddstr Выводит строку www.php.net/manual/en/function.ncurses-mvaddstr.php
ncurses_wborder (resource window, int
left, int right, int top, int bottom, int tl_corner, int tr_corner, int
bl_corner, int br_corner);
Рисует рамку для второстепенного окна.
ncurses_wattron(resource window, int
attribute)
Идентично ncurses_attron, только применяется для окна window
ncurses_mvwaddstr Помещает строку во второстепенное окно www.php.net/manual/en/function.ncurses-mvwaddstr.php
ncurses_wattroff (resource window, int
attribute)
Идентично ncurses_wattroff, только применяется для окна window
ncurses_wrefresh Перерисовывает второстепенное окно. www.php.net/manual/en/function.ncurses-wrefresh.php
ncurses_getch Ждёт ввода с клавиатуры или мыши. www.php.net/manual/en/function.ncurses-getch.php

Улучшенный traceroute

Сейчас создадим действительно полезную программу: traceroute с выводом whois-информации о каждом прыжке.

Этот скрипт запускает traceroute до zend.com (макс 10 прыжков) и показывает результаты в одном окне. По элементам можно переходить с помощью стрелок. При нажатии на enter информация о данном ip будет показана в нижнем окне. По нажатию на esc произойдёт завершение работы программы.

В заключение

Выше изложенный код довольно прост и может послужить базой для вашего приложения с использованием ncurses.

Мы не рассматривали использование мыши, цветов и многих других функций вывода.

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

Форум русскоязычного сообщества Ubuntu

Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Как устнановить библиотеку ncurses? (Прочитано 7810 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Страница сгенерирована за 0.071 секунд. Запросов: 24.

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Что такое SGTIN и SSCC коды?

С октября 2020 года нанесение идентификации на фармпродукцию станет обязательным для ЛП из перечня высокозатратных нозологий. Все субъекты рынка будут обязаны использовать контрольные идентификационные знаки – специальные идентификаторы, которые помогут отслеживать передвижение фармацевтической продукции. Со временем маркировка станет обязательной и для других лекарственных средств.

В целях автоматической идентификации были разработаны SGTIN и SSCC коды. Уникальное кодовое значение позволяет идентифицировать продукцию и отличать один маркированный продукт от другого. Целью внедрения системы маркировки ЛПКИС является усиление эффективности надзорных функций государства, в частности противодействие незаконному производству и обороту ЛП на территории РФ.

Значение SGTIN и SSCC штрих-кода

SGTIN – это уникальная идентификационная кодовая информация вторичной потребительской упаковки. GTIN помогает шифровать только тип продукции, а вот SGTIN позволяет сформировать индивидуальные идентификаторы для каждой единицы фармпродукции. Он представляет собой уникальную комбинацию GTIN и дополнительного серийного номера. Дает возможность отслеживать передвижение каждой единицы товара в отдельности от производителя до конечного покупателя в сфере фармацевтики.

SSCC код – это серийная кодовая информация транспортной упаковки. Благодаря ей происходит идентификация не отдельного товара, а всей отправленной партии. Представленный код используется при сериализации ящиков, паллет, контейнеров. Благодаря ему можно отслеживать движение партии фармацевтической продукции на стадии складирования и транспортировки. По сути, он необходим для автоматизации логистических операций. Состоит код из трех секций. Верхняя включает в себя информацию от производителя, средняя – текстовая расшифровка зашифрованных сведений, нижняя – штрих-коды. SSCC печатается последним.

Важное отличие GTIN от SSCC на лекарствах заключается в том, что последний не несет никакой значимой информации о фармацевтической продукции. Однако благодаря электронным системам учета, обеспечиваемым прослеживаемость передвижения товара, фармпродукция может быть ассоциирована с соответствующими товарными единицами. Это содействует ускорению процесса приемки, сортировки, а также оформления бумаг для последующего отпуска продукции в оборот.

Назначение SGTIN кода

  • Идентификация фармацевтической продукции.
  • Отличие одного промаркированного фармтовара от другого.
  • Создание индивидуальных идентификаторов для ЛП.

Все это необходимо в целях противодействия незаконному обороту фармацевтической продукции на территории РФ и противодействия недобросовестной конкуренции. Внедрение соответствующих кодов помогает автоматизировать процесс стандартизации и унификации процедур учета поставок и распределения ЛС.

Преимущества использования SGTIN кодов

  1. Участникам фармрынка помогает проследить движение каждой единицы товара на протяжении всей цепочки сбыта.
  2. Государственным надзорным органам позволяет отслеживать движение фармацевтической продукции от производственных концернов до конечного потребителя.

Цель внедрения соответствующих кодов – это обеспечение прозрачности движения ЛП и противодействие производству и обороту контрафакта.

Назначение SSCC

  • Помогает маршрутизировать передвижение логистической единицы фармпродукции.
  • Содействует автоматизации транспортно-складских операций.
  • Сокращает время получения сведений о содержимом паллеты.

Изначально SSCC предполагалось применять в первую очередь для транспортных логистических служб. Однако со временем стало ясно, что он необходим и для участников рынка, так как значительно ускоряет товарообработку. К примеру, если фармацевтическая компания получает невскрытый паллет, то отпадает необходимость вскрывать, разбирать его и определять, сколько в нем находится наименований, поскольку в зашифрованном коде есть все данные. По оценке экспертов скорость приемки благодаря данному коду увеличивается в 15-25 раз. Теперь мы знаем, что это такое SSCC код на паллетах и каково его предназначение.

Польза от использования SSCC кодов

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

Среди основных преимуществ можно выделить следующие:

  1. Оптимизация складских процессов.
  2. Увеличение скорости товарообработки фармацевтической продукции.
  3. Помощь в получении быстрой информации о поставщике, грузе и других важных сведений.
  4. Приобретение важных конкурентных преимуществ перед другими участниками.

Генерируя соответствующие коды, холдинговая компания не только облегчает и упрощает складские мероприятия, но и улучшает взаимодействие между собственными различными подразделениями. Теперь инвентаризация одного паллета может осуществляться всего в одно сканирование без необходимости внесения соответствующих данных вручную.

Как генерируются SGTIN коды?

В соответствии с данными регулятора закона SGTIN содержит две группы, а именно сам код GTIN фармпродукции и индивидуальную серийную информацию. Первая состоит из 14-ти символов, а индивидуальный серийный номер из 13-ти символов. Все они используются для кодирования и занесения данных в единую базу. Для того чтобы получить соответствующий код, необходимо успешно пройти регистрацию на ГС1 РУС. После внесения описания товара выдается номер GTIN, затем происходит оформление заказа и оплата услуг Госзнаку за изготовление записи кода, далее Госзнак выдает и фиксирует у себя SGTIN. Все номера данных берутся обычно из базы фискальной службы.

При проверке инспектором фармацевтической компании сотрудник надзорной службы просканирует сначала все коды SGTIN, а затем запросит базу данных из ФНС и сравнит полученные данные. Несоответствие представленных сведений может привести к штрафным санкциям и даже приостановлению деятельности. Поэтому SGTIN необходимо получать через официальный ресурс ГС1 РУС.

Генерация SSCC кода в 1С

Представленный серийный код используется всеми субъектами фармрынка – производителями, перевозчиками, дистрибьюторами. Это позволяет отслеживать груз во время транспортировки. Представленный SSCC код имеет три основных составляющих:

  1. Идентификационный уникальный номер производственного объединения.
  2. Порядковый номер логистического подразделения.
  3. Соответствующее контрольно-цифровое значение.

Следует отметить, что в качестве идентификатора в основном используют тринадцатизначный глобальный номер (GLN) или же девятизначный глобальный префикс (GS1). Порядковый номер логистической единицы присваивает производственное объединение-отправитель. Если при формировании кода соответствующего количества знаков не хватает, используются дополнительные буквы и цифры для порядкового номера.

На сегодняшний день сформировать SSCC код можно как с использованием инструментов 1С, так и с помощью различных бесплатных онлайн-сервисов. Мы рассмотрели, как формируется SSCC код в 1С. Он состоит из префикса (1 цифры), префикса компании GS1 (от 7 до 10 цифр), серийного номера (от 6 до 9 цифр) и контрольной цифры. Для того, чтобы получить корректный штрих-код SSCC, обычно необходимо ввести идентификатор приложения, префикс компании, серийный номер и контрольную цифру. Это позволит получить SSCC код для паллетов.

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

Важные нюансы применения SSCC кода

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

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

Что предоставляет заголовки curses с именем curses.h?

Мне нужен несколько файлов заголовков, а именно curses.h для текстового программирования Скажите, как установить эти файлы заголовков.

2 ответа

Вы можете установить пакет libncurses5-dev через Центр программного обеспечения или:

Кроме того, вы можете установить пакет , нажав здесь .

Если вам нужен файл или пакет и вы не можете найти его, вы можете использовать некоторые инструменты.

1. APT-файл

Сначала установите apt-файл и обновите его.

Вы можете выполнить поиск с помощью файлов или пакетов apt-файла.

2. Используйте packages.ubuntu.com

В правом верхнем углу выберите содержимое пакета , если вы ищете файл, включенный в пакет. Если вам нужен пакет напрямую, просто выполните поиск с его именем, выбрав имена пакетов .

Найти пакет из файла

Изменить: Это работает только для установленного пакета, поэтому не может ответить на вопрос. Лучше сердечный ответ

Чтобы узнать, какой пакет является частью файла, вы можете использовать

Например, dpkg -S curses.h дает мне этот результат:

Найти файлы в пакете

Изменить: Для этого вам необходимо установить пакет.

Чтобы получить список файлов, предоставляемых пакетом, используйте

Например dpkg -L libncurses5-dev дает мне следующий вывод

Это также каталоги.

Найти ТОЛЬКО файлы (не каталоги) в пакете

Чтобы получить только файлы, содержащиеся в пакете:

(Описание: Получите предоставленные файлы и для каждого из них напечатайте его только в том случае, если это файл.)

Дополнительная информация

Вы можете найти эту таблицу . Просто взгляните на первый столбец (действие) и третий столбец (deb), чтобы получить хороший обзор того, что вы можете сделать. (если вам конечно не интересно, тогда посмотрите на другие столбцы.)

LXVII. Функции управления экраном терминала Ncurses

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

ncurses (new curses/новые курсы) это свободная программная эмуляция курсов в System V Rel 4.0 (и выше). Она использует формат terminfo, поддерживает заполнения, цвета, множественную подсветку/highlights, отображение символов формы и ключей функций.

Ncurses имеется для следующих платформ:


Digital Unix (aka OSF1)

Вам необходимы библиотеки и header-файлы ncurses. Загрузите последнюю версию с ftp://ftp.gnu.org/pub/gnu/ncurses/ или с другого зеркала GNU.

Чтобы эти функции работали, вы должны скомпилировали CGI-версию PHP с опцией —with-ncurses .

При ошибке ncurses-функции возвращают NCURSES_ERR.

Таблица 1. Константы цветов ncurses

константа значение
NCURSES_COLOR_BLACK нет цвета (чёрный)
NCURSES_COLOR_WHITE белый
NCURSES_COLOR_RED красный — поддерживается, если терминал находится в режиме color
NCURSES_COLOR_GREEN зелёный — поддерживается, если терминал находится в режиме color
NCURSES_COLOR_YELLOW жёлтый — поддерживается, если терминал находится в режиме color
NCURSES_COLOR_BLUE синий — поддерживается, если терминал находится в режиме color
NCURSES_COLOR_CYAN cyan — поддерживается, если терминал находится в режиме color
NCURSES_COLOR_MAGENTA magenta — поддерживается, если терминал находится в режиме color

Таблица 2. Константы клавиш ncurses

константа значение
NCURSES_KEY_F0 — NCURSES_KEY_F64 функциональные клавиши F1 — F64
NCURSES_KEY_DOWN стрелка вниз
NCURSES_KEY_UP стрелка вверх
NCURSES_KEY_LEFT стрелка влево
NCURSES_KEY_RIGHT стрелка вправо
NCURSES_KEY_HOME клавиша home (upward+left arrow)
NCURSES_KEY_BACKSPACE backspace
NCURSES_KEY_DL удалить строку
NCURSES_KEY_IL вставить строку
NCURSES_KEY_DC удалить символ
NCURSES_KEY_IC вставить символ или войти в режим insert/вставки
NCURSES_KEY_EIC выйти из режима вставки символов
NCURSES_KEY_CLEAR очистить экран
NCURSES_KEY_EOS очистить до конца экрана
NCURSES_KEY_EOL очистить до конца строки
NCURSES_KEY_SF прокрутить вперёд на одну строку
NCURSES_KEY_SR прокрутить назад на одну строку
NCURSES_KEY_NPAGE следующая страница
NCURSES_KEY_PPAGE предыдущая страница
NCURSES_KEY_STAB установить tab/табуляцию
NCURSES_KEY_CTAB очистить tab
NCURSES_KEY_CATAB очистить все tabs
NCURSES_KEY_SRESET мягкий (частичный) reset
NCURSES_KEY_RESET reset (или жёсткий reset)
NCURSES_KEY_PRINT print
NCURSES_KEY_LL lower left/самая нижняя левая
NCURSES_KEY_A1 upper left цифрового блока
NCURSES_KEY_A3 upper right цифрового блока
NCURSES_KEY_B2 center цифрового блока
NCURSES_KEY_C1 lower left цифрового блока
NCURSES_KEY_C3 lower right цифрового блока
NCURSES_KEY_BTAB back tab
NCURSES_KEY_BEG начало
NCURSES_KEY_CANCEL cancel
NCURSES_KEY_CLOSE close
NCURSES_KEY_COMMAND cmd (command/команда)
NCURSES_KEY_COPY copy
NCURSES_KEY_CREATE create
NCURSES_KEY_END end
NCURSES_KEY_EXIT exit
NCURSES_KEY_FIND find
NCURSES_KEY_HELP help
NCURSES_KEY_MARK mark
NCURSES_KEY_MESSAGE message
NCURSES_KEY_MOVE move
NCURSES_KEY_NEXT next
NCURSES_KEY_OPEN open
NCURSES_KEY_OPTIONS options
NCURSES_KEY_PREVIOUS previous
NCURSES_KEY_REDO redo
NCURSES_KEY_REFERENCE ref (reference)
NCURSES_KEY_REFRESH refresh
NCURSES_KEY_REPLACE replace
NCURSES_KEY_RESTART restart
NCURSES_KEY_RESUME resume
NCURSES_KEY_SAVE save
NCURSES_KEY_SBEG shiftet beg (beginning)
NCURSES_KEY_SCANCEL shifted cancel
NCURSES_KEY_SCOMMAND shifted command
NCURSES_KEY_SCOPY shifted copy
NCURSES_KEY_SCREATE shifted create
NCURSES_KEY_SDC shifted delete char
NCURSES_KEY_SDL shifted delete line
NCURSES_KEY_SELECT select
NCURSES_KEY_SEND shifted end
NCURSES_KEY_SEOL shifted end of line
NCURSES_KEY_SEXIT shifted exit
NCURSES_KEY_SFIND shifted find
NCURSES_KEY_SHELP shifted help
NCURSES_KEY_SHOME shifted home
NCURSES_KEY_SIC shifted input
NCURSES_KEY_SLEFT shifted left arrow
NCURSES_KEY_SMESSAGE shifted message
NCURSES_KEY_SMOVE shifted move
NCURSES_KEY_SNEXT shifted next
NCURSES_KEY_SOPTIONS shifted options
NCURSES_KEY_SPREVIOUS shifted previous
NCURSES_KEY_SPRINT shifted print
NCURSES_KEY_SREDO shifted redo
NCURSES_KEY_SREPLACE shifted replace
NCURSES_KEY_SRIGHT shifted right arrow
NCURSES_KEY_SRSUME shifted resume
NCURSES_KEY_SSAVE shifted save
NCURSES_KEY_SSUSPEND shifted suspend
NCURSES_KEY_UNDO undo
NCURSES_KEY_MOUSE mouse event has occured
NCURSES_KEY_MAX maximum key value

Таблица 3. mouse-константы

константа значение
NCURSES_BUTTON1_RELEASED — NCURSES_BUTTON4_RELEASED кнопка (1-4) отпущена
NCURSES_BUTTON1_PRESSED — NCURSES_BUTTON4_PRESSED кнопка (1-4) нажата
NCURSES_BUTTON1_CLICKED — NCURSES_BUTTON4_CLICKED кнопка (1-4) щёлкнула
NCURSES_BUTTON1_DOUBLE_CLICKED — NCURSES_BUTTON4_DOUBLE_CLICKED кнопка (1-4) дважды щёлкнула
NCURSES_BUTTON1_TRIPLE_CLICKED — NCURSES_BUTTON4_TRIPLE_CLICKED кнопка (1-4) трижды щёлкнула
NCURSES_BUTTON_CTRL ctrl нажата при щелчке
NCURSES_BUTTON_SHIFT shift нажата при щелчке
NCURSES_BUTTON_ALT alt нажата при щелчке
NCURSES_ALL_MOUSE_EVENTS сообщает обо всех событиях мыши
NCURSES_REPORT_MOUSE_POSITION сообщает о позиции мыши
Содержание ncurses_addch — добавляет символ в текущей позиции и продвигает курсор вперёд ncurses_addchnstr — добавляет атрибуированную строку со специфицированной длиной в текущей позиции ncurses_addchstr — добавляет атрибуированную строку в текущей позиции ncurses_addnstr — добавляет строку со специфицированной длиной в текущей позиции ncurses_addstr — выводит текст в текущей позиции ncurses_assume_default_colors — определяет цвет по умолчанию для цвета 0 ncurses_attroff — отключает данный атрибут ncurses_attron — включает данный атрибут ncurses_attrset — устанавливает данные атрибуты ncurses_baudrate — возвращает baudrate терминала ncurses_beep — разрешает терминалу подать сигнал ncurses_bkgd — устанавливает свойство background экрана терминала ncurses_bkgdset — управляет фоном экрана ncurses_border — рисует рамку вокруг экрана с использованием атрибуированных символов ncurses_can_change_color — проверяет, можем ли мы изменить цвета терминала ncurses_cbreak — отключает буферизацию ввода ncurses_clear — очищает экран ncurses_clrtobot — очищает экран от текущей позиции до низа ncurses_clrtoeol — очищает экран от текущей позиции до конца строчки ncurses_color_set — устанавливает цвета переднего плана и фона ncurses_curs_set — устанавливает статус курсора ncurses_def_prog_mode — сохраняет режим терминала (программы) ncurses_def_shell_mode — сохраняет режим терминала (оболочки/shell) ncurses_define_key — определяет keycode/код клавиши ncurses_delay_output — задерживает вывод на терминал, используя заполняющие символы ncurses_delch — удаляет символ в текущей позиции, остаток строки сдвигается влево ncurses_deleteln — удаляет строчку в текущей позиции, остаток экрана сдвигается вверх ncurses_delwin — удаляет ncurses-окно ncurses_doupdate — записывает все подготовленные обновления в терминал ncurses_echo — активирует отображение ввода с клавиатуры ncurses_echochar — вывод одного символа, включая обновление ncurses_end — останавливает использование ncurses, очищает экран ncurses_erase — стирает экран терминала ncurses_erasechar — возвращает текущий удалённый символ ncurses_filter — ncurses_flash — вспышка на экране терминала (визуальный сигнал) ncurses_flushinp — очищает буфер клавиатурного ввода ncurses_getch — читает символ с клавиатуры ncurses_getmouse — читает событие от мыши ncurses_halfdelay — переводит терминал в режим halfdelay ncurses_has_colors — проверяет, имеет ли терминал цвета ncurses_has_ic — проверяет возможность вставки/удаления ncurses_has_il — проверяет возможность вставки/удаления ncurses_has_key — проверяет существование функциональной клавиши на клавиатуре терминала ncurses_hline — рисует горизонтальную линию в текущей позиции, используя атрибуированный символ и max. n длину символов ncurses_inch — получает символ и атрибут в текущей позиции ncurses_init_color — устанавливает новое RGB-значение цвета ncurses_init_pair — размещает цветовую пару ncurses_init — инициализирует ncurses ncurses_insch — вставляет символ, перемещая остаток строки, включая символ в текущей позиции ncurses_insdelln — вставляет строчки перед текущей строчкой, прокручивая вниз (отрицательные числа удаляют и прокручивают вверх) ncurses_insertln — вставляет строчку, перемещая остаток экрана вниз ncurses_insstr — вставляет string в текущей позиции, перемещая остаток строчки вправо ncurses_instr — читает строчку с экрана терминала ncurses_isendwin — Ncurses находится в режиме endwin, может выполняться нормальный вывод экрана ncurses_keyok — включает или отключает keycode/код клавиши ncurses_killchar — возвращает kill-символ текущей строки ncurses_longname — возвращает описание терминала ncurses_mouseinterval — устанавливает timeout для щелчка кнопки мыши ncurses_mousemask — устанавливает опции мыши ncurses_move — переводит позицию вывода ncurses_mvaddch — переводит текущую позицию и добавляет символ ncurses_mvaddchnstr — переводит позицию и add attrributed string with specified length ncurses_mvaddchstr — переводит позицию и добавляет атрибуированную строку ncurses_mvaddnstr — переводит позицию и добавляет строку со специфицированной длиной ncurses_mvaddstr — переводит позицию и добавляет строку ncurses_mvcur — переводит курсор немедленно ncurses_mvdelch — переводит позицию и удаляет символ, сдвигая остаток строчки влево ncurses_mvgetch — переводит позицию и получает символ в новой позиции ncurses_mvhline — устанавливает новую позицию рисует горизонтальную линию, используя трибуированный символ и max. n длину символов ncurses_mvinch — переводит позицию и получает атрибуированный символ в новой позиции ncurses_mvvline — устанавливает новую позицию и рисует вертикальную линию, используя атрибуированный символ и max. n длину символов ncurses_mvwaddstr — добавляет строку в новой позиции в окне ncurses_napms — Sleep ncurses_newwin — создаёт новое окно ncurses_nl — транслирует newline и carriage return / line feed ncurses_nocbreak — переключает терминал в режим cooked ncurses_noecho — отключает отображение ввода с клавиатуры ncurses_nonl — не транслировать newline и carriage return / line feed ncurses_noqiflush — не зачищает сигнальные символы ncurses_noraw — отключает терминал от режима raw ncurses_putp — ncurses_qiflush — зачищает сигнальные символы ncurses_raw — переключает терминал в режим raw ncurses_refresh — обновляет экран ncurses_resetty — восстанавливает сохранённый статус терминала ncurses_savetty — сохраняет статус терминала ncurses_scr_dump — выполняет дамп содержимого экрана в файл ncurses_scr_init — инициализирует экран из дампа файла ncurses_scr_restore — восстанавливает экран из дампа файла ncurses_scr_set — наследует экран из дампа файла ncurses_scrl — прокручивает содержимое окна верх или вниз без изменения текущей позиции ncurses_slk_attr — возвращает ключевой атрибут текущей soft-метки/label ncurses_slk_attroff — ncurses_slk_attron — ncurses_slk_attrset — ncurses_slk_clear — очищает soft-метки с экрана ncurses_slk_color — устанавливает цвет для ключей soft-меток ncurses_slk_init — инициализирует soft label key-функции ncurses_slk_noutrefresh — копирует soft label keys в виртуальный экран ncurses_slk_refresh — копирует soft label keys в экран ncurses_slk_restore — восстанавливает soft label keys ncurses_slk_touch — форсирует вывод при выполнении ncurses_slk_noutrefresh ncurses_standend — останавливает использование атрибута ‘standout’ ncurses_standout — стартует использование атрибута ‘standout’ ncurses_start_color — стартует использование цветов ncurses_termattrs — возвращает логическое ИЛИ всех флагов атрибутов, поддерживаемых терминалом ncurses_termname — возвращает (short)-имя терминала ncurses_timeout — устанавливает timeout для специальных последовательностей клавиш ncurses_typeahead — специфицирует другой filedescriptor для проверки typeahead ncurses_ungetch — помещает символ обратно в поток ввода ncurses_ungetmouse — проталкивает событие от мыши в очередь/queue ncurses_use_default_colors — присваивает цвета по умолчанию color id -1 ncurses_use_env — управляет использованием информации окружения о размере терминала ncurses_use_extended_names — управляет использованием расширенных имён в описаниях terminfo ncurses_vidattr — ncurses_vline — рисует вертикальную линию в текущей позиции, используя атрибуированный символ и max. n длину символов ncurses_wrefresh — обновляет окно экрана терминала

Назад Оглавление Вперёд
syslog Вверх ncurses_addch

© 2006-2012 Веб-мастер Борисов Виктор Александрович

Илон Маск рекомендует:  Что такое код hw_api_attribute >values
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL