⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 corses笔记.txt

📁 curses界面编程
💻 TXT
📖 第 1 页 / 共 4 页
字号:
(正如在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() 


8.21.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握手机制 
8.21.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在双宽度模式中字符间距的大小 

8.21.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打开空白模式(字符不可见) 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -