一.全局变量
WINDDW* curscr:当前屏幕
WINDOW* stdscr:标准屏幕
int LINES:终端上的行数
int COLS:终端上的列数
bool TRUE:真标志,1
bool FALSE:假标志,0
int ERR:错误标志,-1
int OK:OK标志,0
------------------------------------------------
win:WINDOW *
bf:bool
ch:chty pe
str:char *
chstr:chty pe*
fmt:char * 否则:int
二.函数说明
1.字符显示
WINDOW* initscr()
SCREEN* newterm(char *type, FILE *outfd, FILE *infd)
初始化函数,对用户访问的每个终端都应该调用newterm,type是终端的名称,包括在$TERM中(如ansi, xterm, vt100等等) 。
SCREEN* set_term(SCREEN* new)
用户能够转换当前终端。任何的函数都将在配置的当前终端上起作用。
int endwin()
退出程式之前,关闭任何打开的窗口。之后还能够调用refresh()。
int isendwin()
if endwin()->refresh(),TRUE,|FALSE。
WINDOW* newwin(nlines,ncols,begy,begx)
begy和begx是窗口左上角的坐标。nlines是个整数, 存放着行的数目,而ncols,存放着列的数目。
任何的参数配置为零,则打开的窗口的大小将和屏幕的大小相同。
int delwin(win)
他删除窗口win。假如存在子窗口,以前先要删除这些子窗口。这个函数将释放win所占据的任何资源。在调用endwin()之前用户应该删除任何的窗口。
int mvwin(win, by, bx)
他将把窗口移到坐标(by,bx)处。假如把窗口移出屏幕边界的范围,则ERR
WINDOW *subwin(origwin,nlines, ncols, begy,begx)
他返回一个位于origwin窗口中间的子窗口。假如用户改变这两个窗口 (origwin或那个新窗口)中的一个,则这种改变将会同时反映到这两个窗口上。在下一次调用refresh()之前,先要调用touchwin(origwin) 。begx和begy是相对于屏幕的,而不是相对于origwin的。
WINDOW *derwin(origwin, nlines,ncols, begy, begx)
此函数和subwin(.)相同,只但是这里的begx和begy是相对于origwin的,而不是相对于屏幕的。
mvderwin(win, y, x)
此函数将把win移到父窗口内。(注意:此函数尚未实现)。
WINDOW *dupwin(win)
此函数复制窗口win。
int overlay(win1, win2)
将把win1中的任何文本拷贝到win2中,但是不拷贝空格。
int overwrite(win1, win2)
也是做文本拷贝工作的函数,但他拷贝空格。
int copywin(win1, win2, sminrow, smincol, dminrow, dmincol, dmaxrow,
dmaxcol, overlay)
他所做的工作和overlay(.)和overwrite(.)相似,但是该函数还能够让程式员选择拷贝窗口的哪个区域。
显示某个字元或字符串
int addch(ch)
int waddch(win, ch)
int mvaddch(y,x, ch)
int mvwaddch(win, y, x, ch)
------------------------------------------------
int addstr(str)
int addnstr(str, n)
int waddstr(win, str)
int waddnstr(win, str, n)
int mvaddstr(y, x, str)
int mvaddnstr(y, x, str, n)
int mvwaddstr(win, y, x, str)
int mvwaddnstr(win, y, x, str, n)
------------------------------------------------
int addchstr(chstr)
int addchnsrtr(chstr, n)
int waddchstr(win, chstr)
int waddchnstr(win, chstr, n)
int mvaddchstr(y, x, chstr)
int mvaddchnstr(y, x, chstr, n)
int mvwaddchstr(win, y, x, chstr)
int mvwaddchnstr(win, y, x, chstr, n)
*****chstr是指向ch type数组的一个指针。*****
------------------------------------------------
int echochar (ch)
int wechochar(win, ch)
------------------------------------------------
int printw(fmt,..)
int wprintw(win, fmt,....)
int mvprintw(y, x, fmt,...)
int mvwprntw(win, y, x, fmt,..)
------------------------------------------------
int insch(c)
int winsch(win, c)
int mvinsch(y, x, c)
int mvwinsch9win, y, x, c)
这些函数把字符ch插入到光标的左边,光标后面的任何字符则向右移动一个位置。 在这一行最右端的字符可能会丢失。
int insert()
int winsert(win)
在当前行的上方插入一个空行(最底下的一行将被丢失)。
int insdelin(n)
int winsdelln(win, n)
假如n为正数,则这些函数将在适当的窗口的当前光标上方插入n行 (这样一来最底下的n行将丢失);假如n为负数,则光标下面的n行将被删除, 余下的行将上升,顶替他们的位置。
int insstr(str)
int insnstr(str, n)
int winsstr(win, str)
int winsnstr(win, str, n)
int mvinsstr(y, x, str)
int mvinsnstr(y, x, str, n)
int mvwinsstr(win, y, x, str)
int mvwinsnstr(win, y, x, str, n)
这些函数将在当前光标的左边插入str (字符的个数不能超过一行的限度)。在光标右边的字符将右移,假如到达行 尾,则字符将丢失,光标位置不变。y和x是指在插入str以前先要把光标移动到的坐标,n是要插入的字符的数目(假如n为0则插入整个字符串)。
这些函数将在当前光标的左边插入str(字符的个数不能超过一行的限度)。
int delch()
int wdelch(win)
int mvdelch(y, x)
int mvwdelch(win, y, x)
删除光标左边的字符,并把光标右边余下的字符向左移动一个位置。 y和x是在进行删除操作以前要把光标移动到的坐标。
int deleteln()
int wdeleteln(win)
删除光标下面的一行,并把下面任何的其他行都向上移动一个位置。 此外,屏幕最底下的一行将被清除。
2.方框和直线
int border(ls, rs, ts, bs, tl, tr, bl, br)
int wborder(win, ls, rs, ts, bs, tl, tr, bl, br)
int box(win, vert, hor)
这些函数在窗口的边界(或win的边界)画上方框。在下面的表格中,读者将能够看到字符,连同他们的默认值。当用零去调用box(.)时将会用到这些默认值。在下面的图中读者能够看到方框中字符的位置
int vline(ch,n)
int wvline(win,ch,n)
int hline(ch,n)
int whline(win,ch,n)
这些函数将从当前光标位置开始画一条水平线或垂直线。 ch是画线所使用的字符,n是要画的字符的个数,光标位置并不移动。
void bkgdset(ch)
void wbkgdset(win, ch)
这两个函数配置窗口或屏幕的背景字符和属性。ch的属性将和窗口中任何非空格的字符的属性进行OR操作。背景是窗口的一部分,将不会随着滚动、输入或输出而改变
int bkgd(ch)
int wbkgd(win,ch)
int getch()
int wgetch()
int mvgetch(y, x)
int mvwgetch(win, y, x)
getch()将从终端读取输入,读取的方式取决于是否配置了延迟模式。 假如配置了延迟模式,则getch()将一直等待,直到用户按下一个键为止;假如没有配置延迟模式,则他将返回输入缓冲区中的数据,假如输入缓冲区为空,则他将返回ERR。mvgetch(.)和mvwgetch(.)首先把光标移动到位置(y,x)上。名称中有w字母的函数将从和窗口win相关的终端读取输入, getch()和mvgetch(.)则从屏幕相关的终端读取。
假如使能了keypad(.) 在用户按下某个功能键时,getch()将返回一个代码,该代码在.h头文档中被 定义为KEY_*宏。假如用户按下Esc键(他可能会是某个组合功能键的第
一个键),则ncurses将启动一个否则就返回功能键的值。(假如需要的话,能够使用notimeout()来关闭第二个定时器
int ungetch()
这个函数将把字符ch送回输入缓冲区。
int getstr(str)
int wgetstr(win,str)
int mvgetstr(y,x,str)
int mvwgetstr(win,y,x,str)
int wgetnstr(win,str,n)
这些函数的作用相当于对getch()进行一系列的调用,直到接收到一个新行。 行中的字符存放在str中(所以,在调用getstr(.)之前,不要忘记给字符指针分配内存)。假如打开了回送,则字符串将被显示出来(使用noecho()能够关闭回送),而用户的删除字符连同其他特别字符也会被解释出来
chty peinch()
chty pewinch(win)
chty pemvinch(y,x)
chty pemvwinch(win,y,x)
这些函数从屏幕或窗口返回一个字符,因为返回值的类型是chty pe, 所以还包括了属性信息。这一信息能够使用常量A_*从字符中扩展得到。
int scanw(fmt,...)
int wscanw(win,fmt,...)
int mvscanw(y,x,fmt,...)
int mvwscanw(win,y,x,fmt,...)
int vwscanw(win,fmt,va_list.)
3.输出选项
int idlok(win, bf)
void fdcok(win, bf)
这两个函数为窗口使能或关闭终端的insert/delete特征(idlok(.)针对一行,而fdcok(.)则针对字符)。(注:idcok(.)尚未实现)
void immedok(win, bf)
bf配置为TRUE,则对窗口win的每一次改变都将导致物理屏幕的一次刷新。 这将使程式的性能降低,所以默认的值是FALSE。(注:此函数尚未实现)
int clearok(win, bf)
假如bf值为TRUE,则下一次调用wrefresh(win)时将会清除屏幕, 并完全地把他重新画一遍(就像用户在编辑器vi中按下Ctrl+L相同)。
int leaveok(win, bf)
默认的行为是,ncurses让物理光标停留在上次刷新窗口时的同一个位置上。 不使用光标的程式能够把leaveok(.)配置为TRUE,这样一般能够节省光标移动所需要的时间。此外,ncurses将试图使终端光标不可见。
int nl()
int nonl()
这两个函数控制新行的平移。使用nl()能够打开平移,这样在回车时就会 平移到新的一行,在输出时就会走行。而nonl()能够把平移关上。 关上平移之后,ncurses做光标移动操作时速度就会快一些。
4.输入选项
int keypad(win, bf)
bf为TRUE,函数在等待输入时会使能用户终端的键盘上的小键盘。 ncurses将返回一个键代码,该代码在.h头文档中被定义为KEY_*宏,他是针对小键盘上的功能键和方向键的。对于PC键盘来说,这一点是很有帮助的,因为这样用户就能够使能数字键和光标键。
int meta(win.bf)
bf为TRUE,从getch()返回的键代码将是完整的8位(最高位将不会被去掉)
int cbreak()
int nocbreak()
int crmode()
int nocrmode()
cbreak()和nocbreak()将把终端的CBREAK模式打开或关闭。假如CBREAK打开则程式就能够立即使用读取的输入信息。假如CBREAK关闭,则输入将被缓存起来,直到产生新的一行(注意:crmode()和nocrmode()只是为了提供向上兼容性,不要使用他们)
int raw()
int noraw()
这两个函数将把RAW模式打开或关闭。RAW和CBREAK相同, 他们的区别在于RAW模式不处理特别字符。
int echo()
int noecho()
假如把echo()配置为TRUE,则用户所敲的输入将会回送并显示出来, 而noecho()则对此保持沉默。
int halfdelay(t)
此函数和cbreak()相似,但他要延迟t秒钟。
int nodelay(win, bf)
终端将被配置为非阻塞模式。假如没有任何输入则getch()将返回ERR, 否则假如配置为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()将使用一个特别的定时器(一秒钟长)。到时间以后再对以Esc等键打头的输入序列进行解释。
int typeahead(fd)
假如fd是-1,则不检查超前键击,否则ncurses将使用文档描述符fd来进行这些检查
int intrflush(win, bf)
当bf为TRUE时使能该函数。在终端上按下任意中断键(quit、break.)时, 任何的输出将会刷新到tty驱动程式队列中。
三.终端属性
int baudrate()
此函数返回终端的速度,以bps为单位。
char erasechar()
此函数返回当前删除的字符。
char killchar()
此函数返回当前杀死的字符。
int has_ic()
int has_il()
假如终端具备插入/删除字符的能力,则has_rc()将返回TRUE,假如终端具备插入/删除行的能力,则has_il()将返回TRUE,否则这两个函数将返回ERR。(注:尚未实现)
char* longname()
此函数所返回的指针允许用户访问当前终端的描述符。
chty petermattrs()(注:此函数尚未实现)
char* termname()
这个函数从用户环境中返回TERM的内容。(注:此函数尚未实现)
四.更新终端
int refresh()
int wrefresh(win)
refersh()将把窗口映像拷贝到终端,而wrefresh(win)将把窗口映像拷贝到win,并使他看起来象原来的样子。
int wnoutrefresh(win)
int doupdate()
wnoutrefresh(win)将会只拷贝到窗口win,这意味着在终端上将不进行任何输出,但是虚拟屏幕实际上看起来象程式员所希望的那样。doupdate()将输出到终端上。程式能够改变许多窗口,对每个窗口都调用一次 wnoutrefresh(win),然后再调用一次doupdate()来更新物理屏幕。
int redrawln(win)
int wredrawln(win,bline,blines)
假如在往屏幕上输出新内容时需要清除一些行或整个屏幕,能够使用这两 个函数。(可能这些行已被破坏了或由于其他的原因。)
int touchwin(win)
int touchline(win, start, count)
int wtouchln(win, y, n, changed)
int untouchwln(win)
这些函数通知ncurses整个win窗口已被改变过了,或从start直到 start+count的这些行已被改变过了。例如,假如用户有一些重叠的窗口 (正如在example.c中相同),对某个窗口的改变不会影响其他窗口的映像。
wtouchln(.) 将按掀从y开始的n行。假如change的值是TRUE,则这些行被按掀过了,否则就还未被按掀过(改变或未改变)。
untouchwin(win)将把窗口win标记为自上次调用refresh()以来还未被按掀。
int ls_linetouched(win, line)
int ls_wint ouched(win)
通过使用这两个函数,用户能够检查自从上次调用refresh()以来,
第line行或窗口win是否已被按掀过。
五.视频属性和颜色
ncurses定义了八种颜色,在带有彩色支持的终端上用户能够使用这些颜色。 首先,调用start_color()初始化颜色数据结构,然后使用has_colors()检查终端权能。
start_color()将初始化COLORS和COLOR_PAIR。 前者是终端所支持的最多的颜色数目,而后者是用户能够定义的色彩对的最大数目。两个属性能够使用OR操作组合起来。“COLORPAIRS_1COLORS_1”
int color_content(color,t,g,b)
此函数获取color的颜色成份r,g和b。
首先,函数checkColor调用start_color()初始化颜色,假如当前终端有彩色的话,
则函数has_colors()将返回TRUE。我们检查了这一点以后,调用init_pair(.) 把前景色和背景色组合起来,再调用wattrset(.)为特定的窗口配置这些颜色对。
此外,假如我们使用的是黑白终端,还能够单独使用wattrset(.)来配置属性。 假如要在xterm中获取颜色,我认为最好方法是使用ansi_xterm, 连同来自MidnightCommander的terminfo项目。用户能够获取ansi_xterm 和MidnightCommander的源代码(mc_x.x.tar.gz),然后编译ansi_xterm, 并对mc_x.x.tar.gz文档中的xterm.ti和vt100.ti使用tic命令。 执行ansi_xterm,把他试验出来
六.光标和屏幕坐标
int move(y, x)
int wmove(win, y, x)
move()将移动光标,而wmove(win)则从窗口win中移动光标。对输入/输出函数来说,还定义了其他的一些宏,在调用特定函数之前,这些宏能够移动光标。
int curs_set(bf)
这个函数将把光标置为可见或不可见,假如终端有这个功能
void getyx(win, y, x)
getyx(.)将返回当前光标位置。(注意:这是个宏)
void getparyx(win, y, x)
假如win是个子窗口,getparyx(.)将把该窗口对应父窗口的坐标存储在y和x,否则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)
getsyx(.)把虚拟屏幕光标存放在y和x中,而setsyx(.)则配置这个坐标。
假如y和x是-1, 用户调用getsyx(.)将会配置leaveok。
七.滚动
int tscrollok(win, bf)
当光标在屏幕的右下角并且输入了一个字符(或新的一行)时,如bf为TRUE则窗口win中的文本将上滚一行。假如bf为FALSE,则鼠标留在原来的位置上。当滚动特征打开时,使用下面的函数能够滚动窗口中的内容。
(注意:当用户在窗口的最后一行输入一个新行时,也应该发生相应的滚动操作, 所以在使用scrollok(.)时要十分小心, 否则可能会得到出乎意料的结果。)
int scrol(win)
此函数将使窗口向上滚动一行(数据结构中的行也向上滚动)。
int acrl(n)
int wscrl(win, n)
这两个函数将使屏幕或窗口win向上向下滚动,滚动方向取决于整数n的值:假如n是正数,则窗口向上滚动n行;假如n是负数,则窗口向下滚动n行
int setscrreg(t, b)
int wsetscrreg(win, t, b)
这两个函数配置一个软滚动区。
小键盘
WINDOW* newpad(nlines,ncols)
WINDOW* subpad(orlg,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)
软标签
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(chty peattr)
int slk_attrset(chty peattr)
int slk_attroff(chty peattr)
这些函数是和attron(attr)、attrset(attr)和attroft(attr)相对应的, 但他们尚未实现。
int beep()
int flash()
char* unctrl(chty pec)
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()
低级访问
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)
屏幕转储
int scr_dump(char* filename)
(注:此函数尚未实现。)
int scr_restore(char* filename)
(注:此函数尚未实现。)
int scr_init(char* filename)
(注:此函数尚未实现。)
int scr_set(char* filename)
(注:此函数尚未实现。)
Termcap模拟
int tgetent(char *bp,char *name)
int tgetflag(char fd[2])
int tgetnum(char fd[2])
char *tgetstr(char fd[2],char **area)
char tgoto(char *cap,int col,int row)
int tputs(char *str,int offset,int (*putc)())
调试函数
void _init(trace()
void _trace(char *,...)
char *_traceattr(mode)
void traceon()
void traceoff()
八.变量权能
1.布尔型变量权能名称初始值描述
auto_left_marginbwbwcub1从最后一列换行到第0列
auto_right_marginamam终端的边界自动对齐
back_color_erasebceut屏幕以背景色清除
can_changeccccc终端能够重新定义现有的颜色
ceol_standout_glitch xhpxs标准输出不会被覆盖所清除(hp)
col_addr_glitchxhpaYA对hpa/mhpa大写字符而言只作正向移动
cpi_changes_rescpixYF改变字符间距将会影响解析度
cr_cancels_micro_mode crxm YB使用cr关闭宏模式
eat_newline_glitchxenlxn在80列之后将忽略新行(Concept)
erase_overtrikeeoeo能够用空格来删除叠印
generic_typegngn通用行类型(如dialup,switch)
hard_copyhchc硬拷贝终端
hard_cursorchtsHC光标很难看到
has_meta_keykmkm有一个元键(shift,配置奇偶校验位)
has_print _wheeldaisyYC打印机需要操作员来改变字符集
has_status_linehshs有一个额外的“状态行”
hue_lightness_saturation hlshl终端只使用HLS颜色表示法(Tektronix)
insert_null_glitchinin插入模式,能识别空行
lpi_changes_reslpixYG改变行距将影响解析度
memory_abovedada显示能够保留在屏幕上方
memory_belowdbdb显示能够保留在屏幕下方
move_insert_modemirmi在插入模式下能够安全地移动
move_standout_mode msgrms在标准输出模式下能够安全地移动
needs_xon_xoffnxonnx不能填充,需要nxon/xoff
no_esc_ctl_cxsbxbBeehive信号(F1=Escape,F2=CtrlC)
non_rev_rmcupnrrmcNRsmcup不能反转rmcup
no_pad_char npcNP填充字符不存在
non_dest_scroll_region ndscr ND滚动区不可摧毁
over_strikeosos终端能够叠印
prtr_silentmc5i5i打印机不向屏幕回送
row_addr_glitchxvpaYDvhp/mvpa大写字母只能作正向移动
semi_auto_right_margin samYE打印在最后一列将导致cr
status_line_esc_okeslokes在状态行上能够使用Esc键
dest_tabs_magic_smso xtxt制表符不可用(Teleray1061)
tilde_glitchhzhzHazel_tine;不能打印’s
transparent_underline ulul下划线字符叠印
xon_coffxonxo终端使用xon/xoff握手机制
2.数值型变量权能名称初始值描述
bit_image_entwining bitwinYo在SYSV中未作描写
buffer_capacitybufszYa在打印前缓存的字节的数目
columnscolsco在一行中列的数目
dot_vert_spacingspinvYb在水平方向上点和点的距离,以每英寸多少点为单位
dot_horz_spacingspinhYc在垂直方向上针之间的距离,以每英寸多少针为单位
init_tabsitit每#个空格算一个制表符的位置
label_heightlhlh每个标签多少行
label_widthlwlw每个标签多少列
lineslinesli屏幕或页面上行的数目
lines_of_memorylmlm假如>lines则表示内存中的行数,0意味着可变
magic_cookie_glitch xmcsgsmso或rmso所剩下的空白字符的数目
max_colorscolorsCo在屏幕上颜色的最大数目
max_micro_address maddrYd在micro_._address中的最大值
max_micro_jumpmjumpYe在parm_._micro中的最大值
max_pairspairspa在屏幕上颜色对的最大数目
micro_col_sizemcsYf在宏模式中字符间距的大小
micro_line_sizemlsYg在宏模式中行距的大小
no_color_videoncvNC不能使用彩色的视频属性
number_of_pinsnpinsYh在打印头中针的数目
num_labelsnlabNl屏幕上标签的数量
output_res_char orcYi水平解析度,以每行单元数为单位
output_res_lineorlYj垂直解析度,以每行单元数为单位
output_res_horz_inch orhiYk水平解度,以每英寸单元数为单位
output_res_vert_inch orviYl垂直解析度,以每英寸单元数为单位
padding_baud_rate pbpb在需要cr/nl填充时最低的波特率
virtual_terminalvtvt虚拟终端号(Unix系统)
width_status_linewslws状态行的第n列
(下面的数值型权能是在SYSVterm结构中定义的,但在man帮助中还没有提供对他们的描述。我们的解释来自term结构的头文档。)
bit_image_typebitypeYp位映像设备的类型
buttonsbtnsBT鼠标按键的数目
max_attributesmama终端能够处理的最多的组合属性
maximum_windows wnumMW可定义窗口的最大数目
print _ratecpsYm打印速率,以每秒字符数为单位
wide_char _sizewidcsYn在双宽度模式中字符间距的大小
3.字符串型变量权能名称初始值描述
acs_char sacscac图像字符集对一def=vt100
alt_scancode_escscesaS8扫描码模拟的另一种换码(默认值是VT100)
back_tab cbtbt向后tab(p)
bellbelbl声音信号(响铃)(p)
bit_image_repeatbirepXy把位映像单元重复#1#2次(使用tparm)
bit_image_newlinebinelZz移动到位映像的下一行(使用tparm)
bit_image_carriage_return bicr Yv移动到同一行的开头(使用tparm)
carriage_returncrcr回车(p*)
change_char _pitch cpiZA改变为每英寸#个字符
change_line_pitchlpiZB改变为每英寸#行
change_res_horzchrZC改变水平解度
change_res_vertcvrZD改变垂直解析度
change_scroll_region csrcs把滚动区改变为从#1行到#2行(VT100)(PG)
char _paddingrmprP和ip相似,但他用在插入模式中
char _set_namescsnmZy字符集名称的列表
clear_all_tabstbcct清除任何的制表符停止(p)
clear_marginsmgcMC清除任何的页边
clear_screenclearcl清除屏幕和home光标(p*)
clr_bolel1cb清除到行首
clr_eolelce清除到行尾(P)
clr_eosedcd清除到显示的末尾(p*)
code_set_initcsinci多个代码集合的初始化序列
color_namescolornmYw#1号颜色的名称
column_addresshpach配置光标列(PG)
command_char acter cmdchCC在原型中终端能够配置的cmd字符
cursor_addresscupcm屏幕光标移动到#1行#2列(PG)
cursor_downcud1do下移一行
cursor_homehomehoHome光标(假如没有环的话)
cursor_invisiblecivisvi使光标不可见
cursor_leftcub1le把光标向左移一个空格
cursor_mem_address mrcupCM内存相对的光标寻址
cursor_normalcnormve使光标以最普通的外形显示(undovs/vi)
cursor_rightcuf1nd不具备破坏性的空白(光标向右移)
cursor_to_llllll最后一行,第一列(假如没有环的话)
cursor_upcuu1upUpline(光标向上移)
cursor_visiblecvvisvs使光标可见
define_bit_image_region defbiYx定义方形的位映像区(使用tparm)
define_char defcZE定义字符集中的某个字符
delete_char acterdch1dc删除字符(p*)
delete_linedl1dl删除行(p*)
device_typedevtdv显示语言/代码集支持
dis_status_linedslds关闭状态行
display_pc_char dispcS1显示PC字符
down_half_linehdhd向下移动半行(向前换1/2行)
ena_acsenacseA使能另一个字符集合
end_bit_image_region endbi Yy结束位映像区(使用tparm)
enter_alt_char set_mode smacs as开始另一个字符集(p)
enter_am_modesmamSA打开自动对齐特征
enter_blink_modeblink mb打开字符闪烁效果
enter_bold_modeboldmd打开粗体(特别亮)模式
enter_ca_modesmcupti启动使用环的程式的字符串
enter_delete_modesmdcdm删除模式(输入)
enter_dim_modedimmh打开半亮模式
enter_doublewide_mode swidm ZF使能双倍宽度模式
enter_draft_qualitysdrfqZG配置草图效果的打印方式
enter_insert_modesmirim插入模式(输入)
enter_italics_modesitmZH使能斜体字模式
enter_leftward_mode slmZI使能向左回车移动
enter_micro_modesmicmZJ使能宏移动功能
enter_near_letter_quality snlqZK配置NLQ打印
enter_normal_quality snrmqZL配置一般质量的打印方式
enter_pc_char set_mode smpch S2输入PC字符显示模式
enter_protected_mode protmp打开保护模式
enter_reverse_mode revmr打开反转视频模式
enter_scancode_mode smscS4输入PC扫描码
enter_secure_mode invismk打开空白模式(字符不可见)
enter_shadow_mode sshmZM使能阴影打印模式
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_modesmxonSX打开xon/xoff握手机制
erase_char sechec删除#1个字符(PG)
exit_alt_char set_mode rmacs ae终止可选的字符集(P)
exit_am_modermamRA关闭自动对齐方式
exit_attribute_mode sgr0me关闭任何属性
exit_ca_modermcupte终止使用环的程式的字符串
exit_delete_modermdced终止删除模式
exit_doublewide_mode rwidm ZQ关闭双倍宽度打印方式
exit_insert_modermirei结束插入模式
exit_italics_moderitmZR关闭斜体打印模式
exit_leftward_moderlmZS使能右向(普通的)回车移动
exit_micro_modermicmZT关闭宏移动能力
exit_pc_char set_mode rmpch S3关闭PC字符显示
exit_scancode_mode rmsc S5关闭PC扫描码模式
exit_shadow_mode rshmZU关闭阴影打印模式
exit_standout_mode rmsose结束标准输出模式
exit_subscript_mode rsubmZV关掉下标打印方式
exit_superscript_mode rsupm ZW关掉上标打印方式
exit_underline_mode rmulue结束下划线模式
exit_upward_moderumZX打开向下(普通的)回车移动
exit_xon_modermxonRX关掉xon/xoff握手机制
flash_screenflashvb可视响铃(不能移动光标)
form_feedffff硬拷贝终端页面的换页(p*)
from_status_linefslfs从状态行返回
init_1stringis1i1终端初始化字符串
init_2stringis2i2终端初始化字符串
init_3stringis3i3终端初始化字符串
init_fileifif所包含的文档名称
init_progiprogiP初始化程式的路径名
initialize_colorinitcIc初始化颜色的定义
initialize_pairinitpIp初始化颜色对
insert_char acterich1ic插入字符(P)
insert_lineil1al加入一个新的空白行(p*)
insert_paddingipip在插入的字符之后再插入填充字符(p*)
key_a1ka1K1小键盘左上方的键
key_a3ka3K3小键盘右上方的键
key_b2kb2K2小键盘中央的键
key_backspacekbskb由回退键所发送
key_begkbeg1开始键
key_btabkcbtkB向右一tab键
key_c1kc1K4小键盘左下角的键
key_c3kc3K5小键盘右下角的键
key_cancelkcan2取消键
key_catabktbcka由clear_all_tabs键发送
key_clearkclrkC由清除屏幕或删除键发送
key_closekclo3关闭键
key_commandkcmd4命令键
key_copykcpy5拷贝键
key_createkcrt6创建键
key_ctabkctabkt由clear_tab键发送
key_dckdch1kD由删除字符键发送
key_dlkdl1kL由删除行键发送
key_downkcud1kd由终端向下光标键发送
key_eickrmirkM在插入模式中由rmir或smir发送
key_endkend7结束键
key_enterkent8输入/发送键
key_eolkelkE由clear_to_end_of_line键发送
key_eoskedkS由clear_to_end_of_screen键发送
key_exitkext9退出键
key_findkfnd0查找键
key_helpkhlp%1帮助键
key_homekhomekh由home键发送
key_ickich1kl由inschar /enterinsmode键发送
key_ilkil1kA由插入行发送
key_leftkcub1kl由终端向左键发送
key_llkllkH由home_down键发送
key_markkmrk%2标记键
key_messagekmsg%3消息键
key_movekmov%4移动键
key_nextknxt%5下一个键
key_npageknpkN由下页键发送
key_openkopn%6打开键
key_optionskopt%7选项键
key_ppagekppkP由前页键发送
key_previouskprv%8前一键
key_print kprt%9打印键
key_redokrdo%0redo键
key_refrencekref&1引用键
key_refreshkrfr&2刷新键
key_replacekrpl&3替换键
key_restartkrst&4重启键
key_resumekres&5恢复键
key_rightkcuf1kr由终端向右键发送
key_saveksav&6保存键
key_sbegkBEG&9按下开始键的同时按下shift键
key_scancelkCAN&0按下取消键的同时按下shift键
key_scommandkCMD*1按下命令键的同时按下shift键
key_scopykCPY*2按下拷贝键的同时按下shift键
key_screatekCRT*3按下创建键的同时按下shift键
key_sdckDC*4按下删除字符键的同时按下shift键
key_sdlkDL*5按下删除行键的同时按下shift键
key_selectkslt*6选择键
key_sendkEND*7按下结束键的同时按下shift键
key_seolkEOL*8按下行尾键的同时按下shift键
key_sexitkEXT*9按下退出键的同时按下shift键
key_sfkindkF由前滚/下滚键发送
key_sfindkFND*0按下查找键的同时按下shift键
key_shelpkHLP#1按下帮助键的同时按下shift键
key_shomekHOM#2按下Home键的同时按下shift键
key_sickIC#3按下插入字符键的同时按下shift键
key_sleftkLFT#4按下向左键的同时按下shift键
key_smessagekMSG%a按下消息键的同时按下shift键
key_smovekMOV%b按下移动键的同时按下shift键
key_snextkNXT%c按下向后键的同时按下shift键
key_soptionskOPT%d按下选项键的同时按下shift键
key_spreviouskPRV%e按下向前键的同时按下shift键
key_sprint kPRT%f按下打印键的同时按下shift键
key_srkrikR由后滚/下滚键发送
key_sredokRDO%g按下redo键的同时按下shift键
key_sreplacekRPL%h按下替换键的同时按下shift键
key_srightkRIT%l按下向右键的同时按下shift键
key_srsumekRES%j按下恢复键的同时按下shift键
key_ssavekSAV!1按下保存键的同时按下shift键
key_ssuspendkSPD!2按下中断键的同时按下shift键
key_sundokUND!3按下取消键的同时按下shift键
key_stabkhtskT由set_tab键发送
key_suspendkspd&7中断键
key_undokund&8取消键
key_upkcuulku由终端的向上键发送
keypad_localrmkxke不处于“小键盘发送”方式之中
keypad_xmitsmkxks把终端置为“小键盘发送”方式
lab_f0lf0l0假如不是f0的话,则为功能键f0的标签
lab_f1lf1l1假如不是f1的话,则为功能键f1 的标签
lab_f2lf2l2假如不是f2的话,则为功能键f2 的标签
lab_f3lf3l3假如不是f3的话,则为功能键f3 的标签
lab_f4lf4l4假如不是f4的话,则为功能键f4 的标签
lab_f5lf5l5假如不是f5的话,则为功能键f5 的标签
lab_f6lf6l6假如不是f5的话,则为功能键f6 的标签
lab_f7lf7l7假如不是f7的话,则为功能键f7 的标签
lab_f8lf8l8假如不是f8的话,则为功能键f8 的标签
lab_f9lf9l9假如不是f9的话,则为功能键f9 的标签
lab_f10lf10la假如不是f10的话,则为功能键 f10的标签
label_onsmlnLO打开软标签
label_offrmlnLF关闭软标签
meta_offrmmmo关闭“元模式”
meta_onsmmmm打开“元模式”(8位)
micro_column_address mhpa ZY近似宏调整的列—地址,
micro_downmcud1ZZ近似宏调整的光标—向下
micro_leftmcutb1Za近似宏调整的光标—向左
micro_rightmcuf1Zb近似宏调整的光标—向右
micro_row_address mvpaZc近似宏调整的行—地址
micro_upmcuu1Zd近似宏调整的光标—向上
newlinenelnw新行(行为近似于cr后跟lf)
order_of_pinsporderZe匹配软件连同打印头中的针
orig_colorsococ重置任何的颜色对
orig_pairopop把默认的颜色对配置为原始的那 个
pad_char padpc填充字符(非空)
parm_dchdchDC删除#1字符(PG*)
parm_delete_linedlDL删除#1行(PG*)
parm_down_cursor cudDO把光标向下移#1行(PG*)
parm_down_micro mcudZf近似宏调用的cub
parm_ichichIC插入#1个空白符号(PG*)
parm_indexindnSF向上滚动#1行(PG)
parm_insert_lineilAL加入#1个新的空白行(PG*)
parm_left_cursorcubLE把光标向左移#1个空格(PG)
parm_left_micromcubZg近似宏调整中的cub
parm_right_cursor cufRl把光标向右移#1个空格(PG*)
parm_right_micromcufZh近似宏调整中的cuf
parm_rindexrinSR回滚#1行(PG)
parm_up_cursorcuuUP把光标上移#1行(PG*)
parm_up_micromcuuZi近似宏调整中的cuu
pkey_keypfkeypk把功能键#1定义为字符#2的类型
pkey_localpflocpl把功能键#1定义为执行字符串#2
pkey_xmitpfxpx把功能键#1定义为发送字符串#2
pkey_plabpfxlxl把功能键#1定义为发送#2,并显示#3
plab_normplnpn编程标签#1,以显示字符串#2
print _screenmc0ps打印屏幕内容
prtr_nonmc5ppO打开打印机,打印#1个字节
prtr_offmc4pf关闭打印机
prtr_onmc5po打开打印机
repeat_char reprp把字符#1重复#2次(PG*)
req_for_inputrfiRF输入请求
reset_1stringrs1r1把终端完全置为sane方式
reset_2stringrs2r2把终端完全置为sane方式
reset_3stringrs3r3把终端完全置为sane方式
reset_filerfrf包含重置字符串的文档名称
restore_cursorrcrc把光标置为上一个屏幕上的位置
row_addressvpacv垂直绝对位置(配置行)(PG)
save_cursorscsc保存光标位置(P)
scancode_escapescescS7为了扫描码模拟按下Esc键
scroll_forwardindsf把文本向上滚动(P)
scroll_reverserisr把文本向下滚动(P)
select_char _setscsZj选择字符集
set0_des_seqs0dss0转换到代码集0(EUC集0,ASCII)
set1_des_seqs1dss1转换到代码集1
set2_des_seqs2dss2转换到代码集2
set3_des_seqs3dss3转换到代码集3
set_a_backgroundsetabAB使用ANSI配置背景颜色
set_a_foregroundsetafAF使用ANSI配置前景颜色
set_attributessgrsa定义视频属性(PG9)
set_backgroundsetbSb配置当前背景颜色
set_bottom_marginsmgbZk配置当前行的底部边界
set_bottom_margin_parm smgbp ZI从bottomset_color_band的#1行或#2行配置底行
setcolorYz改变#1号色带颜色
set_color_pairscpsp配置当前颜色对
set_foregroundsetfSf配置当前前景色
set_left_marginsmglML配置当前行的左边界
set_left_margin_parm smglpZm在#1行(#2行)配置左(右)边界
set_lr_marginsmglrML配置左右边界
set_page_lengthslinesYZ把页的长度配置为#1行(使用tparm)
set_right_marginsmgrMR把右边界配置为当前列
set_right_margin_parm smgrp Zn把右边界配置为#1列
set_tabhtsst在当前列的任何行配置制表符
set_tb_marginsmgtbMT配置上下边界
set_top_marginsmgtZo把上边界配置为当前行
set_top_margin_parm smgtp Zp把上边界配置为#1行
set_WINDOW windwi当前窗口是从#1行到#2行,从#3 列到#4列
start_bit_imagesbimZq开始打印位映像图像
start_char _set_def scsdZr开始定义字符集
stop_bit_imagerbimZs结束打印位映像图像
stop_char _set_def rcsdZt结束定义字符集
subscript_char acters subcs Zu下标字符的列表
superscript_char acters supcs Zv 上标字符的列表
tabhtta跳转到下面8个空格硬件的制表符位置
these_cause_crdocrZw这些字符导致CR
to_status_linetslts跳到状态行,第1列
underline_char ucuc给某字符划下划线,并移过他
up_half_linehuhu上移半行(反转1/2行)
xoff_char actercoffcXFXON字符
xon_char acterxoncXNXOFF字符
(下面的字符串权能是在SYSVr终端结构中定义的,但在man帮助信息中还
未作描述,对他们的解释是从终端结构头文档中得到的。)
label_formatflnLf??
set_clocksclkSC配置时钟
display_clockdclkDK显示时钟
remove_clockrmclkRC删除时钟
create_WINDOW cwinCW把窗口#1定义为从#2行,#3列到#4 行,#5列
goto_WINDOW wingoWG跳到窗口#1
hanguphupHU挂起电话
dial_phonedialDI拨电话号码#1
quick_dialqdialQD拨电话号码#1,但不做进度检查
tonetoneTO选择接触声调拨叫
pulsepulsePU选择脉冲拨叫
flash_hookhookfh闪光转换分支
fixed_pausepausePA暂停2~3秒
wait_tonewaitWA等待拨叫声音
user0u0u0用户字符串#0
user1u1u1用户字符串#1
user2u2u2用户字符串#2
user3u3u3用户字符串#3
user4u4u4用户字符串#4
user5u5u5用户字符串#5
user6u6u6用户字符串#6
user7u7u7用户字符串#7
user8u8u8用户字符串#8
user9u9u9用户字符串#9
get_mousegetmGmsurses 应获得按钮事件
key_mousekmousKm??
mouse_infominfoMi鼠标状态信息
pc_term_optionspctrmS6PC终端选项
req_mouse_posreqmpRQ请求鼠标位置报告
zero_motionzeromZx后继字符没有移动
WINDDW* curscr:当前屏幕
WINDOW* stdscr:标准屏幕
int LINES:终端上的行数
int COLS:终端上的列数
bool TRUE:真标志,1
bool FALSE:假标志,0
int ERR:错误标志,-1
int OK:OK标志,0
------------------------------------------------
win:WINDOW *
bf:bool
ch:chty pe
str:char *
chstr:chty pe*
fmt:char * 否则:int
二.函数说明
1.字符显示
WINDOW* initscr()
SCREEN* newterm(char *type, FILE *outfd, FILE *infd)
初始化函数,对用户访问的每个终端都应该调用newterm,type是终端的名称,包括在$TERM中(如ansi, xterm, vt100等等) 。
SCREEN* set_term(SCREEN* new)
用户能够转换当前终端。任何的函数都将在配置的当前终端上起作用。
int endwin()
退出程式之前,关闭任何打开的窗口。之后还能够调用refresh()。
int isendwin()
if endwin()->refresh(),TRUE,|FALSE。
WINDOW* newwin(nlines,ncols,begy,begx)
begy和begx是窗口左上角的坐标。nlines是个整数, 存放着行的数目,而ncols,存放着列的数目。
任何的参数配置为零,则打开的窗口的大小将和屏幕的大小相同。
int delwin(win)
他删除窗口win。假如存在子窗口,以前先要删除这些子窗口。这个函数将释放win所占据的任何资源。在调用endwin()之前用户应该删除任何的窗口。
int mvwin(win, by, bx)
他将把窗口移到坐标(by,bx)处。假如把窗口移出屏幕边界的范围,则ERR
WINDOW *subwin(origwin,nlines, ncols, begy,begx)
他返回一个位于origwin窗口中间的子窗口。假如用户改变这两个窗口 (origwin或那个新窗口)中的一个,则这种改变将会同时反映到这两个窗口上。在下一次调用refresh()之前,先要调用touchwin(origwin) 。begx和begy是相对于屏幕的,而不是相对于origwin的。
WINDOW *derwin(origwin, nlines,ncols, begy, begx)
此函数和subwin(.)相同,只但是这里的begx和begy是相对于origwin的,而不是相对于屏幕的。
mvderwin(win, y, x)
此函数将把win移到父窗口内。(注意:此函数尚未实现)。
WINDOW *dupwin(win)
此函数复制窗口win。
int overlay(win1, win2)
将把win1中的任何文本拷贝到win2中,但是不拷贝空格。
int overwrite(win1, win2)
也是做文本拷贝工作的函数,但他拷贝空格。
int copywin(win1, win2, sminrow, smincol, dminrow, dmincol, dmaxrow,
dmaxcol, overlay)
他所做的工作和overlay(.)和overwrite(.)相似,但是该函数还能够让程式员选择拷贝窗口的哪个区域。
显示某个字元或字符串
int addch(ch)
int waddch(win, ch)
int mvaddch(y,x, ch)
int mvwaddch(win, y, x, ch)
------------------------------------------------
int addstr(str)
int addnstr(str, n)
int waddstr(win, str)
int waddnstr(win, str, n)
int mvaddstr(y, x, str)
int mvaddnstr(y, x, str, n)
int mvwaddstr(win, y, x, str)
int mvwaddnstr(win, y, x, str, n)
------------------------------------------------
int addchstr(chstr)
int addchnsrtr(chstr, n)
int waddchstr(win, chstr)
int waddchnstr(win, chstr, n)
int mvaddchstr(y, x, chstr)
int mvaddchnstr(y, x, chstr, n)
int mvwaddchstr(win, y, x, chstr)
int mvwaddchnstr(win, y, x, chstr, n)
*****chstr是指向ch type数组的一个指针。*****
------------------------------------------------
int echochar (ch)
int wechochar(win, ch)
------------------------------------------------
int printw(fmt,..)
int wprintw(win, fmt,....)
int mvprintw(y, x, fmt,...)
int mvwprntw(win, y, x, fmt,..)
------------------------------------------------
int insch(c)
int winsch(win, c)
int mvinsch(y, x, c)
int mvwinsch9win, y, x, c)
这些函数把字符ch插入到光标的左边,光标后面的任何字符则向右移动一个位置。 在这一行最右端的字符可能会丢失。
int insert()
int winsert(win)
在当前行的上方插入一个空行(最底下的一行将被丢失)。
int insdelin(n)
int winsdelln(win, n)
假如n为正数,则这些函数将在适当的窗口的当前光标上方插入n行 (这样一来最底下的n行将丢失);假如n为负数,则光标下面的n行将被删除, 余下的行将上升,顶替他们的位置。
int insstr(str)
int insnstr(str, n)
int winsstr(win, str)
int winsnstr(win, str, n)
int mvinsstr(y, x, str)
int mvinsnstr(y, x, str, n)
int mvwinsstr(win, y, x, str)
int mvwinsnstr(win, y, x, str, n)
这些函数将在当前光标的左边插入str (字符的个数不能超过一行的限度)。在光标右边的字符将右移,假如到达行 尾,则字符将丢失,光标位置不变。y和x是指在插入str以前先要把光标移动到的坐标,n是要插入的字符的数目(假如n为0则插入整个字符串)。
这些函数将在当前光标的左边插入str(字符的个数不能超过一行的限度)。
int delch()
int wdelch(win)
int mvdelch(y, x)
int mvwdelch(win, y, x)
删除光标左边的字符,并把光标右边余下的字符向左移动一个位置。 y和x是在进行删除操作以前要把光标移动到的坐标。
int deleteln()
int wdeleteln(win)
删除光标下面的一行,并把下面任何的其他行都向上移动一个位置。 此外,屏幕最底下的一行将被清除。
2.方框和直线
int border(ls, rs, ts, bs, tl, tr, bl, br)
int wborder(win, ls, rs, ts, bs, tl, tr, bl, br)
int box(win, vert, hor)
这些函数在窗口的边界(或win的边界)画上方框。在下面的表格中,读者将能够看到字符,连同他们的默认值。当用零去调用box(.)时将会用到这些默认值。在下面的图中读者能够看到方框中字符的位置
int vline(ch,n)
int wvline(win,ch,n)
int hline(ch,n)
int whline(win,ch,n)
这些函数将从当前光标位置开始画一条水平线或垂直线。 ch是画线所使用的字符,n是要画的字符的个数,光标位置并不移动。
void bkgdset(ch)
void wbkgdset(win, ch)
这两个函数配置窗口或屏幕的背景字符和属性。ch的属性将和窗口中任何非空格的字符的属性进行OR操作。背景是窗口的一部分,将不会随着滚动、输入或输出而改变
int bkgd(ch)
int wbkgd(win,ch)
int getch()
int wgetch()
int mvgetch(y, x)
int mvwgetch(win, y, x)
getch()将从终端读取输入,读取的方式取决于是否配置了延迟模式。 假如配置了延迟模式,则getch()将一直等待,直到用户按下一个键为止;假如没有配置延迟模式,则他将返回输入缓冲区中的数据,假如输入缓冲区为空,则他将返回ERR。mvgetch(.)和mvwgetch(.)首先把光标移动到位置(y,x)上。名称中有w字母的函数将从和窗口win相关的终端读取输入, getch()和mvgetch(.)则从屏幕相关的终端读取。
假如使能了keypad(.) 在用户按下某个功能键时,getch()将返回一个代码,该代码在.h头文档中被 定义为KEY_*宏。假如用户按下Esc键(他可能会是某个组合功能键的第
一个键),则ncurses将启动一个否则就返回功能键的值。(假如需要的话,能够使用notimeout()来关闭第二个定时器
int ungetch()
这个函数将把字符ch送回输入缓冲区。
int getstr(str)
int wgetstr(win,str)
int mvgetstr(y,x,str)
int mvwgetstr(win,y,x,str)
int wgetnstr(win,str,n)
这些函数的作用相当于对getch()进行一系列的调用,直到接收到一个新行。 行中的字符存放在str中(所以,在调用getstr(.)之前,不要忘记给字符指针分配内存)。假如打开了回送,则字符串将被显示出来(使用noecho()能够关闭回送),而用户的删除字符连同其他特别字符也会被解释出来
chty peinch()
chty pewinch(win)
chty pemvinch(y,x)
chty pemvwinch(win,y,x)
这些函数从屏幕或窗口返回一个字符,因为返回值的类型是chty pe, 所以还包括了属性信息。这一信息能够使用常量A_*从字符中扩展得到。
int scanw(fmt,...)
int wscanw(win,fmt,...)
int mvscanw(y,x,fmt,...)
int mvwscanw(win,y,x,fmt,...)
int vwscanw(win,fmt,va_list.)
3.输出选项
int idlok(win, bf)
void fdcok(win, bf)
这两个函数为窗口使能或关闭终端的insert/delete特征(idlok(.)针对一行,而fdcok(.)则针对字符)。(注:idcok(.)尚未实现)
void immedok(win, bf)
bf配置为TRUE,则对窗口win的每一次改变都将导致物理屏幕的一次刷新。 这将使程式的性能降低,所以默认的值是FALSE。(注:此函数尚未实现)
int clearok(win, bf)
假如bf值为TRUE,则下一次调用wrefresh(win)时将会清除屏幕, 并完全地把他重新画一遍(就像用户在编辑器vi中按下Ctrl+L相同)。
int leaveok(win, bf)
默认的行为是,ncurses让物理光标停留在上次刷新窗口时的同一个位置上。 不使用光标的程式能够把leaveok(.)配置为TRUE,这样一般能够节省光标移动所需要的时间。此外,ncurses将试图使终端光标不可见。
int nl()
int nonl()
这两个函数控制新行的平移。使用nl()能够打开平移,这样在回车时就会 平移到新的一行,在输出时就会走行。而nonl()能够把平移关上。 关上平移之后,ncurses做光标移动操作时速度就会快一些。
4.输入选项
int keypad(win, bf)
bf为TRUE,函数在等待输入时会使能用户终端的键盘上的小键盘。 ncurses将返回一个键代码,该代码在.h头文档中被定义为KEY_*宏,他是针对小键盘上的功能键和方向键的。对于PC键盘来说,这一点是很有帮助的,因为这样用户就能够使能数字键和光标键。
int meta(win.bf)
bf为TRUE,从getch()返回的键代码将是完整的8位(最高位将不会被去掉)
int cbreak()
int nocbreak()
int crmode()
int nocrmode()
cbreak()和nocbreak()将把终端的CBREAK模式打开或关闭。假如CBREAK打开则程式就能够立即使用读取的输入信息。假如CBREAK关闭,则输入将被缓存起来,直到产生新的一行(注意:crmode()和nocrmode()只是为了提供向上兼容性,不要使用他们)
int raw()
int noraw()
这两个函数将把RAW模式打开或关闭。RAW和CBREAK相同, 他们的区别在于RAW模式不处理特别字符。
int echo()
int noecho()
假如把echo()配置为TRUE,则用户所敲的输入将会回送并显示出来, 而noecho()则对此保持沉默。
int halfdelay(t)
此函数和cbreak()相似,但他要延迟t秒钟。
int nodelay(win, bf)
终端将被配置为非阻塞模式。假如没有任何输入则getch()将返回ERR, 否则假如配置为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()将使用一个特别的定时器(一秒钟长)。到时间以后再对以Esc等键打头的输入序列进行解释。
int typeahead(fd)
假如fd是-1,则不检查超前键击,否则ncurses将使用文档描述符fd来进行这些检查
int intrflush(win, bf)
当bf为TRUE时使能该函数。在终端上按下任意中断键(quit、break.)时, 任何的输出将会刷新到tty驱动程式队列中。
三.终端属性
int baudrate()
此函数返回终端的速度,以bps为单位。
char erasechar()
此函数返回当前删除的字符。
char killchar()
此函数返回当前杀死的字符。
int has_ic()
int has_il()
假如终端具备插入/删除字符的能力,则has_rc()将返回TRUE,假如终端具备插入/删除行的能力,则has_il()将返回TRUE,否则这两个函数将返回ERR。(注:尚未实现)
char* longname()
此函数所返回的指针允许用户访问当前终端的描述符。
chty petermattrs()(注:此函数尚未实现)
char* termname()
这个函数从用户环境中返回TERM的内容。(注:此函数尚未实现)
四.更新终端
int refresh()
int wrefresh(win)
refersh()将把窗口映像拷贝到终端,而wrefresh(win)将把窗口映像拷贝到win,并使他看起来象原来的样子。
int wnoutrefresh(win)
int doupdate()
wnoutrefresh(win)将会只拷贝到窗口win,这意味着在终端上将不进行任何输出,但是虚拟屏幕实际上看起来象程式员所希望的那样。doupdate()将输出到终端上。程式能够改变许多窗口,对每个窗口都调用一次 wnoutrefresh(win),然后再调用一次doupdate()来更新物理屏幕。
int redrawln(win)
int wredrawln(win,bline,blines)
假如在往屏幕上输出新内容时需要清除一些行或整个屏幕,能够使用这两 个函数。(可能这些行已被破坏了或由于其他的原因。)
int touchwin(win)
int touchline(win, start, count)
int wtouchln(win, y, n, changed)
int untouchwln(win)
这些函数通知ncurses整个win窗口已被改变过了,或从start直到 start+count的这些行已被改变过了。例如,假如用户有一些重叠的窗口 (正如在example.c中相同),对某个窗口的改变不会影响其他窗口的映像。
wtouchln(.) 将按掀从y开始的n行。假如change的值是TRUE,则这些行被按掀过了,否则就还未被按掀过(改变或未改变)。
untouchwin(win)将把窗口win标记为自上次调用refresh()以来还未被按掀。
int ls_linetouched(win, line)
int ls_wint ouched(win)
通过使用这两个函数,用户能够检查自从上次调用refresh()以来,
第line行或窗口win是否已被按掀过。
五.视频属性和颜色
ncurses定义了八种颜色,在带有彩色支持的终端上用户能够使用这些颜色。 首先,调用start_color()初始化颜色数据结构,然后使用has_colors()检查终端权能。
start_color()将初始化COLORS和COLOR_PAIR。 前者是终端所支持的最多的颜色数目,而后者是用户能够定义的色彩对的最大数目。两个属性能够使用OR操作组合起来。“COLORPAIRS_1COLORS_1”
int color_content(color,t,g,b)
此函数获取color的颜色成份r,g和b。
首先,函数checkColor调用start_color()初始化颜色,假如当前终端有彩色的话,
则函数has_colors()将返回TRUE。我们检查了这一点以后,调用init_pair(.) 把前景色和背景色组合起来,再调用wattrset(.)为特定的窗口配置这些颜色对。
此外,假如我们使用的是黑白终端,还能够单独使用wattrset(.)来配置属性。 假如要在xterm中获取颜色,我认为最好方法是使用ansi_xterm, 连同来自MidnightCommander的terminfo项目。用户能够获取ansi_xterm 和MidnightCommander的源代码(mc_x.x.tar.gz),然后编译ansi_xterm, 并对mc_x.x.tar.gz文档中的xterm.ti和vt100.ti使用tic命令。 执行ansi_xterm,把他试验出来
六.光标和屏幕坐标
int move(y, x)
int wmove(win, y, x)
move()将移动光标,而wmove(win)则从窗口win中移动光标。对输入/输出函数来说,还定义了其他的一些宏,在调用特定函数之前,这些宏能够移动光标。
int curs_set(bf)
这个函数将把光标置为可见或不可见,假如终端有这个功能
void getyx(win, y, x)
getyx(.)将返回当前光标位置。(注意:这是个宏)
void getparyx(win, y, x)
假如win是个子窗口,getparyx(.)将把该窗口对应父窗口的坐标存储在y和x,否则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)
getsyx(.)把虚拟屏幕光标存放在y和x中,而setsyx(.)则配置这个坐标。
假如y和x是-1, 用户调用getsyx(.)将会配置leaveok。
七.滚动
int tscrollok(win, bf)
当光标在屏幕的右下角并且输入了一个字符(或新的一行)时,如bf为TRUE则窗口win中的文本将上滚一行。假如bf为FALSE,则鼠标留在原来的位置上。当滚动特征打开时,使用下面的函数能够滚动窗口中的内容。
(注意:当用户在窗口的最后一行输入一个新行时,也应该发生相应的滚动操作, 所以在使用scrollok(.)时要十分小心, 否则可能会得到出乎意料的结果。)
int scrol(win)
此函数将使窗口向上滚动一行(数据结构中的行也向上滚动)。
int acrl(n)
int wscrl(win, n)
这两个函数将使屏幕或窗口win向上向下滚动,滚动方向取决于整数n的值:假如n是正数,则窗口向上滚动n行;假如n是负数,则窗口向下滚动n行
int setscrreg(t, b)
int wsetscrreg(win, t, b)
这两个函数配置一个软滚动区。
小键盘
WINDOW* newpad(nlines,ncols)
WINDOW* subpad(orlg,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)
软标签
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(chty peattr)
int slk_attrset(chty peattr)
int slk_attroff(chty peattr)
这些函数是和attron(attr)、attrset(attr)和attroft(attr)相对应的, 但他们尚未实现。
int beep()
int flash()
char* unctrl(chty pec)
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()
低级访问
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)
屏幕转储
int scr_dump(char* filename)
(注:此函数尚未实现。)
int scr_restore(char* filename)
(注:此函数尚未实现。)
int scr_init(char* filename)
(注:此函数尚未实现。)
int scr_set(char* filename)
(注:此函数尚未实现。)
Termcap模拟
int tgetent(char *bp,char *name)
int tgetflag(char fd[2])
int tgetnum(char fd[2])
char *tgetstr(char fd[2],char **area)
char tgoto(char *cap,int col,int row)
int tputs(char *str,int offset,int (*putc)())
调试函数
void _init(trace()
void _trace(char *,...)
char *_traceattr(mode)
void traceon()
void traceoff()
八.变量权能
1.布尔型变量权能名称初始值描述
auto_left_marginbwbwcub1从最后一列换行到第0列
auto_right_marginamam终端的边界自动对齐
back_color_erasebceut屏幕以背景色清除
can_changeccccc终端能够重新定义现有的颜色
ceol_standout_glitch xhpxs标准输出不会被覆盖所清除(hp)
col_addr_glitchxhpaYA对hpa/mhpa大写字符而言只作正向移动
cpi_changes_rescpixYF改变字符间距将会影响解析度
cr_cancels_micro_mode crxm YB使用cr关闭宏模式
eat_newline_glitchxenlxn在80列之后将忽略新行(Concept)
erase_overtrikeeoeo能够用空格来删除叠印
generic_typegngn通用行类型(如dialup,switch)
hard_copyhchc硬拷贝终端
hard_cursorchtsHC光标很难看到
has_meta_keykmkm有一个元键(shift,配置奇偶校验位)
has_print _wheeldaisyYC打印机需要操作员来改变字符集
has_status_linehshs有一个额外的“状态行”
hue_lightness_saturation hlshl终端只使用HLS颜色表示法(Tektronix)
insert_null_glitchinin插入模式,能识别空行
lpi_changes_reslpixYG改变行距将影响解析度
memory_abovedada显示能够保留在屏幕上方
memory_belowdbdb显示能够保留在屏幕下方
move_insert_modemirmi在插入模式下能够安全地移动
move_standout_mode msgrms在标准输出模式下能够安全地移动
needs_xon_xoffnxonnx不能填充,需要nxon/xoff
no_esc_ctl_cxsbxbBeehive信号(F1=Escape,F2=CtrlC)
non_rev_rmcupnrrmcNRsmcup不能反转rmcup
no_pad_char npcNP填充字符不存在
non_dest_scroll_region ndscr ND滚动区不可摧毁
over_strikeosos终端能够叠印
prtr_silentmc5i5i打印机不向屏幕回送
row_addr_glitchxvpaYDvhp/mvpa大写字母只能作正向移动
semi_auto_right_margin samYE打印在最后一列将导致cr
status_line_esc_okeslokes在状态行上能够使用Esc键
dest_tabs_magic_smso xtxt制表符不可用(Teleray1061)
tilde_glitchhzhzHazel_tine;不能打印’s
transparent_underline ulul下划线字符叠印
xon_coffxonxo终端使用xon/xoff握手机制
2.数值型变量权能名称初始值描述
bit_image_entwining bitwinYo在SYSV中未作描写
buffer_capacitybufszYa在打印前缓存的字节的数目
columnscolsco在一行中列的数目
dot_vert_spacingspinvYb在水平方向上点和点的距离,以每英寸多少点为单位
dot_horz_spacingspinhYc在垂直方向上针之间的距离,以每英寸多少针为单位
init_tabsitit每#个空格算一个制表符的位置
label_heightlhlh每个标签多少行
label_widthlwlw每个标签多少列
lineslinesli屏幕或页面上行的数目
lines_of_memorylmlm假如>lines则表示内存中的行数,0意味着可变
magic_cookie_glitch xmcsgsmso或rmso所剩下的空白字符的数目
max_colorscolorsCo在屏幕上颜色的最大数目
max_micro_address maddrYd在micro_._address中的最大值
max_micro_jumpmjumpYe在parm_._micro中的最大值
max_pairspairspa在屏幕上颜色对的最大数目
micro_col_sizemcsYf在宏模式中字符间距的大小
micro_line_sizemlsYg在宏模式中行距的大小
no_color_videoncvNC不能使用彩色的视频属性
number_of_pinsnpinsYh在打印头中针的数目
num_labelsnlabNl屏幕上标签的数量
output_res_char orcYi水平解析度,以每行单元数为单位
output_res_lineorlYj垂直解析度,以每行单元数为单位
output_res_horz_inch orhiYk水平解度,以每英寸单元数为单位
output_res_vert_inch orviYl垂直解析度,以每英寸单元数为单位
padding_baud_rate pbpb在需要cr/nl填充时最低的波特率
virtual_terminalvtvt虚拟终端号(Unix系统)
width_status_linewslws状态行的第n列
(下面的数值型权能是在SYSVterm结构中定义的,但在man帮助中还没有提供对他们的描述。我们的解释来自term结构的头文档。)
bit_image_typebitypeYp位映像设备的类型
buttonsbtnsBT鼠标按键的数目
max_attributesmama终端能够处理的最多的组合属性
maximum_windows wnumMW可定义窗口的最大数目
print _ratecpsYm打印速率,以每秒字符数为单位
wide_char _sizewidcsYn在双宽度模式中字符间距的大小
3.字符串型变量权能名称初始值描述
acs_char sacscac图像字符集对一def=vt100
alt_scancode_escscesaS8扫描码模拟的另一种换码(默认值是VT100)
back_tab cbtbt向后tab(p)
bellbelbl声音信号(响铃)(p)
bit_image_repeatbirepXy把位映像单元重复#1#2次(使用tparm)
bit_image_newlinebinelZz移动到位映像的下一行(使用tparm)
bit_image_carriage_return bicr Yv移动到同一行的开头(使用tparm)
carriage_returncrcr回车(p*)
change_char _pitch cpiZA改变为每英寸#个字符
change_line_pitchlpiZB改变为每英寸#行
change_res_horzchrZC改变水平解度
change_res_vertcvrZD改变垂直解析度
change_scroll_region csrcs把滚动区改变为从#1行到#2行(VT100)(PG)
char _paddingrmprP和ip相似,但他用在插入模式中
char _set_namescsnmZy字符集名称的列表
clear_all_tabstbcct清除任何的制表符停止(p)
clear_marginsmgcMC清除任何的页边
clear_screenclearcl清除屏幕和home光标(p*)
clr_bolel1cb清除到行首
clr_eolelce清除到行尾(P)
clr_eosedcd清除到显示的末尾(p*)
code_set_initcsinci多个代码集合的初始化序列
color_namescolornmYw#1号颜色的名称
column_addresshpach配置光标列(PG)
command_char acter cmdchCC在原型中终端能够配置的cmd字符
cursor_addresscupcm屏幕光标移动到#1行#2列(PG)
cursor_downcud1do下移一行
cursor_homehomehoHome光标(假如没有环的话)
cursor_invisiblecivisvi使光标不可见
cursor_leftcub1le把光标向左移一个空格
cursor_mem_address mrcupCM内存相对的光标寻址
cursor_normalcnormve使光标以最普通的外形显示(undovs/vi)
cursor_rightcuf1nd不具备破坏性的空白(光标向右移)
cursor_to_llllll最后一行,第一列(假如没有环的话)
cursor_upcuu1upUpline(光标向上移)
cursor_visiblecvvisvs使光标可见
define_bit_image_region defbiYx定义方形的位映像区(使用tparm)
define_char defcZE定义字符集中的某个字符
delete_char acterdch1dc删除字符(p*)
delete_linedl1dl删除行(p*)
device_typedevtdv显示语言/代码集支持
dis_status_linedslds关闭状态行
display_pc_char dispcS1显示PC字符
down_half_linehdhd向下移动半行(向前换1/2行)
ena_acsenacseA使能另一个字符集合
end_bit_image_region endbi Yy结束位映像区(使用tparm)
enter_alt_char set_mode smacs as开始另一个字符集(p)
enter_am_modesmamSA打开自动对齐特征
enter_blink_modeblink mb打开字符闪烁效果
enter_bold_modeboldmd打开粗体(特别亮)模式
enter_ca_modesmcupti启动使用环的程式的字符串
enter_delete_modesmdcdm删除模式(输入)
enter_dim_modedimmh打开半亮模式
enter_doublewide_mode swidm ZF使能双倍宽度模式
enter_draft_qualitysdrfqZG配置草图效果的打印方式
enter_insert_modesmirim插入模式(输入)
enter_italics_modesitmZH使能斜体字模式
enter_leftward_mode slmZI使能向左回车移动
enter_micro_modesmicmZJ使能宏移动功能
enter_near_letter_quality snlqZK配置NLQ打印
enter_normal_quality snrmqZL配置一般质量的打印方式
enter_pc_char set_mode smpch S2输入PC字符显示模式
enter_protected_mode protmp打开保护模式
enter_reverse_mode revmr打开反转视频模式
enter_scancode_mode smscS4输入PC扫描码
enter_secure_mode invismk打开空白模式(字符不可见)
enter_shadow_mode sshmZM使能阴影打印模式
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_modesmxonSX打开xon/xoff握手机制
erase_char sechec删除#1个字符(PG)
exit_alt_char set_mode rmacs ae终止可选的字符集(P)
exit_am_modermamRA关闭自动对齐方式
exit_attribute_mode sgr0me关闭任何属性
exit_ca_modermcupte终止使用环的程式的字符串
exit_delete_modermdced终止删除模式
exit_doublewide_mode rwidm ZQ关闭双倍宽度打印方式
exit_insert_modermirei结束插入模式
exit_italics_moderitmZR关闭斜体打印模式
exit_leftward_moderlmZS使能右向(普通的)回车移动
exit_micro_modermicmZT关闭宏移动能力
exit_pc_char set_mode rmpch S3关闭PC字符显示
exit_scancode_mode rmsc S5关闭PC扫描码模式
exit_shadow_mode rshmZU关闭阴影打印模式
exit_standout_mode rmsose结束标准输出模式
exit_subscript_mode rsubmZV关掉下标打印方式
exit_superscript_mode rsupm ZW关掉上标打印方式
exit_underline_mode rmulue结束下划线模式
exit_upward_moderumZX打开向下(普通的)回车移动
exit_xon_modermxonRX关掉xon/xoff握手机制
flash_screenflashvb可视响铃(不能移动光标)
form_feedffff硬拷贝终端页面的换页(p*)
from_status_linefslfs从状态行返回
init_1stringis1i1终端初始化字符串
init_2stringis2i2终端初始化字符串
init_3stringis3i3终端初始化字符串
init_fileifif所包含的文档名称
init_progiprogiP初始化程式的路径名
initialize_colorinitcIc初始化颜色的定义
initialize_pairinitpIp初始化颜色对
insert_char acterich1ic插入字符(P)
insert_lineil1al加入一个新的空白行(p*)
insert_paddingipip在插入的字符之后再插入填充字符(p*)
key_a1ka1K1小键盘左上方的键
key_a3ka3K3小键盘右上方的键
key_b2kb2K2小键盘中央的键
key_backspacekbskb由回退键所发送
key_begkbeg1开始键
key_btabkcbtkB向右一tab键
key_c1kc1K4小键盘左下角的键
key_c3kc3K5小键盘右下角的键
key_cancelkcan2取消键
key_catabktbcka由clear_all_tabs键发送
key_clearkclrkC由清除屏幕或删除键发送
key_closekclo3关闭键
key_commandkcmd4命令键
key_copykcpy5拷贝键
key_createkcrt6创建键
key_ctabkctabkt由clear_tab键发送
key_dckdch1kD由删除字符键发送
key_dlkdl1kL由删除行键发送
key_downkcud1kd由终端向下光标键发送
key_eickrmirkM在插入模式中由rmir或smir发送
key_endkend7结束键
key_enterkent8输入/发送键
key_eolkelkE由clear_to_end_of_line键发送
key_eoskedkS由clear_to_end_of_screen键发送
key_exitkext9退出键
key_findkfnd0查找键
key_helpkhlp%1帮助键
key_homekhomekh由home键发送
key_ickich1kl由inschar /enterinsmode键发送
key_ilkil1kA由插入行发送
key_leftkcub1kl由终端向左键发送
key_llkllkH由home_down键发送
key_markkmrk%2标记键
key_messagekmsg%3消息键
key_movekmov%4移动键
key_nextknxt%5下一个键
key_npageknpkN由下页键发送
key_openkopn%6打开键
key_optionskopt%7选项键
key_ppagekppkP由前页键发送
key_previouskprv%8前一键
key_print kprt%9打印键
key_redokrdo%0redo键
key_refrencekref&1引用键
key_refreshkrfr&2刷新键
key_replacekrpl&3替换键
key_restartkrst&4重启键
key_resumekres&5恢复键
key_rightkcuf1kr由终端向右键发送
key_saveksav&6保存键
key_sbegkBEG&9按下开始键的同时按下shift键
key_scancelkCAN&0按下取消键的同时按下shift键
key_scommandkCMD*1按下命令键的同时按下shift键
key_scopykCPY*2按下拷贝键的同时按下shift键
key_screatekCRT*3按下创建键的同时按下shift键
key_sdckDC*4按下删除字符键的同时按下shift键
key_sdlkDL*5按下删除行键的同时按下shift键
key_selectkslt*6选择键
key_sendkEND*7按下结束键的同时按下shift键
key_seolkEOL*8按下行尾键的同时按下shift键
key_sexitkEXT*9按下退出键的同时按下shift键
key_sfkindkF由前滚/下滚键发送
key_sfindkFND*0按下查找键的同时按下shift键
key_shelpkHLP#1按下帮助键的同时按下shift键
key_shomekHOM#2按下Home键的同时按下shift键
key_sickIC#3按下插入字符键的同时按下shift键
key_sleftkLFT#4按下向左键的同时按下shift键
key_smessagekMSG%a按下消息键的同时按下shift键
key_smovekMOV%b按下移动键的同时按下shift键
key_snextkNXT%c按下向后键的同时按下shift键
key_soptionskOPT%d按下选项键的同时按下shift键
key_spreviouskPRV%e按下向前键的同时按下shift键
key_sprint kPRT%f按下打印键的同时按下shift键
key_srkrikR由后滚/下滚键发送
key_sredokRDO%g按下redo键的同时按下shift键
key_sreplacekRPL%h按下替换键的同时按下shift键
key_srightkRIT%l按下向右键的同时按下shift键
key_srsumekRES%j按下恢复键的同时按下shift键
key_ssavekSAV!1按下保存键的同时按下shift键
key_ssuspendkSPD!2按下中断键的同时按下shift键
key_sundokUND!3按下取消键的同时按下shift键
key_stabkhtskT由set_tab键发送
key_suspendkspd&7中断键
key_undokund&8取消键
key_upkcuulku由终端的向上键发送
keypad_localrmkxke不处于“小键盘发送”方式之中
keypad_xmitsmkxks把终端置为“小键盘发送”方式
lab_f0lf0l0假如不是f0的话,则为功能键f0的标签
lab_f1lf1l1假如不是f1的话,则为功能键f1 的标签
lab_f2lf2l2假如不是f2的话,则为功能键f2 的标签
lab_f3lf3l3假如不是f3的话,则为功能键f3 的标签
lab_f4lf4l4假如不是f4的话,则为功能键f4 的标签
lab_f5lf5l5假如不是f5的话,则为功能键f5 的标签
lab_f6lf6l6假如不是f5的话,则为功能键f6 的标签
lab_f7lf7l7假如不是f7的话,则为功能键f7 的标签
lab_f8lf8l8假如不是f8的话,则为功能键f8 的标签
lab_f9lf9l9假如不是f9的话,则为功能键f9 的标签
lab_f10lf10la假如不是f10的话,则为功能键 f10的标签
label_onsmlnLO打开软标签
label_offrmlnLF关闭软标签
meta_offrmmmo关闭“元模式”
meta_onsmmmm打开“元模式”(8位)
micro_column_address mhpa ZY近似宏调整的列—地址,
micro_downmcud1ZZ近似宏调整的光标—向下
micro_leftmcutb1Za近似宏调整的光标—向左
micro_rightmcuf1Zb近似宏调整的光标—向右
micro_row_address mvpaZc近似宏调整的行—地址
micro_upmcuu1Zd近似宏调整的光标—向上
newlinenelnw新行(行为近似于cr后跟lf)
order_of_pinsporderZe匹配软件连同打印头中的针
orig_colorsococ重置任何的颜色对
orig_pairopop把默认的颜色对配置为原始的那 个
pad_char padpc填充字符(非空)
parm_dchdchDC删除#1字符(PG*)
parm_delete_linedlDL删除#1行(PG*)
parm_down_cursor cudDO把光标向下移#1行(PG*)
parm_down_micro mcudZf近似宏调用的cub
parm_ichichIC插入#1个空白符号(PG*)
parm_indexindnSF向上滚动#1行(PG)
parm_insert_lineilAL加入#1个新的空白行(PG*)
parm_left_cursorcubLE把光标向左移#1个空格(PG)
parm_left_micromcubZg近似宏调整中的cub
parm_right_cursor cufRl把光标向右移#1个空格(PG*)
parm_right_micromcufZh近似宏调整中的cuf
parm_rindexrinSR回滚#1行(PG)
parm_up_cursorcuuUP把光标上移#1行(PG*)
parm_up_micromcuuZi近似宏调整中的cuu
pkey_keypfkeypk把功能键#1定义为字符#2的类型
pkey_localpflocpl把功能键#1定义为执行字符串#2
pkey_xmitpfxpx把功能键#1定义为发送字符串#2
pkey_plabpfxlxl把功能键#1定义为发送#2,并显示#3
plab_normplnpn编程标签#1,以显示字符串#2
print _screenmc0ps打印屏幕内容
prtr_nonmc5ppO打开打印机,打印#1个字节
prtr_offmc4pf关闭打印机
prtr_onmc5po打开打印机
repeat_char reprp把字符#1重复#2次(PG*)
req_for_inputrfiRF输入请求
reset_1stringrs1r1把终端完全置为sane方式
reset_2stringrs2r2把终端完全置为sane方式
reset_3stringrs3r3把终端完全置为sane方式
reset_filerfrf包含重置字符串的文档名称
restore_cursorrcrc把光标置为上一个屏幕上的位置
row_addressvpacv垂直绝对位置(配置行)(PG)
save_cursorscsc保存光标位置(P)
scancode_escapescescS7为了扫描码模拟按下Esc键
scroll_forwardindsf把文本向上滚动(P)
scroll_reverserisr把文本向下滚动(P)
select_char _setscsZj选择字符集
set0_des_seqs0dss0转换到代码集0(EUC集0,ASCII)
set1_des_seqs1dss1转换到代码集1
set2_des_seqs2dss2转换到代码集2
set3_des_seqs3dss3转换到代码集3
set_a_backgroundsetabAB使用ANSI配置背景颜色
set_a_foregroundsetafAF使用ANSI配置前景颜色
set_attributessgrsa定义视频属性(PG9)
set_backgroundsetbSb配置当前背景颜色
set_bottom_marginsmgbZk配置当前行的底部边界
set_bottom_margin_parm smgbp ZI从bottomset_color_band的#1行或#2行配置底行
setcolorYz改变#1号色带颜色
set_color_pairscpsp配置当前颜色对
set_foregroundsetfSf配置当前前景色
set_left_marginsmglML配置当前行的左边界
set_left_margin_parm smglpZm在#1行(#2行)配置左(右)边界
set_lr_marginsmglrML配置左右边界
set_page_lengthslinesYZ把页的长度配置为#1行(使用tparm)
set_right_marginsmgrMR把右边界配置为当前列
set_right_margin_parm smgrp Zn把右边界配置为#1列
set_tabhtsst在当前列的任何行配置制表符
set_tb_marginsmgtbMT配置上下边界
set_top_marginsmgtZo把上边界配置为当前行
set_top_margin_parm smgtp Zp把上边界配置为#1行
set_WINDOW windwi当前窗口是从#1行到#2行,从#3 列到#4列
start_bit_imagesbimZq开始打印位映像图像
start_char _set_def scsdZr开始定义字符集
stop_bit_imagerbimZs结束打印位映像图像
stop_char _set_def rcsdZt结束定义字符集
subscript_char acters subcs Zu下标字符的列表
superscript_char acters supcs Zv 上标字符的列表
tabhtta跳转到下面8个空格硬件的制表符位置
these_cause_crdocrZw这些字符导致CR
to_status_linetslts跳到状态行,第1列
underline_char ucuc给某字符划下划线,并移过他
up_half_linehuhu上移半行(反转1/2行)
xoff_char actercoffcXFXON字符
xon_char acterxoncXNXOFF字符
(下面的字符串权能是在SYSVr终端结构中定义的,但在man帮助信息中还
未作描述,对他们的解释是从终端结构头文档中得到的。)
label_formatflnLf??
set_clocksclkSC配置时钟
display_clockdclkDK显示时钟
remove_clockrmclkRC删除时钟
create_WINDOW cwinCW把窗口#1定义为从#2行,#3列到#4 行,#5列
goto_WINDOW wingoWG跳到窗口#1
hanguphupHU挂起电话
dial_phonedialDI拨电话号码#1
quick_dialqdialQD拨电话号码#1,但不做进度检查
tonetoneTO选择接触声调拨叫
pulsepulsePU选择脉冲拨叫
flash_hookhookfh闪光转换分支
fixed_pausepausePA暂停2~3秒
wait_tonewaitWA等待拨叫声音
user0u0u0用户字符串#0
user1u1u1用户字符串#1
user2u2u2用户字符串#2
user3u3u3用户字符串#3
user4u4u4用户字符串#4
user5u5u5用户字符串#5
user6u6u6用户字符串#6
user7u7u7用户字符串#7
user8u8u8用户字符串#8
user9u9u9用户字符串#9
get_mousegetmGmsurses 应获得按钮事件
key_mousekmousKm??
mouse_infominfoMi鼠标状态信息
pc_term_optionspctrmS6PC终端选项
req_mouse_posreqmpRQ请求鼠标位置报告
zero_motionzeromZx后继字符没有移动