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