📄 corses笔记.txt
字号:
(正如在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 + -