免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3946 | 回复: 13
打印 上一主题 下一主题

[SCO UNIX] curses开发包的man_page [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-12-03 16:19 |只看该作者 |倒序浏览
这是第一篇,由于平时比较忙,所以只能利用晚上的时间来译,今后还会有其他的相关译出来.
  curses(S)
  *********
  ____________________________________________________________________________
curses-CRT屏幕处理与优化包
语法
  ======
  cc ... -lcurses
  #include <curses.h>;
描述
  ===========
  curses库例程为用户提供了一个独立于终端的、对更新字符屏幕进行合理优化的方法,使用这些例程的程序必须使用-lcurses选项进行编译。
curses包允许:
   o 全屏幕,窗口和光条操纵
   o 输出到窗口和光条
   o读取终端输入
   o控制终端与光标的输入和输出选项
   o环境查询例程
   o色彩操纵
   o使用软标签键
   o终端信息的存取
   o使用低级curses例程
  在使用任何一个处理窗口与屏幕的例程之前,必须调用initscr或newterm对例程进行初始化。
在退出前必须调用endwin例程。大多数交互的,面向屏幕的程序需要无回显的单字符输入,要达到此目的,要按以下顺序进行:
  cbreak()&#59;
  noecho()&#59;
也有多数程序会按这个顺序:
  nonl()&#59;
  intrflush(stdscr,FALSE)&#59;
  keypad(stdscr,TRUE)&#59;

在你运行一个curses()程序前,如果终端定义了tab键宽度,则必须对其进行设置并在初始化串中输出,你可以在shell环境变量TERM输出后用命令tput_init来设置。(参见terminfo(F)和terminfo(M)以获取详细信息)。
curses()库允许你操纵叫做窗口的数据结构,窗口可以看作是二维的字符数组。此例程库提供了一个默认的窗口stdscr,就是整个终端的大小。你可以用newwin()来创建其他的窗口。
窗口由声明为WINDOW *的变量来引用。这些数据结构的操纵由在cursesr 的帮助文件中描述的例程来进行(这些例程均以&quot;curs_&quot;开头)。其中最基本的例程是move()和addch()。库中包含了这些例程的更为通用的版本,可以让你指定一个窗口。
在例程完成对一个窗口的维护后,调用refresh()告诉curses()使用户的屏幕看上去更象stdscr.窗口中的字符实际上是chtype类型(包括字符和属性数据)以便将有关字符的其他信息与每个字符一同存贮.
叫做光条(pad)的窗口同样可以维护.他们也是一些窗口,但可能不与屏幕中的一个可视的区域相关联.参考cur_pad(S)可得到更多的信息.
除了在屏幕上显示字符以外,你也可使用视频属性和色彩,输出加下划线的字符,反显的图象,或在支持彩色模式的终端上显示彩色字符.你还可输出带有删除线的字符.(line-drawing是批带有删除线还是指用线条画出的字符?)对于输入,curses()也可将方向键和功能键的转义序列译为单独的键值.视频属性,划线字符和输入键名,在curses.h中定义,如A_REVERSE, ACS_HLINE, 和 KEY_LEFT.
curses()中也有操纵彩色数字字符终端上色彩显示的例程.使用时,要先调用start_color(),通常是在initscr()后马上调用.彩色通常成对使用,称为色彩对.一个色彩对有一个前景色(字符颜色)和一个背景色(字符在其上显示的区域的颜色).
你在使用时要用init_pair()例程对一个色彩对进行初始化.初始化后,就能象使用其他视频属性一样使用在curses.h中定义的一个宏COLOR_PAIR(n).如果终端可以重新定义彩色,那么以下的例程很有用处:
   o has_color根据终端是否支持彩色返回TRUE或FALSE.
   o can_change_color()根据用户是否可以改变颜色返回TRUE或FALSE.
   o color_content( )向用户报告在一个初始化的颜色中红绿蓝的数量.
   o pair_content( )向用户报告当前的特定彩色对是如何定义的.
   o init_color( ) 改变一个彩色的定义.
如果设置了环境变量LINES和COLUMNS ,或者如果程序在一个窗口环境中运行,则环境中的行列信息会覆盖由terminfo()读取的信息.在窗口环境中运行的程序需要这么做是因为屏幕是可以改变的.
如果设置了环境变量TERMINFO,则所有使用curses()的程序在标准位置查找终端定义的信息前,都要先查找本地的终端定义信息.比如,如果TERM设为wyse150,则编译的终端定义位于:
html.awk: part.03: 1917: Trying to use .nf indisplay, haventstarted.
fi  1>;&amp;2  /usr/lib/terminfo/w/wyse150
(注:此处我有些看不懂,反复读了原文有N遍,怀疑是不是其manual_page页的问题,总之,如有问题,请指正,译者注)(w由wyse150的首字母拷贝而来,以免创建一个大目录),而如果TERMINFO设为$HOME/myterms,curses()首先查找$HOME/myterms/w/wyse150,如果失败,再查找/usr/lib/terminfo/w/wyse150 .这样做对于开发实验性的定义或者在/usr/lib/terminfo的写权限禁止时很有用.
整型变量LINES和COLS在curses.h中定义,而且由initscr()例程根据屏幕大小填写.常量TRUE值为1,FALSE值为0.
curses例程还定义了WINDOW *变量curscr,用在某些低级操作如清除或重写屏幕的操作中.但它只能在很少的几个例程中使用。
国际化功能
  +++++++++++++++++++++++
对附加字符集,保存一个字符所需的字节数和列数是现场指定的.(LC_CTYPE类型)
你可以在字符种类表中指定它(指LC_CTYPE,译者注).使其在编辑时完全适于字符级操作.
但对于格式屏幕,在其上随意移动字符却并不太好.
覆盖字符的例程(如addch())工作于屏幕级别.用一个需要不同列数的字符覆盖另一个字符会导致产生奇数个数的列,这些列用背景字符填充.
插入字符的例程(如insch())工作于字符级别(即在字符的边界).一个新字符在当前字符的前面插入,无论光标当前指向字符的哪一列.在插入前,光标移动到字符的第一列.
删除字符的例程(如delch())同样工作于字符级别.光标当前指向的字符被删除,无论光标当前指向字符的哪一列.在删除前,光标移动到字符的第一列.
你不能把一个多列字符放到一行的最后一列上.如果你企图这样做,最后一列被设为背景字符.这样的操作也会产生由背景字符填充的奇数列.
在做了覆盖一个窗口的边缘的字符的操作后,会发生窗口的遮挡或覆盖.这果如果产生有奇数列,将与字符操作级别同样处理。
光标可放于窗口的任意位置.在插入或删除操作前,它先移动到一个多列字符的第一列.
例程与参数名称
  ++++++++++++++++++++++++++
许多curses()例程拥有两个或更多版本:
   o前缀为p的例程需要一个pad参数.
   o名字中有w的例程通常需要一个窗口参数或一个宽字符参数.如果w在一个例程名字中出现了两次,则该例程往往需要一个窗口参数和一个宽字符参数.
   o不需要pad或window参数的例程一般使用stdscr.
   o前缀为mv的需要一个(x,y)坐标以在操作前移动到该坐标处.这些mv例程在调用其他例程前隐含有一个对move()的调用,坐标y指(窗口的)行,x指列.左上角坐标是(0,0),而不是(1,1).
   o前缀为mvw的例程接受一个窗口参数和一对(x,y)坐标,窗口参数总是出现在坐标之前.
  在任何一种情形下,win是受影响的窗口,pad是受影响的光条,win和pad总是指向WINDOW类型的指针,设定选项的例程需要一个布尔型的标志bf,它有TRUE和FALSE两种状态&#59;该标志总是布尔型的.变量ch和attrs总是chtype类型.类型WINDOW,SCREEN,bool和chtype在curses.h中定义.类型TERMINAL在term.h中定义.其他所有的参数都是整型.许多例程可以通过将其作为嵌入宏的方式的加入优化.在编译时要使用:
cc ... -DPERFORMANCE 来明确指定.
  例程名索引
  ++++++++++++++++++
  下面的表格列出了每个curses例程名字和手册中对其详细描述的页面名
   -------------------------------------------
   curses Routine Name  Manual Page Name
   -------------------------------------------
   addch  curs_addch(S)
   addchnstr  curs_addchstr(S)
   addchstr  curs_addchstr(S)
   addnstr  curs_addstr(S)
   addnwstr  curs_addwstr(S)
   addstr  curs_addstr(S)
   addwch  curs_addwch(S)
   addwchnstr  curs_addwchstr(S)
   addwchstr  curs_addwchstr(S)
   addwstr  curs_addwstr(S)
   attroff  curs_attr(S)
   attron  curs_attr(S)
   attrset  curs_attr(S)
   baudrate  curs_termattrs(S)
   beep  curs_beep(S)
   bkgd  curs_bkgd(S)
   bkgdset  curs_bkgd(S)
   border  curs_border(S)
   box  curs_border(S)
   can_change_color  curs_color(S)
   cbreak  curs_inopts(S)
   clear  curs_clear(S)
   clearok  curs_outopts(S)
   clrtobot  curs_clear(S)
   clrtoeol  curs_clear(S)
   color_content  curs_color(S)
   copywin  curs_overlay(S)
   curs_set  curs_kernel(S)
   def_prog_mode  curs_kernel(S)
   def_shell_mode  curs_kernel(S)
   del_curterm  curs_terminfo(S)
   delay_output  curs_util(S)
   delch    curs_delch(S)
   deleteln  curs_deleteln(S)
   delscreen  curs_initscr(S)
   delwin  curs_window(S)
   derwin  curs_window(S)
   doupdate  curs_refresh(S)
   draino  curs_util(S)
   dupwin  curs_window(S)
   echo  curs_inopts(S)
   echochar  curs_addch(S)
   echowchar  curs_addwch(S)
   endwin  curs_initscr(S)
   erase    curs_clear(S)
   erasechar  curs_termattrs(S)
   filter  curs_util(S)
   flash  curs_beep(S)
   flushinp  curs_util(S)
   getbegyx  curs_getyx(S)
   getch    curs_getch(S)
   getmaxyx  curs_getyx(S)
   getnwstr  curs_getwstr(S)
   getparyx  curs_getyx(S)
   getstr  curs_getstr(S)
   getsyx  curs_kernel(S)
   getwch  curs_getwch(S)
   getwin  curs_util(S)
   getwstr  curs_getwstr(S)
   getyx    curs_getyx(S)
   halfdelay  curs_inopts(S)
   has_colors  curs_color(S)
   has_ic  curs_termattrs(S)
   has_il  curs_termattrs(S)
   hline    curs_border(S)
   idcok  curs_outopts(S)
   idlok  curs_outopts(S)
   immedok  curs_outopts(S)
   inch  curs_inch(S)
   inchnstr  curs_inchstr(S)
   inchstr  curs_inchstr(S)
   init_color  curs_color(S)
   init_pair  curs_color(S)
   initscr  curs_initscr(S)
   innstr  curs_instr(S)
   innwstr  curs_inwstr(S)
   insch  curs_insch(S)
   insdelln  curs_deleteln(S)
   insertln  curs_deleteln(S)
   insnstr  curs_insstr(S)
   insnwstr  curs_inswstr(S)
   insstr  curs_insstr(S)
   instr  curs_instr(S)
   inswch  curs_inswch(S)
   inswstr  curs_inswstr(S)
   intrflush  curs_inopts(S)
   inwch  curs_inwch(S)
   inwchnstr  curs_inwchstr(S)
   inwchstr  curs_inwchstr(S)
   inwstr  curs_inwstr(S)
   is_linetouched  curs_touch(S)
   is_wintouched  curs_touch(S)
   isendwin  curs_initscr(S)
   keyname  curs_util(S)
   keypad  curs_inopts(S)
   killchar  curs_termattrs(S)
   leaveok  curs_outopts(S)
   longname  curs_termattrs(S)
   meta  curs_inopts(S)
   move  curs_move(S)
   mvaddch  curs_addch(S)
   mvaddchnstr  curs_addchstr(S)
   mvaddchstr  curs_addchstr(S)
   mvaddnstr  curs_addstr(S)
   mvaddnwstr  curs_addwstr(S)
   mvaddstr  curs_addstr(S)
   mvaddwch  curs_addwch(S)
   mvaddwchnstr  curs_addwchstr(S)
   mvaddwchstr  curs_addwchstr(S)
   mvaddwstr  curs_addwstr(S)
   mvcur  curs_terminfo(S)
   mvdelch  curs_delch(S)
   mvderwin  curs_window(S)
   mvgetch  curs_getch(S)
   mvgetnwstr  curs_getwstr(S)
   mvgetstr  curs_getstr(S)
   mvgetwch  curs_getwch(S)
   mvgetwstr  curs_getwstr(S)
   mvinch  curs_inch(S)
   mvinchnstr  curs_inchstr(S)
   mvinchstr  curs_inchstr(S)
   mvinnstr  curs_instr(S)
   mvinnwstr  curs_inwstr(S)
   mvinsch  curs_insch(S)
   mvinsnstr  curs_insstr(S)
   mvinsnwstr  curs_inswstr(S)
   mvinsstr  curs_insstr(S)
   mvinstr  curs_instr(S)
   mvinswch  curs_inswch(S)
   mvinswstr  curs_inswstr(S)
   mvinwch  curs_inwch(S)
   mvinwchnstr  curs_inwchstr(S)
   mvinwchstr  curs_inwchstr(S)
   mvinwstr  curs_inwstr(S)
   mvprintw  curs_printw(S)
   mvscanw  curs_scanw(S)
   mvwaddch  curs_addch(S)
   mvwaddchnstr  curs_addchstr(S)
   mvwaddchstr  curs_addchstr(S)
   mvwaddnstr  curs_addstr(S)
   mvwaddnwstr  curs_addwstr(S)
   mvwaddstr  curs_addstr(S)
   mvwaddwch  curs_addwch(S)
   mvwaddwchnstr  curs_addwchstr(S)
   mvwaddwchstr  curs_addwchstr(S)
   mvwaddwstr  curs_addwstr(S)
   mvwdelch  curs_delch(S)
   mvwgetch  curs_getch(S)
   mvwgetnwstr  curs_getwstr(S)
   mvwgetstr  curs_getstr(S)
   mvwgetwch  curs_getwch(S)
   mvwgetwstr  curs_getwstr(S)
   mvwin  curs_window(S)
   mvwinch  curs_inch(S)
   mvwinchnstr  curs_inchstr(S)
   mvwinchstr  curs_inchstr(S)
   mvwinnstr  curs_instr(S)
   mvwinnwstr  curs_inwstr(S)
   mvwinsch  curs_insch(S)
   mvwinsnstr  curs_insstr(S)
   mvwinsstr  curs_insstr(S)
   mvwinstr  curs_instr(S)
   mvwinswch  curs_inswch(S)
   mvwinswstr  curs_inswstr(S)
   mvwinwch  curs_inwch(S)
   mvwinwchnstr  curs_inwchstr(S)
   mvwinwchstr  curs_inwchstr(S)
   mvwinwstr  curs_inwstr(S)
   mvwprintw  curs_printw(S)
   mvwscanw  curs_scanw(S)
   napms  curs_kernel(S)
   newpad  curs_pad(S)
   newterm  curs_initscr(S)
   newwin  curs_window(S)
   nl  curs_outopts(S)
   nocbreak  curs_inopts(S)
   nodelay  curs_inopts(S)
   noecho  curs_inopts(S)
   nonl  curs_outopts(S)
   noqiflush  curs_inopts(S)
   noraw  curs_inopts(S)
   notimeout  curs_inopts(S)
   overlay  curs_overlay(S)
   overwrite  curs_overlay(S)
   pair_content  curs_color(S)
   pechochar  curs_pad(S)
   pechowchar  curs_pad(S)
   pnoutrefresh  curs_pad(S)
   prefresh  curs_pad(S)
   printw  curs_printw(S)
   putp  curs_terminfo(S)
   putwin  curs_util(S)
   qiflush  curs_inopts(S)
   raw  curs_inopts(S)
   redrawwin  curs_refresh(S)
   refresh  curs_refresh(S)
   reset_prog_mode  curs_kernel(S)
   reset_shell_mode  curs_kernel(S)
   resetty  curs_kernel(S)
   restartterm  curs_terminfo(S)
   ripoffline  curs_kernel(S)
   savetty  curs_kernel(S)
   scanw  curs_scanw(S)
   scr_dump  curs_scr_dump(S)
   scr_init  curs_scr_dump(S)
   scr_restore  curs_scr_dump(S)
   scr_set  curs_scr_dump(S)
   scrl  curs_scroll(S)
   scroll  curs_scroll(S)
   scrollok  curs_outopts(S)
   set_curterm  curs_terminfo(S)
   set_term  curs_initscr(S)
   setscrreg  curs_outopts(S)
   setsyx  curs_kernel(S)
   setterm  curs_terminfo(S)
   setupterm  curs_terminfo(S)
   slk_attroff  curs_slk(S)
   slk_attron  curs_slk(S)
   slk_attrset  curs_slk(S)
   slk_clear  curs_slk(S)
   slk_init  curs_slk(S)
   slk_label  curs_slk(S)
   slk_noutrefresh  curs_slk(S)
   slk_refresh  curs_slk(S)
   slk_restore  curs_slk(S)
   slk_set  curs_slk(S)
   slk_touch  curs_slk(S)
   standend  curs_attr(S)
   standout  curs_attr(S)
   start_color  curs_color(S)
   subpad  curs_pad(S)
   subwin  curs_window(S)
   syncok  curs_window(S)
   termattrs  curs_termattrs(S)
   termname  curs_termattrs(S)
   tgetent  curs_termcap(S)
   tgetflag  curs_termcap(S)
   tgetnum  curs_termcap(S)
   tgetstr  curs_termcap(S)
   tgoto  curs_termcap(S)
   tigetflag  curs_terminfo(S)
   tigetnum  curs_terminfo(S)
   tigetstr  curs_terminfo(S)
   timeout  curs_inopts(S)
   touchline  curs_touch(S)
   touchwin  curs_touch(S)
   tparm  curs_terminfo(S)
   tputs  curs_termcap(S)
   tputs  curs_terminfo(S)
   typeahead  curs_inopts(S)
   unctrl  curs_util(S)
   ungetch  curs_getch(S)
   ungetwch  curs_getwch(S)
   untouchwin  curs_touch(S)
   use_env  curs_util(S)
   vidattr  curs_terminfo(S)
   vidputs  curs_terminfo(S)
   vline  curs_border(S)
   vwprintw  curs_printw(S)
   vwscanw  curs_scanw(S)
   waddch  curs_addch(S)
   waddchnstr  curs_addchstr(S)
   waddchstr  curs_addchstr(S)
   waddnstr  curs_addstr(S)
   waddnwstr  curs_addwstr(S)
   waddstr  curs_addstr(S)
   waddwch  curs_addwch(S)
   waddwchnstr  curs_addwchstr(S)
   waddwchstr  curs_addwchstr(S)
   waddwstr  curs_addwstr(S)
   wattroff  curs_attr(S)
   wattron  curs_attr(S)
   wattrset  curs_attr(S)
   wbkgd  curs_bkgd(S)
   wbkgdset  curs_bkgd(S)
   wborder  curs_border(S)
   wclear  curs_clear(S)
   wclrtobot  curs_clear(S)
   wclrtoeol  curs_clear(S)
   wcursyncup  curs_window(S)
   wdelch  curs_delch(S)
   wdeleteln  curs_deleteln(S)
   wechochar  curs_addch(S)
   wechowchar  curs_addwch(S)
   werase  curs_clear(S)
   wgetch  curs_getch(S)
   wgetnstr  curs_getstr(S)
   wgetnwstr  curs_getwstr(S)
   wgetstr  curs_getstr(S)
   wgetwch  curs_getwch(S)
   wgetwstr  curs_getwstr(S)
   whline  curs_border(S)
   winch  curs_inch(S)
   winchnstr  curs_inchstr(S)
   winchstr  curs_inchstr(S)
   winnstr  curs_instr(S)
   winnwstr  curs_inwstr(S)
   winsch  curs_insch(S)
   winsdelln  curs_deleteln(S)
   winsertln  curs_deleteln(S)
   winsnstr  curs_insstr(S)
   winsnwstr  curs_inswstr(S)
   winsstr  curs_insstr(S)
   winstr  curs_instr(S)
   winswch  curs_inswch(S)
   winswstr  curs_inswstr(S)
   winwch  curs_inwch(S)
   winwchnstr  curs_inwchstr(S)
   winwchstr  curs_inwchstr(S)
   winwstr  curs_inwstr(S)
   wmove  curs_move(S)
   wnoutrefresh  curs_refresh(S)
   wprintw  curs_printw(S)
   wredrawln  curs_refresh(S)
   wrefresh  curs_refresh(S)
   wscanw  curs_scanw(S)
   wscrl  curs_scroll(S)
   wsetscrreg  curs_outopts(S)
   wstandend  curs_attr(S)
   wstandout  curs_attr(S)
   wsyncdown  curs_window(S)
   wsyncup  curs_window(S)
   wtimeout  curs_inopts(S)
   wtouchln  curs_touch(S)
   wvline  curs_border(S)
返回值
  =============
除非在例程描述中特别声明,否则,通常返回整数的例程返回ERR代表错误,返回非ERR的整数,通常是OK,代表成功.
除setscrreg( ),  wsetscrreg( ), getyx(), getbegyx( ),and getmaxyx( )外, 所有的宏返回窗口版本值.这些例外的例程的返回值未定义,所以在分配语句中不要将其作为最好的方法.
返回指针的例程返回NULL代表出错.
警告
========
头文件curses.h自动包含有stdio.h和unctrl.h两个头文件.
文件
========
/usr/lib/libcurses.a
库文件
  See also
参见
============
terminfo(F), terminfo(M), andcurs_*(S)获取更详细的例程描述
标准一致性
  =====================
curses(S)不是任何当前支持标准的一部分&#59;它是由UNIX System Laboratories, Inc.开发且要经许可才能使用.
  31_January_1995
Johnsilver译
2002/11/30
本人的E文能力一般,还望各位在此方面有专长的高手指教,愿与大家交朋友.
我的email:zkzxl@etang.com

论坛徽章:
0
2 [报告]
发表于 2002-12-03 16:43 |只看该作者

curses开发包的man_page

晚上来消化

论坛徽章:
0
3 [报告]
发表于 2002-12-03 16:45 |只看该作者

curses开发包的man_page

已经贴下来了。对  johnsilver   表示感谢和敬佩!

论坛徽章:
0
4 [报告]
发表于 2002-12-03 18:20 |只看该作者

curses开发包的man_page

是汉化版的man curses吧。很好啊。很全面。

论坛徽章:
0
5 [报告]
发表于 2002-12-03 18:21 |只看该作者

curses开发包的man_page

如果能更全面的介绍一下,所讲的函数就更好了。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2002-12-03 19:04 |只看该作者

curses开发包的man_page

谢谢!

论坛徽章:
0
7 [报告]
发表于 2002-12-03 19:26 |只看该作者

curses开发包的man_page

很不错,顶一下

论坛徽章:
0
8 [报告]
发表于 2002-12-03 19:58 |只看该作者

curses开发包的man_page

以后多些这种贴子。谢谢了。

论坛徽章:
0
9 [报告]
发表于 2002-12-03 20:06 |只看该作者

curses开发包的man_page

斑竹加入精华区吧。

论坛徽章:
0
10 [报告]
发表于 2002-12-04 17:39 |只看该作者

curses开发包的man_page

真得很好呀!能不能再详细说一下所列函数的用法!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP