分享
 
 
 

curses开发包的man_page

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

这是第一篇,由于平时比较忙,所以只能利用晚上的时间来译,今后还会有其他的相关译出来.

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();

noecho();

也有多数程序会按这个顺序:

nonl();

intrflush(stdscr,FALSE);

keypad(stdscr,TRUE);

在你运行一个curses()程序前,如果终端定义了tab键宽度,则必须对其进行设置并在初始化串中输出,你可以在shell环境变量TERM输出后用命令tput_init来设置。(参见terminfo(F)和terminfo(M)以获取详细信息)。

curses()库允许你操纵叫做窗口的数据结构,窗口可以看作是二维的字符数组。此例程库提供了一个默认的窗口stdscr,就是整个终端的大小。你可以用newwin()来创建其他的窗口。

窗口由声明为WINDOW *的变量来引用。这些数据结构的操纵由在cursesr 的帮助文件中描述的例程来进行(这些例程均以"curs_"开头)。其中最基本的例程是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>&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两种状态;该标志总是布尔型的.变量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)

p

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有