CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Руководство программиста для Linux
Опции ввода
8.8.1. Опции ввода
* int keypad(win, bf)
TRUE активизирует keypad на клавиатуре во время ожидания ввода. Для функциональных клавиш и стрелок keypad ncurses вернет код клавиши, определенный как KEY_* в ncurses.h. Это очень удобно для клавиатуры ПК, потому что вы имеете возможность и пользоваться цифровым блоком, и перемещать курсор.
* int meta(win, bf)
Если TRUE, то коды клавиш, возвращаемые getch(), 8-битовочистые (верхний бит не учитывается).
* int cbreak() int nocbreak() int crmode() int nocrmode() cbreak() и nocbreak()
устанавливают или снимают режим терминала CBREAK. Когда CBREAK установлен, читаемый ввод немедленно доступен программе, когда нет - будет буферизован до получения целой строки. (Замечание: crmode() и nocrmode() существуют для повышения совместимости, их использовать не нужно.)
* int raw() int noraw()
Устанавливает или снимает режим RAW. RAW - это то же, что и CBREAK, только без обработки специальных символов.
* int echo() int noecho()
Вызывайте echo() для отображения ввода пользователя и noecho(), чтобы его скрыть. * int halfdelay(t)
То же, что cbreak() с паузой в t секунд.
* int nodelay(win, bf)
Терминал устанавливается в неблокируемый режим. getch() вернет ERR, если ввод не готов. Если bf есть FALSE, то getch() будет ждать нажатия клавиши.
* int timeout(t) int wtimeout(win, t)
Эти функции рекомендуется использовать вместо halfdelay(t) и nodelay(win, bf). Результат getch() зависит от значения t. При положительном t считывание блокируется на t милисекунд; при t, равном нулю, блокировки не происходит; при отрицательном t программа блокируется, пока ввод не станет возможен.
* int notimeout(win, bf)
Если bf равен TRUE, getch() будет использовать односекундный таймер для интерпретации вводимой последовательности, начинающейся с ESCAPE и т.п.
* int typeahead(fd)
При fd, равном -1, никакой проверки печати производиться не будет, при других значениях ncurses будет использовать для таких проверок файловый дескриптор fd вместо stdin.
* int intrflush(win, bf)
При активизации истинным bf нажатая клавиша прерывания (типа quit, break) очистит очередь драйвера tty.
* void noqiflush() void qiflush()(Пока не реализованы.)
8.8.2. Атрибуты терминала
* int baudrate()
Возвращает скорость терминала в bps (бит в секунду).
* char erasechar()
Возвращает текущий символ erase.
* char killchar()
Возвращает текущий символ kill.
* int has_ic()
int has_il()
has_ic()
возвращает TRUE, если терминал может вставлять/удалять символ, has_il() возвращает TRUE, если терминал может ставлять/удалять линию. В противном случае возвращается ERR. (Пока не реализованы.)
* char *longname()
Указатель предоставляет доступ к описанию текущего терминала.
* chtype termattrs()
(Пока не реализована.)
* char *termname
Возвращает содержимое TERM из пользовательской среды. (Пока не реализована.)
8.8.3. Использование опций
Поговорим об использовании опций окна и режимов терминала.
Прежде всего, под Linux-ом вам следует подключить keypad. Это позволит пользоваться цифровым блоком и клавишами перемещения курсора на клавиатуре ПК.
keypad(stdscr,TRUE);
Теперь имеется 2 основных типа ввода:
- программа ожидает нажатия клавиши, чтобы вызвать соответствующую функцию (например, что-нибудь вроде "press 'q' for quit" и ждет q);
- ожидается, что пользователь напечатает строку символов в маску на экране (например, каталог или адрес в базе данных).
Для первого случая мы установим следующие опции и режимы, и цикл while сработает корректно:
char c; noecho(); timeout(-1); nonl(); cbreak(); keypad(stdscr,TRUE); while(c=getch()){ switch(c){ case 'q': your_quit_function(); default: break; } }
Эта программа повиснет до нажатия клавиши. Если нажата q, мы вызываем your_quit_function(), иначе - ждем другого ввода.
Выражение switch может быть расширено по нашему желанию. Макросы KEY_* служат для учета специальных клавиш. Например,
KEY_UP KEY_RIGHT KEY_A1 KEY_B2 KEY_C1 KEY_DOWN KEY_LEFT KEY_A3 KEY_C3
для клавиш перемещения курсора.
Для просмотра файла цикл может выглядеть примерно так:
int loop=TRUE; char c; enum{UP,DOWN,RIGHT,LEFT}; noecho(); timeout(-1); nonl(); cbreak(); keypad(stdscr,TRUE); while(loop==TRUE){ c=getch(); switch(c){ case KEY_UP: case 'u': case 'U': scroll_s(UP); break; case KEY_DOWN: case 'd': case 'D': scroll_s(DOWN); break; case KEY_LEFT: case 'l': case 'L': scroll_s(LEFT); break; case KEY_RIGHT: case 'r': case 'R': scroll_s(RIGHT); break; case 'q': case 'Q': loop=FALSE; default: break; } }
Для второго случая, нам достаточно установить echo(), и символы, набираемые пользователем, будут напечатаны на экране. Место печати задается функциями move(...) или wmove(...).
Или вы можете открыть окно с маской (выделяемой другими цветами) и попросить пользователя ввести строку:
WINDOW *maskwin; WINDOW *mainwin; char *ptr=(char *)malloc(255); ... mainwin=newwin(3,37,9,21); maskwin=newwin(1,21,10,35); ... werase(mainwin); werase(maskwin); ... box(mainwin,0,0) mvwaddstr(mainwin,1,2,"Inputstring:"); ... wnoutrefresh(mainwin); wnoutrefresh(maskwin); doupdate(); ... mvwgetstr(maskwin,0,0,ptr); ... delwin(maskwin); delwin(mainwin); endwin(); free(ptr);
Более подробно см. input.c в директории примеров.
8.9. Очистка окна и линий
* int erase() int werase(win)
werase(...) и erase() скопируют пробелы на каждую позицию окна win или stdscr. Например, если вы установили атрибуты цвета в окне и вызвали werase(), окно должно быть окрашено. Однако автор имел некоторые проблемы с COLOR_PAIRS, если определял другие атрибуты, а затем черный по белому, так он писал его собственную стирающую функцию (это низкоуровневый доступ к структуре WINDOW):
void NewClear(WINDOW *win) { int y,x; for ( y = 0 ; y <= win -> _maxy ; y++ ) for ( x = 0 ; x <= win -> _maxx ; x++ ) (chtype *) win-> _line[y][x] = ' '|win-> _attrs; win -> _curx = win -> _cury = 0; touchwin(win); }
Проблема состоит в том, что ncurses иногда делает совершенно бесполезными атрибуты окна, когда заполняет экран пробелами. Если в lib_clrtoeol.c BLANK определен как
#define BLANK ' '|A_NORMAL,
то другие атрибуты окна теряются, пока идет стирание строки.
* int clear() int wclear(win)
То же, что erase(), но будет также установлен clearok() (экран будет очищен с последующим обновлением).
* int clrtobot() int wclrtobot(win)
Очистка текущей линии курсора (начинается с символа справа от курсора) и строки под курсором.
* int clrtoeol() int wclrtoeol(win)
Очистка текущей строки начиная справа от курсора и до конца строки.
8.10. Обновление терминала
Как написано в обзоре, окна ncurses есть отображения в памяти. Это означает, что любое изменение окна не отражается на физическом экране до тех пор, пока не будет произведено обновление. Это оптимизирует вывод на экран, поскольку вы получаете возможность совершать множество действий, а затем лишь единожды вызвать обновление, чтобы напечатать его на экране. В противном случае на терминале отражалось бы каждое изменение, что ухудшало бы исполнение ваших программ.
* int refresh() int wrefresh(win)
refresh() копирует stdscr на терминал, а wrefresh(win) копирует изображение окна в stdscr и затем делает curscr подобным stdscr.
* int wnoutrefresh(win) int dourdate()
wnoutrefresh(win) копирует окно win только в stdscr. Это означает, что вывода на терминал не производится, но виртуальный экран stdscr на самом деле выглядит именно так, как того хочет программист. doupdate() произведет вывод на терминал. Программа может менять различные окна, вызывая wnoutrefresh(win) для каждого окна, а затем достаточно один раз вызвать doupdate(), чтобы обновить физический экран.
Допустим, мы имеем следующую программу с двумя окнами. Мы изменяем оба окна, меняя несколько линий текста. Напишем cgangewin(win) с wrefresh(win).
main() changewin(WINDOW *win) { { WINDOW *win1,*win2; ... /* здесь мы изменяем */ ... ... /* строки */ changewin(win1); wrefresh(win); changewin(win2); return; ... } }
Тогда ncurses обновит терминал дважды, а это замедлит исполнение нашей программы. Благодаря doupdate() мы изменим changewin(win) и нашу основную функцию, добившись этим лучшего исполнения.
main() changewin(WINDOW *win) { { WINDOW *win1,*win2; ... /* здесь мы изменяем */ ... ... /* строки */ changewin(win1); wnoutrefresh(win); changewin(win2); return; doupdate(); } ... } * int redrawwin(win) int wredrawln(win, bline, nlines)
Используйте эти функции, когда перед записью чего-нибудь нового требуется выбросить несколько линий или целый экран (может быть линии попорчены или что-либо вроде этого).
* int touchwin(win) int touchline(win, start, count) int wtouchln(win, y, n, changed) int untouchwin(win)
Говорит ncurses-у, что были произведены манипуляции с целым окном или линиями от start до start+count. Например, когда у вас есть несколько окон, перекрывающих друг друга (как в примере type.c), изменение одного из них никак не повлияет на изображение других.
wtouchln(...) захватит n линий, начинающихся в y. Если change соответствует TRUE, то линии захватываются, в противном случае - нет (изменяются или не изменяются).
untouchwin(win) пометит окно win как неизмененное со времени последнего вызова refresh().
* int is_linetouched(win, line) int is_wintouched(win)
При помощи этих функций вы можете проверить, были ли линия line или окно win захвачены со времени последнего вызова refresh().
Таблица 8.4: Ncurses - атрибуты
Определение | Атрибут ----------------|------------------------------------------------ A_ATTRIBUTES | маска для атрибутов (chtype) 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
8.11. Видеоатрибуты и цвет
Атрибуты - это специальные возможности терминала, применяемые во время печати символов на экран. Символы могут быть напечататы жирно, могут быть подчеркнуты, могут мигать и т.д. В ncurses вы имеете возможность включать или отключать атрибуты для достижения наилучшего внешнего вида вывода. Возможные атрибуты перечислены в нижеследующей таблице.
Определение | Цвет --------------|----------- COLOR_BLACK | черный COLOR_RED | красный COLOR_GREEN | зеленый COLOR_YELLOW | желтый COLOR_BLUE | синий COLOR_MAGENTA | пурпурный COLOR_CYAN | голубой COLOR_WHITE | белый
Ncurses определяет 8 цветов, которыми вы можете пользоваться на терминале с цветовой поддержкой. Сначала проинициализируйте цветовые структуры данных посредством start_color(), затем проверьте возможности терминала при помощи has_colors(). start_color() будет инициализировать COLORS, наибольшее количество цветов, поддерживаемых терминалом, и COLOR_PAIR, максимальное число цветовых пар, которые вы можете определить.
Атрибуты могут быть совмещены '|' (OR), поэтому вы можете получить четкий мерцающий вывод при помощи A_BOLD|A_BLINK
Если вы установите окно с атрибутом attr, все символы, напечатанные в этом окне, приобретут это свойство и будут его сохранять до изменения вами атрибута. Это не будет утеряно при прокрутке или движении окна и т.п.
Будьте осторожны с цветами, если вы пишете программы для ncurses и BSD curses, так как BSD curses не имеет цветовой поддержки. (Точно так же не имеют цветовой поддержки старые версии SYS V). Поэтому, если вы компилируете для обеих библиотек, вам придется использовать операции #ifdef.
* int attroff(attr) int wattroff(win, attr) int attron(attr) int wattron(win, attr)
Включают или отключают указанный атрибут attr, не влияя на другие атрибуты в окне (stdscr или win).
* int attrset(attr) int wattrset(win, attr)
Установка атрибута в attr в stdscr или win.
* int standout() int standend() int wstandout(win) int wstandend(win)
Включают атрибут наиболее яркого режима для окна (stdscr или win).
* chtype getattrs(win)
Выдает текущие атрибуты для окна win.
* bool has_colors()
Возвращает TRUE, если терминал имеет цвета. Перед тем, как использовать цвета, проверьте терминал has_colors()-ом, а перед этим проинициализируйте цвета start_color()-ом.
* bool can_change_color()
TRUE, если терминал может переопределять цвета.
* int start_color()
Цветовая инициализация. Эта функция должна быть вызвана перед использованием цветов!
* int init_pair(pair, fg, bg)
Если вы используете цвета в атрибутах окна, то сначала вы должны определить цветовую пару через init_pair(...). fg и bg - это цвета переднего и заднего плана, спаренные в pair. pair принимает значения от 1 до COLORPAIRS -1. (0 - не ошибка, но зарезервирован для черного и белого.) Определенную однажды pair можно использовать как атрибут. К примеру, вам нужны красные символы на синем экране:
init_pair(1,COLOR_RED,COLOR_BLUE);
Теперь вызовем wattr(...) для установки новой пары цветов для win:
wattr(win,COLOR_PAIR(1));
Или соединим цветовые пары с другими атрибутами, например:
wattr(win,A_BOLD|COLOR_PAIR(1)); wattr(win1,A_STANDOUT|COLOR_PAIR(1));
Первый вызов установит цветовую пару и атрибут BOLD, второй - подключит режим STANDOUT, и вы получите светлый красный на синем экране.
* int pair_content(pair, f, b)
Вернет цвета переднего и заднего плана из pair.
* int init_color(color, r, g, b)
Изменит цветовые компоненты r, g и b для color. r, g и b находятся в диапазоне от 1 до COLORS -1.
* int color_content(color, r, g, b)
Получение компонентов r, g и b для color.
Как комбинировать атрибуты и цвета? Некоторые терминалы, как консоли в Linux-е, имеют цвета, а некоторые - нет (xterm, vs100 и т.д.). Следующий код решит эту проблему: void CheckColor(WINDOW *win1, WINDOW *win2)
{ start_color(); if (has_colors()){ /* Хорошо, у нас есть цвета, определяем цветовые пары для * цветов переднего и заднего плана */ init_pair(1,COLOR_BLUE,COLOR_WHITE); init_pair(2,COLOR_WHITE,COLOR_RED); /* теперь используем уже определенные цветовые пары для окон */ wattrset(win1,COLOR_PAIR(2)); wattrset(win2,COLOR_PAIR(1)); } else{ /* Ох, нет цвета (может быть vt100 или xterm). Ладно, будем * пользоваться вместо этого черно-белыми атрибутами. */ wattrset(win1,A_REVERSE); wattrset(win2,A_BOLD); } return; }
Прежде всего, функция CheckColor проинициализирует цвета при помощи start_color(). Затем has_colors() вернет TRUE, если текущий терминал имеет цвета. После этого вызывается ini_tpair(...) для соединения цветов переднего и заднего плана, и wattrset(...) для установки этих цветов в данном окне. Впрочем, чтобы установить атрибуты для черно-белого терминала, мы можем использовать только wattrset(...).
Чтобы получить цвета на xterm, лучший способ, найденный автором, - это использовать ansi_xterm с надерганными элементами terminfo из Midnight Commander-а. Просто добудьте исходники ansi_xterm и Midnight Commander-а (mc-x.x.tar.gz). Потом скомпилируйте ansi_xterm и используйте tic с xterm.ti и vt100.ti из архива mc-x.x.tar.gz. Запустите ansi_xterm и протестируйте его.
8.12. Координаты курсора и окна
* int move(y, x) int wmove(win, y, x)
Движение курсора stdscr или win. Для функций ввода/вывода определяются дополнительные макросы, передвигающие курсор перед вызовом данных функций.
* int curs_set(bf)
Переключает видимость/невидимость курсора, если терминал имеет такую возможность.
* void getyx(win, y, x)
Возвращает координаты курсора. Замечание: это макрос.
* void getparyx(win, y, x)
Если win - подокно, getparyx(...) сохранит координаты окна относительно родительского окна. В противном случае y и x установятся в -1. (Пока не реализована.)
* void getbegyx(win, y, x) void getmaxyx(win, y, x) int getmaxx(win) int getmaxy(win)
Сохранит начальные и размерные координаты для win в y и x.
* int getsyx(int y, int x) int setsyx(int y, int x)
Сохранит виртуальный курсор экрана в y и x или установит этот курсор. При y и x, равных -1, getsyx(...) установит leaveok.
8.13. Прокрутка
* int scrollok(win, bf)
Если TRUE, текст в окне win будет прокручен вверх на одну линию, когда курсор находится в правом нижнем углу и напечатан символ.Если FALSE, то курсор остается на прежней позиции.
При включенном scrollok(...) содержимое окна может быть прокручено при помощи нижеследующих функций. (Замечание: оно будет прокручено и в случае, если вы напечатаете новую линию, находясь на последней линии окна, поэтому будьте осторожны со scrollok(...).)
* int scroll(win)
Эта функция прокрутит окно (и строки в структуре данных) на одну линию вверх.
* int scrl(n) int wscrl(win, n)
Эти функции прокрутят окно stdscr или win вверх или вниз, в зависимости от целого n. Если n положительное, произойдет прокрутка окна на n линий вверх, если n отрицательное - на n линий вниз.
* int setscrreg(t, b) int wsetscrreg(win, t, b)
Устанавливают программную область прокрутки.
Следующий код объяснит, как прокручивать текст на экране. Смотри также type.c в директории примеров.
Мы хотим прокрутить текст в окне, имеющем 18 линий и 66 колонок. S[] - это массив символов с текстом. Max_s является номером последней линии в S[]. Clear_line напечатает пробелы с текущей позиции курсора до конца линии, используя текущие атрибуты окна (не A_NORMAL, как это делает clrtoeol). Beg - это последняя линия из s[], изображенная на данный момент на экране. Scroll - это перечень того, что должна сделать функция, показать NEXT или PREVious (следующую или предыдущую) линию текста.
enum{PREV,NEXT}; void scroll_s(WINDOW *win, int scroll) { /* пробуем, должны ли мы прокрутить вниз и если что-нибудь есть, * то прокрутить */ if((scroll==NEXT)&&(beg<=(max_s-18))){ /* одна строка вниз */ beg++; /* задаем права на прокрутку */ scrollok(win, TRUE); /* прокручиваем */ wscrl(win, +1); /* отклоняем права на прокрутку */ scrollok(win, FALSE); /* устанавливаем новую строку в последней линии */ mvwaddnstr(win,17,0,s[beg+17],66); /* очищаем последнюю строку от последнего символа до конца * строки. Иначе атрибуты не будут учтены. */ clear_line(66,win); } else if((scroll==PREV)&&(beg>0)){ beg--; scrollok(win, TRUE); wscrl(win, -1); scrollok(win, FALSE); mvwaddnstr(win,0,0,s[beg],66); clear_line(66,win); } wrefresh(win); return; }
8.14. Заполнители
- WINDOW *newpad(nlines, ncols)
- WINDOW *subpad(orig, nlines, ncols, begy, begx)
- int prefresh(pad, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)
- int pnoutrefresh(pad, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)
- int pechochar(pad, ch)
8.15. Мягкие метки (Soft-labels)
- int slk_init(int fmt)
- int slk_set(int labnum, char *label, int fmt)
- int slk_refresh()
- int slk_noutrefresh()
- char *slk_label(int labnum)
- int slk_clear()
- int slk_restore()
- int slk_touch()
- int slk_attron(chtype attr)
- int slk_attrset(chtype attr)
- int slk_attroff(chtype attr)
Эти функции соответствуют функциям attron(attr), attrset(attr) и attroff(attr). Пока не реализованы.
8.16. Разное
- int beep()
- int flash()
- char *unctrl(chtype c)
- char *keyname(int c)
- int filter() (Пока не реализована.)
- void use_env(bf)
- int putwin(WINDOW *win, FILE *filep) (Пока не реализована.)
- WINDOW *getwin(FILE *filep) (Пока не реализована.)
- int delay_output(int ms)
- int flushinp
8.17. Низкоуровневый доступ
- int def_prog_mode()
- int def_shell_mode()
- int reset_prog_mode()
- int reset_shell_mode()
- int resetty()
- int savetty()
- int ripoffline(int line, int (*init)(WINDOW *, int))
- int napms(int ms)
8.18. Дамп экрана
- int scr_dump(char *filename) (Пока не реализована.)
- int scr_restore(char *filename) (Пока не реализована.)
- int scr_init(char *filename) (Пока не реализована.)
- int scr_set(char *filename) (Пока не реализована.)
8.19. Эмуляция termcap
- int tgetent(char *bp, char *name)
- int tgetflag(char id[2])
- int tgetnum(char id[2])
- char tgetstr(char id[2], char **area)
- char tgoto(char *cap, int col, int row)
- int tputs(char *str, int affcnt, int (*putc)())
8.20. Функции terminfo
- int setupterm(char *term, int fildes, int *errret)
- int setterm(char *term)
- int set_curterm(TERMINAL *nterm)
- int del_curterm(TERMINAL *oterm)
- int restartterm(char *term, int fildes, int *errret) (Пока не реализована.)
- char *tparm(char *str, p1, p2, p3, p4, p5, p6, p7, p8, p9)
- p1 - p9 long int.
- int truts(char *str, int affcnt, int (*putc)(char))
- int putp(char *str)
- int vidputs(chtype attr, int (*putc)(char))
- int vidsttr(chtype attr)
- int mvcur(int oldrow, int oldcol, int newrow, int newcol)
- int tigetflag(char *capname)
- int tigetnum(char *capname)
- int tigetstr(char *capname)
8.21. Функции отладки
- void _init_trace()
- void _tracef(char *, ...)
- char *_traceattr(mode)
- void traceon()
- void traceoff()
8.22. Свойства (capabilities) terminfo
8.22.1. Логические свойства
Переменная Имя Внутр. Описание свойства код auto_left_margin bw bw Cub1 переносит с колонки 0 в последнюю колонку auto_right_margin am am Границы терминала устанавливаются автоматически back_color_erase bce ut Экран очищается с цветом фона can_change ccc cc Терминал может переопределять существующие цвета ceol_standout_glitch xhp xs выделение не удаляется перезаписью (hp) col_addr_glith xhpa YA Только положительное движение для свойств hpa/mhpa cpi_changes_res cpix YF Изменение размеров символа изменяет разрешение cr_cancels_micro_mode crxm YB Использование cr отключает режим micro eat_newline_glitch xenl xn Новая линия игнорируется после 80 столбцов (Concept) erase_overstrike eo eo Можно забить пробелом generic_type gn gn Общий тип линии (такой как выделенная или коммутируемая) hard_copy hc hc Терминал твердой копии hard_cursor chts HC Курсор аппаратный has_meta_key km km Имеет метаклавишу ($shift, sets parity bit$) has_print_wheel daisy YC требуется вмешательство оператора, чтобы изменить символьную таблицу притера has_status_line hs hs Имеет дополнительную "линию статуса" hue_lightness_saturation hls hl Терминал использует только цветовую нотацию HLS (Tektronix) insert_null_glitch in in Режим вставки распознает нули lpi_changes_res lpix YG Изменение толщины линии изменяет разрешение memory_above da da Сохранение содержимого дисплея над экраном memory_below db db Сохранение содержимого дисплея под экраном move_insert_mode mir mi Безопасность передвижения в режиме вставки move_standout_mode msgr ms Безопасность передвижения в режиме выделения needs_xon_xoff nxon nx Дозаполнение не будет работать, требуется xon/xoff no_esc_ctl_c xsb xb $Beehive$ (f1=escape, f2=Ctrl-C) non_rev_rmcup nrrmc NR smcup не оборачивает rmcup no_pad_char npc NP Символ заполнения не существует non_dest_scroll_region ndscr ND Область прокрутки ненарушаема over_strike os os Терминал забивает символы prtr_silent mc5i 5i Принтер не создает эха на экране row_addr_glitch xvpa YD Только положительное движение для свойств vhp\mvpa semi_auto_right_margin sam YE Печать в последнем столбце вызывает cr status_line_esc_ok eslok es Escape может быть использован на линии статуса dest_tabs_magic_smso xt xt Нарушена табуляция, magic so char (Teleray 1061) tilde_glitch hz hz Невозможно напечатать тильды transparent_underline ul ul Забой подчеркивания xon_xoff xon xo Терминал использует команды xon/xoff
8.22.2. Числа
Переменная Имя Внутр. Описание свойства код bit_image_entwining bitwin Yo Не документировано в SYSV buffer_capacity bufsz Ya Буфер печати columns cols co Число колонок в линии dot_vert_spacing spinv Yb Высота позиции, в pin-ах на дюйм dot_horz_spacing spinh Yc Ширина позиции, в точках на дюйм init_tabs it it Табуляторы изначально каждые # позиций label_height lh lh Линий в каждой метке label_width lw lw Колонок в каждой метке lines lines li Число линий на экране или странице lines_of_memory lm lm Число линий в памяти, 0 означает переменное magic_cookie_glitch xmc sg Число пробелов слева от smso или rmso max_colors colors Co Максимальное количество цветов на экране max_micro_address maddr Yd Максимальное значение в micro_..._adress max_micro_jump mjump Ye Максимальное значение в parm_..._micro max_pairs pairs pa Максимальное число цветовых пар на экране micro_col_size mcs Yf Размер шага символа в режиме micro micro_line_size mls Yg Размер шага линии в режиме micro no_color_video ncv NC Видеоатрибуты, которые нельзя использовать с цветами number_of_pins npins Yh Число pin-ов на головке принтера num_labels nlab Nl Число меток на экране output_res_char orc Yi Горизонтальное разрешение, в единицах на линию output_res_line orl Yj Вертикальное разрешение, в единицах на линию output_res_horz_inch orhi Yk Горизонтальное разрешение, в единицах на дюйм output_res_vert_inch orvi Yl Вертикальное разрешение, в единицах на дюйм padding_baud_rate pb pb Нижняя граница, когда требуется cr/nl заполнение virtual_terminal vt vt Номер виртуального терминала (UNIX) width_status_line wsl ms Число колонок в линии статуса (Следующие числовые свойства присутствуют в структуре term SYSV, но не задокументированы в man page. Комментарии взяты из заголовка этой структуры.) bit_image_type bitype Yp Тип устройства двоичного образа buttons btns BT Количество кнопок мыши max_attributes ma ma Максимальное число атрибутов, которое можно установить для терминала одновременно maximum_windows wnum MW Максимальное число возможных окон print_rate cps Ym Скорость печати, в символах в секунду wide_char_size widcs Yn Размер шага символа в режиме двойной ширины
8.22.3. Строки
Переменная Имя Внутр. Описание свойства код acs_chars acsc ac $Graphics charset pairs$ - def=vt100 alt_scancode_esc scesa S8 Альтернативный esc для эмуляции $scancode$ (по умолчанию vt100) back_tab cbt bt Возврат табулятора (P) bell bel bl Слышимый сигнал (звонок) (P) bit_image_repeat birep Xy Повторение двоичного образа ячейки #1 #2 раз (использует tparm) bit_image_newline binel Zz Передвижение на следующую линию двоичного образа (использует tparm) bit_image_carriage_return bicr Yv Передвижение на начало линии двоичного образа (использует tparm) carriage_return cr cr Возврат каретки change_char_pitch cpi ZA Изменение # символов на дюйм change_line_pitch lpi ZB Изменение # линий на дюйм change_res_horz chr ZC Изменение горизонтального разрешения change_res_vert cvr ZD Изменение вертикального разрешения change_scroll_region csr cs Изменение до #1 линий через #2 (vt100) (PG) char_padding rmp rP Как ip, только когда в режиме вставки char_set_names csnm Zy Список наименований символьной таблицы clear_all_tabs tbc ct Очистка всех позиций табуляции (P) clear_margins mgc MC Очистка всех границ (верхней, нижней и сторон) clear_screen clear cl Очистка экрана и курсор home (P*) clr_bol el1 cb Очистка до начала линии clr_eol el ce Очистка до конца линии (P) clr_eos ed cd Очистка до конца дисплея (P*) code_set_init csin ci Инициализация последовательности для сложных таблиц кодов color_names colornm Yw Дать наименование для цвета #1 column_address hpa ch Установка колонки курсора (PG) command_character cmdch CC cmd символ терминально устанавливаем в прототипе cursor_address cup cm Показ движения курсора линия #1 колонка #2 (PG) cursor_down cud1 do Вниз на одну линию cursor_home home ho Курсор - в начало (если не указана позиция курсора) cursor_invisible civis vi Сделать курсор невидимым cursor_left cub1 le Передвижение курсора на одну позицию влево cursor_mem_address mrcup CM Запоминание соответствующей адресации курсора cursor_normal cnorm ve Придать курсору нормальную видимость (undo vs/vi) cursor_right cuf1 nd Ненарушаемое пространство (курсор вправо) cursor_to_ll ll ll Последняя линия, первая колонка (если не указана позиция курсора) cursor_up cuu1 up Пересылка на верхний уровень (курсор вверх) cursor_visible cvvis vs Сделать курсор сильновидимым define_bit_image_region defbi Yx Определение прямоугольной области двоичного образа (использует tparm) define_char defc ZE Определение символов в символьной таблице delete_character dch1 dc Удаление символа (P*) delete_line dl1 dl Удаление линии (P*) device_type devt dv Индикация поддержки языка/таблицы кодов dis_status_line dsl ds Невозможна линия статуса display_pc_char dispc S1 Отображение символа ПК down_half_line hd hd Пол-линии вниз (вперед 1/2 перевода строки) ena_acs enacs eA Включена альтернативная символьная таблица end_bit_image_region endbi Yy Конец области двоичного образа (использует tparm) enter_alt_charset_mode smacs as Начало альтернативная символьной таблицы (P) enter_am_mode smam SA Включение автоматических границ enter_blink_mode blink mb Включение мигания enter_bold_mode bold md Включения суперяркого режима enter_ca_mode smcup ti Строка начала программ, использующих позицию курсора enter_delete_mode smdc dm Режим удаления (enter) enter_dim_mode dim mh Включение полуяркого режима enter_doublewide_mode swidm ZF Возможен режим двойной ширины enter_draft_quality sdrfq ZG Установка качества печати enter_insert_mode smir im Режим вставки (enter) enter_italics_mode sitm ZH Возможен режим курсива enter_leftward_mode slm ZI Возможно движение каретки влево enter_micro_mode smicm ZJ Разблокирование возможностей микропередвижения enter_near_letter_quality snlq ZK Установка печати NLQ enter_normal_quality snrmq ZL Установка нормального качества печати enter_pc_charset_mode smpch S2 Ввод режима показа символов ПК enter_protected_mode prot mp Включение защищенного режима enter_reverse_mode rev mr Включение обратного видеорежима enter_scancode_mode smsc S4 Ввод режима scancode ПК enter_secure_mode invis mk Включение пробельного режима (символы невидимы) enter_shadow_mode sshm ZM Возможен режим оттененной печати enter_standout_mode smso so Начало режима выделения enter_subscript_mode ssubm ZN Возможна печать индекса enter_superscript_mode ssupm ZO Возможна печать верхнего индекса enter_underline_mode smul us Начало режима подчеркивания enter_upward_mode sum ZP Возможно движение каретки вверх enter_xon_mode smxon SX Включение подтверждения связи xon/xoff erase_chars ech ec Очистка #1 символов (PG) exit_alt_charset_mode rmacs ae Конец альтернативной символьной таблицы (P) exit_am_mode rmam RA Отключение автоматических границ exit_attribute_mode sgr0 me Отключение всех атрибутов exit_ca_mode rmcup te Строка конца программ, использующих позицию курсора exit_delete_mode rmdc ed Конец режима удаления exit_doublewide_mode rwidm ZQ Невозможна печать с двойной шириной exit_insert_mode rmir ei Конец режима вставки exit_italics_mode ritm ZR Невозможна печать курсивом exit_leftward_mode rlm ZS Возможно движение каретки вправо (нормального режима) exit_micro_mode rmicm ZT Заблокированы возможности микропередвижения exit_pc_charset_mode rmpch S3 Невозможен показ символов ПК exit_scancode_mode rmsc S5 Невозможен режим просмотра ПК exit_shadow_mode rshm ZU Невозможна оттененная печать exit_standout_mode rmso se Конец режима выделения exit_subscript_mode rsubm ZV Невозможна подстрочная печать exit_superscript_mode rsupm ZW Невозможна надстрочная печать exit_underline_mode rmul ue Конец режима подчеркивания exit_upward_mode rum ZX Возможно движение каретки вниз exit_xon_mode rmxon RX Отключение подтверждения связи xon/xoff flash_screen flash vb Видимый звонок (невозможно передвижение курсора) form_feed ff ff Терминал твердой копии извергает страницы (P*) form_status_line fsl fs Возврат с линии статуса init_1string is1 i1 Строка инициализации терминала init_2string is2 i2 Строка инициализации терминала init_3string is3 i3 Строка инициализации терминала init_file if if Название содержащего файла init_prog iprog iP Путь программы для инициализации initialize_color initc Ic Инициализация определения цвета initialize_pair initp Ip Инициализация цветовой пары insert_character ich1 ic Символ вставки (P) insert_line il1 al Добавление новой чистой линии (P*) insert_padding ip ip Забивка после вставленного символа (p*) key_a1 ka1 K1 Верхний левый keypad-а key_a3 ka3 K3 Верхний правый keypad-а key_b2 ka2 K2 Центр keypad-а key_backspace kbs kb Послан клавишей backspace key_beg kbeg 1 Клавиша начала key_btab kcbt kB Клавиша назад табуляции key_c1 kc1 K4 Нижний левый keypad-а key_c3 kc3 K5 Нижний левый keypad-а key_cancel kcan 2 Клавиша cancel key_catab ktbc ka Послан клавишей очистки всей табулиции key_clear kclr kC Послан клавишей очистки экрана или клавишей очистки (стирания) key_close kclo 3 Клавиша close key_command kcmd 4 Командная клавиша key_copy kcpy 5 Клавиша копирования key_create kcrt 6 Клавиша создания key_ctab kctab kt Послан клавишей очистки табулиции key_dc kdch1 kD Послан клавишей удаления символа key_dl kdl1 kL Послан клавишей удаления линии key_down kcud1 kd Послан клавишей нижнего терминального массива key_eic krmir kM Послан клавишей rmir или smir в режиме вставки key_end kend 7 Клавиша end key_enter kent 8 Клавиша ввода/посылки key_eol kel kE Послан клавишей очистки до конца линии key_eos ked kS Послан клавишей очистки до конца экрана key_exit kext 9 Клавиша выхода key_f0 kf0 k0 Функциональная клавиша F00 key_f1 kf1 k1 Функциональная клавиша F01 key_f2 kf2 k2 Функциональная клавиша F02 key_f3 kf3 k3 Функциональная клавиша F03 key_f4 kf4 k4 Функциональная клавиша F04 key_f5 kf5 k5 Функциональная клавиша F05 key_f6 kf6 k6 Функциональная клавиша F06 key_f7 kf7 k7 Функциональная клавиша F07 key_f8 kf8 k8 Функциональная клавиша F08 key_f9 kf9 k9 Функциональная клавиша F09 key_f10 kf10 k; Функциональная клавиша F10 key_f11 kf11 F1 Функциональная клавиша F11 key_f12 kf12 F2 Функциональная клавиша F12 key_f13 kf13 F3 Функциональная клавиша F13 key_f14 kf14 F4 Функциональная клавиша F14 key_f15 kf15 F5 Функциональная клавиша F15 key_f16 kf16 F6 Функциональная клавиша F16 key_f17 kf17 F7 Функциональная клавиша F17 key_f18 kf18 F8 Функциональная клавиша F18 key_f19 kf19 F9 Функциональная клавиша F19 key_f20 kf20 FA функциональная клавиша F00 key_f21 kf21 FB функциональная клавиша F01 key_f22 kf22 FC функциональная клавиша F02 key_f23 kf23 FD функциональная клавиша F03 key_f24 kf24 FE функциональная клавиша F04 key_f25 kf25 FF функциональная клавиша F05 key_f26 kf26 FG функциональная клавиша F06 key_f27 kf27 FH функциональная клавиша F07 key_f28 kf28 FI функциональная клавиша F08 key_f29 kf29 FJ функциональная клавиша F09 key_f30 kf30 FK функциональная клавиша F10 key_f31 kf31 FL функциональная клавиша F11 key_f32 kf32 FM функциональная клавиша F12 key_f33 kf33 FN функциональная клавиша F13 key_f34 kf34 FO функциональная клавиша F14 key_f35 kf35 FP функциональная клавиша F15 key_f36 kf36 FQ функциональная клавиша F16 key_f37 kf37 FR функциональная клавиша F17 key_f38 kf38 FS функциональная клавиша F18 key_f39 kf39 FT функциональная клавиша F19 key_f40 kf40 FU функциональная клавиша F00 key_f41 kf41 FV функциональная клавиша F01 key_f42 kf42 FW функциональная клавиша F02 key_f43 kf43 FX функциональная клавиша F03 key_f44 kf44 FY функциональная клавиша F04 key_f45 kf45 FZ функциональная клавиша F05 key_f46 kf46 Fa функциональная клавиша F06 key_f47 kf47 Fb функциональная клавиша F07 key_f48 kf48 Fc функциональная клавиша F08 key_f49 kf49 Fd функциональная клавиша F09 key_f50 kf50 Fe функциональная клавиша F10 key_f51 kf51 Ff функциональная клавиша F11 key_f52 kf52 Fg функциональная клавиша F12 key_f53 kf53 Fh функциональная клавиша F13 key_f54 kf54 Fi функциональная клавиша F14 key_f55 kf55 Fj функциональная клавиша F15 key_f56 kf56 Fk функциональная клавиша F16 key_f57 kf57 Fl функциональная клавиша F17 key_f58 kf58 Fm функциональная клавиша F18 key_f59 kf59 Fn функциональная клавиша F19 key_f60 kf60 Fo функциональная клавиша F10 key_f61 kf61 Fp функциональная клавиша F11 key_f62 kf62 Fq функциональная клавиша F12 key_f63 kf63 Fr функциональная клавиша F13 key_find kfnd 0 клавиша поиска key_help khlp %1 клавиша помощи key_home khome kh послан клавишей home key_ic kich1 kI послан клавишей символ вставки/ ввод режима вставки key_il kil1 kA послан клавишей вставки линии key_left kcub1 kl послан клавишей левого терминального массива key_ll kll kH послан клавишей home-down key_mark kmrk %2 клавиша пометки key_message kmsg %3 клавиша сообщения key_move kmov %4 клавиша перемещения key_next knxt %5 клавиша следующего key_npage knp kN послан клавишей следующей страницы key_open kopn %6 клавиша открывания key_options kopt %7 клавиша опций key_ppage kpp kP послан клавишей предыдущей страницы key_previous kprv %8 клавиша предыдущего key_print kprt %9 клавиша печати key_redo krdo %0 клавиша redo key_reference kref &1 клавиша ссылки key_refresh krfr &2 клавиша обновления key_replace krpl &3 клавиша перестановки key_restart krst &4 клавиша перезапуска key_resume kres &5 клавиша возобновления работы key_right kcuf1 kr послан клавишей стрелки враво key_save ksav &6 клавиша сохранения key_sbeg kBEG &9 клавиша начала в верхнем регистре key_scancel kCAN &0 клавиша cancel в верхнем регистре key_scommand kCMD *1 командная клавиша в верхнем регистре key_scopy kCPY *2 клавиша копирования в верхнем регистре key_screate kCRT *3 клавиша создания в верхнем регистре key_sdc kDC *4 клавиша удаления символа в верхнем регистре key_sdl kDL *5 клавиша удаления линии в верхнем регистре key_select kslt *6 клавиша выделения key_send kEND *7 клавиша конца в верхнем регистре key_seol kEOL *8 клавиша конца строки в верхнем регистре key_sexit kEXT *9 клавиша выхода в верхнем регистре key_sf kind kF послан клавишей прокрутки прямо/вниз key_sfind kFND *0 клавиша поиска в верхнем регистре key_shelp kHLP #1 клавиша помощи в верхнем регистре key_shome kHOM #2 клавиша начала в верхнем регистре key_sic kIC #3 клавиша вставки символа в верхнем регистре key_sleft kLFT #4 клавиша влево в верхнем регистре key_smessage kMSG %a клавиша сообщения в верхнем регистре key_smove kMOV %b клавиша перемещения в верхнем регистре key_snext kNXT %c клавиша следующего в верхнем регистре key_soptions kOPT %d клавиша опций в верхнем регистре key_sprevious kPRV %e клавиша предыдущего в верхнем регистре key_sprint kPRT %f клавиша печати в верхнем регистре key_sr kri kR послан клавишей прокрутки назад/вверх key_sredo kRDO %g клавиша redo в верхнем регистре key_sreplace kRPL %h клавиша перестановки в верхнем регистре key_sright kRIT %i клавиша вправо в верхнем регистре key_sresume kRES %j клавиша возобновления работы в верхнем регистре key_ssave kSAV !1 клавиша сохранения в верхнем регистре key_ssuspend kSPD !2 клавиша приостановки в верхнем регистре key_stab khts kT послан клавишей установки табуляции key_sundo kUND !3 клавиша undo в верхнем регистре key_suspend kspd &7 клавиша приостановки key_undo kund &8 клавиша undo key_up kcuu1 ku послан клавишей вверх терминала keypad_local rmkx ke выход из режима $"keypad transmit"$ keypad_xmit smkx ks установка режима $"keypad transmit"$ терминала lab_f0 lf0 l0 метки на функциональную клавишу f0, если не f0 lab_f1 lf1 l1 метки на функциональную клавишу f1, если не f1 lab_f2 lf2 l2 метки на функциональную клавишу f2, если не f2 lab_f3 lf3 l3 метки на функциональную клавишу f3, если не f3 lab_f4 lf4 l4 метки на функциональную клавишу f4, если не f4 lab_f5 lf5 l5 метки на функциональную клавишу f5, если не f5 lab_f6 lf6 l6 метки на функциональную клавишу f6, если не f6 lab_f7 lf7 l7 метки на функциональную клавишу f7, если не f7 lab_f8 lf8 l8 метки на функциональную клавишу f8, если не f8 lab_f9 lf9 l9 метки на функциональную клавишу f9, если не f9 lab_f10 lf10 la метки на функциональную клавишу f10, если не f10 label_on smln LO подключение мягких меток label_off rmln LF отключение мягких меток meta_off rmm mo отключение метарежима meta_on smm mm включение метарежима (8-ой бит) micro_column_address mhpa ZY как column_address для микрорегулировки micro_down mcud1 ZZ как cursor_down для микрорегулировки micro_left mcub1 Za как cursor_left для микрорегулировки micro_right mcuf1 Zb как cursor_right для микрорегулировки micro_row_address mvpa Zc как row_address для микрорегулировки micro_up mcuu1 Zd как cursor_up для микрорегулировки newline nel nw новая линия (действует, как lf после cr) order_of_pins porder Ze Соединяет программные $buts$ с pin-ами головки принтера orig_colors oc oc Сброс всех цветовых пар orig_pair op op Установка цветовой пары по умолчанию, как в первоначальном варианте pad_char pad pc Символ-заполнитель (скорее всего null) parm_dch dch DC Удаление #1 символов (PG*) parm_delete_line dl DL Удаление #1 линий (PG*) parm_down_cursor cud DO Движение курсора вниз на #1 линий (PG*) parm_down_micro mcud Zf Как cud для микрорегулирования parm_ich ich IC Вставка #1 пробельных символов (PG*) parm_index indn SF Прокрутка вперед #1 линий (PG) parm_insert_line il AL Добавление #1 новых чистых линий (PG*) parm_left_cursor cub LE Перемещение курсора влево на #1 позиций (PG) parm_left_micro mcub Zg Как cul для микрорегулирования parm_right_cursor cuf RI Перемещение курсора вправо на #1 позиций (PG*) parm_right_micro mcuf Zh Как cur для микрорегулирования parm_rindex rin SR Прокрутка назад на #1 линий (PG*) parm_upcursor cuu UP Перемещение курсора вверх на #1 линий (PG*) parm_upmicro mcuu Zi Как cuu для микрорегулирования pkey_key pfkey pk Программная функциональная клавиша #1 для печати строки #2 pkey_local pfloc pl Программная функциональная клавиша #1 для выполнения строки #2 pkey_xmit pfx px Программная функциональная клавиша #1 для xmit строки #2 pkey_plab pfxl xl Программная клавиша #1 для xmit #2 и показа #3 plab_norm pln pn Программная метка #1 для показа строки #2 print_screen mc0 ps Печать содержимого экрана prtr_non mc5p pO Включение принтера для #1 байт prtr_off mc4 pf Выключение принтера prtr_on mc5 po Включение принтера repeat_char rep rp Повторение символа #1 #2 раз (PG*) req_for_input rfi RF Запрос на ввод reset_1string rs1 r1 Перезапуск терминала в нормальный режим reset_2string rs2 r2 Перезапуск терминала в нормальный режим reset_3string rs3 r3 Перезапуск терминала в нормальный режим reset_file rf rf Имя файла, содержащего строку перезапуска restore_cursor rc rc Установка курсора на позицию последнего sc row_address vpa cv Абсолютная вертикальная позиция (установка линии) (PG) save_cursor sc sc Сохранение позиции курсора (P) scancode_escape scesc S7 Escape для эмуляции scancode scroll_forward ind sf Прокрутка текста вверх (P) scroll_reverse ri sr Прокрутка текста вниз (P) select_char_set scs Zj Выбор символьной таблицы set0_des_seq s0ds s0 $Shift to codeset 0 (EUC set 0, ASCII)$ set1_des_seq s1ds s1 $Shift to codeset 1$ set2_des_seq s2ds s2 $Shift to codeset 2$ set3_des_seq s3ds s3 $Shift to codeset 3$ set_a_background setab AB Установка цвета заднего плана, используя ANSI escape set_a_foreground setaf AF Установка цвета переднего плана, используя ANSI escape set_attributes sgr sa Установка видеоатрибутов (PG9) set_background setb Sb Установка текущего цвета заднего плана set_bottom_margin smgb Zk Объявление текущей линии нижней границей set_bottom_margin_parm smgbp Zl Линии на расстоянии #1 или #2 от нижней границы объявляются нижней границей set_color_band setcolor Yz Установить текущим цвет #1 set_color_pair scp sp Установка текущей цветовой пары set_foreground setf Sf Установка текущего цвета переднего плана set_left_margin smgl ML Установка текущей колонки как левой границы set_left_margin_parm smglp Zm Установка левой (правой) границы на #1 (#2) set_lr_margin smglr ML Установка левой и правой границ set_page_lingth slines YZ Установка длины страницы в #1 линий (используйте tparm) set_right_margin smgr MR Установка текущей колонки как правой границы set_right_margin_parm smgrp Zn Установка колонки #1 как правой границы set_tab hts st Установка табуляций на всех линиях в текущей колонке set_tb_margin smgtb MT Установка верхней и нижней границ set_top_margin smgt Zo Установка текущей линии как верхней границы set_top_margin_parm smgtp Zp Установка линии #1 как верхней границы set_window wind wi Текущее окно - это линии #1-#2, колонки #3-#4 start_bit_image sbim Zq Начало печати bit image start_char_set_def scsd Zr Начало определения символьной таблицы stop_bit_image rbim Zs Конец печати bit image stop_char_set_def rcsd Zt Конец определения символьной таблицы subscript_characters subcs Zu Список подстрочных символов superscript_characters supcs Zv Список надстрочных символов tab ht ta Табуляция на 8 следующих позиций these_cause_cr docr Zw Данные символы вызывают CR to_status_line tsl ts Переход на линию статуса, первую колонку underline_char uc uc Подчеркнуть символ и встать после него up_half_line hu hu Передвижение на 1/2 содержимого линии xoff_character xoffc XF символ XOFF xon_character xonc XN символ XON (Следующие числовые свойства присутствуют в структуре term SYSV, но не задокументированы в man page. Комментарии взяты из заголовка этой структуры.) label_format fln Lf ?? set_clock sclk SC Установка времени дня display_clock dclk DK Вывод времени дня на экран remove_clock rmclk RC Удаление времени дня ?? create_window cwin CW Определение окна #1 с параметрами от #2, #3 до #4 #5 goto_window wingo WG Переход в окно #1 hangup hup HU Положить трубку телефона dial_phone dial DI Набрать номер телефона #1 quick_dial qdial QD Набрать номер телефона #1 без дальнейшего повторения tone tone TO Выбрать длинные гудки pulse pulse PU Выбрать короткие гудки flash_hook hook fh Нажать телефонную клавишу fixed_pause pause PA Пауза на 2-3 секунды wait_tone wait WA Ожидание ответного сигнала user0 u0 u0 Пользовательская строка #0 user1 u1 u1 Пользовательская строка #1 user2 u2 u2 Пользовательская строка #2 user3 u3 u3 Пользовательская строка #3 user4 u4 u4 Пользовательская строка #4 user5 u5 u5 Пользовательская строка #5 user6 u6 u6 Пользовательская строка #6 user7 u7 u7 Пользовательская строка #7 user8 u8 u8 Пользовательская строка # 8 user9 u9 u9 Пользовательская строка # 9 get_mouse getm Gm Curses должна предоставить события от мыши key_mouse kmous Km ?? mouse_info minfo Mi Информация о состоянии мыши pc_term_options pctrm S6 Опции терминала ПК req_mouse_pos reqmp RQ Требование отчета о позиции мыши zero_motion zerom Zx Следующий символ не двигается
8.23. Обзор функций [n]curses
В следующем тексте вы найдете обзор различных пакетов (n)curses.
Первая колонка содержит bsd-curses (в версии 2.1.0 и в SunOS 4.x),
во второй колонке - sysv-curses (в SunOS 5.4 / Solaris 2), наконец,
третья колонка - это (n)curses.
x - пакет содержит эту функцию
n - функция пока не реализована
Функция BSD SYSV Nc. _init_trace() x _traceattr(mode) x _tracef(char *, ...) x addbytes(...) x addch(ch) x x x addchnstr(...) x x addchstr(chstr) x x addnstr(...) x x addnwstr(...) x addstr(str) x x x addwch(...) x addwchnstr(...) x addwchstr(...) x addwstr(...) x adjcurspos() x attroff(attr) x x attron(attr) x x attrset(attr) x x baudrate() x x x beep() x x bkgd(ch) x x bkgdset(ch) x x border(...) x x box(...) x x x can_change_color() x x cbreak() x x x clear() x x x clearok(...) x x x clrtobot() x x x clrtoeol() x x x color_content(...) x x copywin(...) x x crmode() x x x curs_set(bf) x x curserr() x def_prog_mode() x x def_shell_mode() x x del_curterm(...) x x delay_output(ms) x x delch() x x x deleteln() x x x delscreen(...) x x,n delwin(win) x x x derwin(...) x x doupdate() x x drainio(int) x dupwin(win) x x echo() x x x echochar(ch) x x echowchar(ch) x endwin() x x x erase() x x x erasechar() x x x filter() x x flash() x x flushinp() x x flushok(...) x garbagedlines(...) x garbagedwin(win) x getattrs(win) x x getbegyx(...) x x getbkgd(win) x getbmap() x getcap(str) x getch() x x x getmaxx(win) x x getmaxy(win) x x getmaxyx(...) x x getmouse() x getnwstr(...) x getparyx(...) x x getstr(str) x x x getsyx(...) x x gettmode() x x getwch(...) x getwin(...) x getwin(FILE *) x x,n getwstr(...) x getyx(...) x x x halfdelay(t) x x has_colors() x x has_ic() x x,n has_il() x x,n hline(...) x x idcok(...) x x,n idlok(...) x x x immedok(...) x x inch() x x x inchnstr(...) x x,n inchstr(...) x x,n init_color(...) x x init_pair(...) x x initscr() x x x innstr(...) x x,n innwstr(...) x insch(c) x x x insdelln(n) x x insertln() x x x insnstr(...) x x insstr(str) x x instr(str) x x,n inswch(...) x inswstr(...) x intrflush(...) x x inwch(...) x inwchnstr(...) x inwchstr(...) x inwchstr(...) x inwstr(...) x is_linetouched(...) x x is_wintouched(win) x x isendwin() x x keyname(c) x x keypad(...) x x killchar() x x x leaveok(...) x x x longname() x x x map_button(long) x meta(...) x x mouse_off(long) x mouse_on(long) x mouse_set(long) x move(...) x x x movenextch() x moveprevch() x mvaddbytes(...) x mvaddch(...) x x x mvaddchnstr(...) x x mvaddchstr(...) x x mvaddnstr(...) x x mvaddnwstr(...) x mvaddstr(...) x x x mvaddwch(...) x mvaddwchnstr(...) x mvaddwchstr(...) x mvaddwstr(...) x mvcur(...) x x x mvdelch(...) x x x mvderwin(...) x x,n mvgetch(...) x x x mvgetnwstr(...) x mvgetstr(...) x x x mvgetwch(...) x mvgetwstr(...) x mvhline(...) x mvinch(...) x x x mvinchnstr(...) x x,n mvinchstr(...) x x,n mvinnstr(...) x x,n mvinnwstr(...) x mvinsch(...) x x x mvinsnstr(...) x x mvinsnwstr(...) x mvinsstr(...) x x mvinstr(...) x x,n mvinswch(...) x mvinswstr(...) x mvinwch(...) x mvinwchnstr(...) x mvinwchstr(...) x mvinwstr(...) x mvprintw(...) x x x mvscanw(...) x x x mvvline(...) x mvwaddbytes(...) x mvwaddch(...) x x x mvwaddchnstr(...) x x mvwaddchstr(...) x x mvwaddnstr(...) x x mvwaddnwstr(...) x mvwaddstr(...) x x x mvwaddwch(...) x mvwaddwchnstr(...) x mvwaddwchstr(...) x mvwaddwstr(...) x mvwdelch(...) x x x mvwgetch(...) x x x mvwgetnwstr(...) x mvwgetstr(...) x x x mvwgetwch(...) x mvwgetwstr(...) x mvwhline(...) x mvwin(...) x x x mvwinch(...) x x x mvwinchnstr(...) x x,n mvwinchstr(...) x x,n mvwinnstr(...) x x,n mvwinnwstr(...) x mvwinsch(...) x x x mvwinsnstr(...) x x mvwinsstr(...) x x mvwinstr(...) x x,n mvwinswch(...) x mvwinswstr(...) x mvwinwch(...) x mvwinwchnstr(...) x mvwinwchstr(...) x mvwinwstr(...) x mvwprintw(...) x x x mvwscanw(...) x x x mvwvline(...) x napms(ms) x x newkey(...) x newpad(...) x x newscreen(...) x newterm(...) x x newwin(...) x x x nl() x x x nocbreak() x x x nocrmode() x x x nodelay(...) x x noecho() x x x nonl() x x x noqiflush() x x,n noraw() x x x notimeout(...) x x overlay(...) x x x overwrite(...) x x x pair_content(...) x x pechochar(...) x x pechowchar(...) x pnoutrefresh(...) x x prefresh(...) x x printw(...) x x x putp(char *) x x putwin(...) x x,n qiflush() x x,n raw() x x x redrawwin(win) x x refresh() x x x request_mouse_pos() x reset_prog_mode() x x reset_shell_mode() x x resetty() x x x restartterm(...) x x,n ripoffline(...) x x savetty() x x x scanw(...) x x x scr_dump(char *) x x,n scr_init(char *) x x,n scr_restore(char *) x x,n scr_set(char *) x x,n scrl(n) x x scroll(win) x x x scrollok(...) x x x set_curterm(...) x x set_term(...) x x setcurscreen(SCREEN *) x setscrreg(...) x x setsyx(...) x x setterm(char *) x x x setupterm(...) x x slk_attroff(attr) x x,n slk_attron(attr) x x,n slk_attrset(attr) x x,n slk_clear() x x slk_init(fmt) x x slk_label(labnum) x x slk_noutrefresh() x x slk_refresh() x x slk_restore() x x slk_set(...) x x slk_touch() x x standend() x x x standout() x x x start_color() x x subpad(...) x x subwin(...) x x x syncok(...) x x,n ------------------------------------------------------ termattrs() x x,n termname() x x,n tgetent(...) x x tgetflag(char [2]) x x tgetnum(char [2]) x x tgetstr(...) x x tgoto(...) x x tigetflag(...) x x tigetnum(...) x x tigetstr(...) x x timeout(t) x x touchline(...) x x x touchwin(win) x x x tparm(...) x x tputs(...) x traceoff() x x traceon() x x typeahead(fd) x x unctrl(chtype c) x x ungetch(ch) x x ungetwch(c) x untouchwin(win) x x use_env(bf) x x vidattr(...) x x vidputs(...) x x vidupdate(...) x vline(...) x x vwprintw(...) x x vwscanw(...) x x waddbytes(...) x waddch(...) x x x waddchnstr(...) x x waddchstr(...) x x waddnstr(...) x x waddnwstr(...) x waddstr(...) x x x waddwch(...) x waddwchnstr(...) x waddwchstr(...) x waddwstr(...) x wadjcurspos(win) x wattroff(...) x x wattron(...) x x wattrset(...) x x wbkgd(...) x x wbkgdset(...) x x wborder(...) x x wclear(win) x x x wclrtobot(win) x x x wclrtoeol(win) x x x wcursyncup(win) x x,n wdelch(win) x x x wdeleteln(win) x x x wechochar(...) x x wechowchar(...) x werase(win) x x x wgetch(win) x x x wgetnstr(...) x x wgetnwstr(...) x wgetstr(...) x x x wgetwch(...) x wgetwstr(...) x whline() x whline(...) x whline(...) x x winch(win) x x x winchnstr(...) x x,n winchstr(...) x x,n winnstr(...) x x,n winnwstr(...) x winsch(...) x x x winsdelln(...) x x x winsertln(win) x x winsnstr(...) x x winsnwstr(...) x winsstr(...) x x winstr(...) x x,n winswch(...) x winswstr(...) x winwch(...) x winwchnstr(...) x winwchstr(...) x winwstr(...) x wmouse_position(...) x wmove(...) x x x wmovenextch(win) x wmoveprevch(win) x wnoutrefresh(win) x x wprintw(...) x x x wredrawln(...) x x wrefresh(win) x x x wscanw(...) x x x wscrl(...) x x wsetscrreg(...) x x wstandend(win) x x x wstandout(win) x x x wsyncdown(win) x x,n wsyncup(win) x x,n wtimeout(...) x x wtouchln(...) x x wvline() x wvline(...) x wvline(...) x x