[root@localhost C]# echo $TERM
xterm
[root@localhost ~]# infocmp vt100
# Reconstructed via infocmp from file: /usr/share/terminfo/v/vt100
vt100|vt100-am|dec vt100 (w/advanced video),
am, mc5i, msgr, xenl, xon,
cols#80, it#8, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\\E[5m$<2>, bold=\\E[1m$<2>,
clear=\\E[H\\E[J$<50>, cr=^M, csr=\\E[%i%p1%d;%p2%dr,
cub=\\E[%p1%dD, cub1=^H, cud=\\E[%p1%dB, cud1=^J,
cuf=\\E[%p1%dC, cuf1=\\E[C$<2>,
cup=\\E[%i%p1%d;%p2%dH$<5>, cuu=\\E[%p1%dA,
cuu1=\\E[A$<2>, ed=\\E[J$<50>, el=\\E[K$<3>, el1=\\E[1K$<3>,
enacs=\\E(B\\E)0, home=\\E[H, ht=^I, hts=\\EH, ind=^J, ka1=\\EOq,
ka3=\\EOs, kb2=\\EOr, kbs=^H, kc1=\\EOp, kc3=\\EOn, kcub1=\\EOD,
kcud1=\\EOB, kcuf1=\\EOC, kcuu1=\\EOA, kent=\\EOM, kf0=\\EOy,
kf1=\\EOP, kf10=\\EOx, kf2=\\EOQ, kf3=\\EOR, kf4=\\EOS, kf5=\\EOt,
kf6=\\EOu, kf7=\\EOv, kf8=\\EOl, kf9=\\EOw, lf1=pf1, lf2=pf2,
lf3=pf3, lf4=pf4, mc0=\\E[0i, mc4=\\E[4i, mc5=\\E[5i, rc=\\E8,
rev=\\E[7m$<2>, ri=\\EM$<5>, rmacs=^O, rmam=\\E[?7l,
rmkx=\\E[?1l\\E>, rmso=\\E[m$<2>, rmul=\\E[m$<2>,
rs2=\\E>\\E[?3l\\E[?4l\\E[?5l\\E[?7h\\E[?8h, sc=\\E7,
sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\\016%e\\017%;$<2>,
sgr0=\\E[m\\017$<2>, smacs=^N, smam=\\E[?7h, smkx=\\E[?1h\\E=,
smso=\\E[7m$<2>, smul=\\E[4m$<2>, tbc=\\E[3g,
[root@localhost ~]# infocmp xterm
# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm
xterm|xterm terminal emulator (X Window System),
am, bce, km, mc5i, mir, msgr, npc, xenl,
colors#8, cols#80, it#8, lines#24, pairs#64,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\\E[5m, bold=\\E[1m, cbt=\\E[Z, civis=\\E[?25l,
clear=\\E[H\\E[2J, cnorm=\\E[?12l\\E[?25h, cr=^M,
csr=\\E[%i%p1%d;%p2%dr, cub=\\E[%p1%dD, cub1=^H,
cud=\\E[%p1%dB, cud1=^J, cuf=\\E[%p1%dC, cuf1=\\E[C,
cup=\\E[%i%p1%d;%p2%dH, cuu=\\E[%p1%dA, cuu1=\\E[A,
cvvis=\\E[?12;25h, dch=\\E[%p1%dP, dch1=\\E[P, dl=\\E[%p1%dM,
dl1=\\E[M, ech=\\E[%p1%dX, ed=\\E[J, el=\\E[K, el1=\\E[1K,
flash=\\E[?5h$<100/>\\E[?5l, home=\\E[H, hpa=\\E[%i%p1%dG,
ht=^I, hts=\\EH, ich=\\E[%p1%d@, il=\\E[%p1%dL, il1=\\E[L,
ind=^J, indn=\\E[%p1%dS, invis=\\E[8m,
is2=\\E[!p\\E[?3;4l\\E[4l\\E>, kDC=\\E[3;2~, kEND=\\E[1;2F,
kHOM=\\E[1;2H, kIC=\\E[2;2~, kLFT=\\E[1;2D, kNXT=\\E[6;2~,
kPRV=\\E[5;2~, kRIT=\\E[1;2C, kb2=\\EOE, kbs=\\177, kcbt=\\E[Z,
kcub1=\\EOD, kcud1=\\EOB, kcuf1=\\EOC, kcuu1=\\EOA,
kdch1=\\E[3~, kend=\\EOF, kent=\\EOM, kf1=\\EOP, kf10=\\E[21~,
kf11=\\E[23~, kf12=\\E[24~, kf13=\\EO2P, kf14=\\EO2Q,
kf15=\\EO2R, kf16=\\EO2S, kf17=\\E[15;2~, kf18=\\E[17;2~,
kf19=\\E[18;2~, kf2=\\EOQ, kf20=\\E[19;2~, kf21=\\E[20;2~,
kf22=\\E[21;2~, kf23=\\E[23;2~, kf24=\\E[24;2~, kf25=\\EO5P,
kf26=\\EO5Q, kf27=\\EO5R, kf28=\\EO5S, kf29=\\E[15;5~,
kf3=\\EOR, kf30=\\E[17;5~, kf31=\\E[18;5~, kf32=\\E[19;5~,
kf33=\\E[20;5~, kf34=\\E[21;5~, kf35=\\E[23;5~,
kf36=\\E[24;5~, kf37=\\EO6P, kf38=\\EO6Q, kf39=\\EO6R,
kf4=\\EOS, kf40=\\EO6S, kf41=\\E[15;6~, kf42=\\E[17;6~,
kf43=\\E[18;6~, kf44=\\E[19;6~, kf45=\\E[20;6~,
kf46=\\E[21;6~, kf47=\\E[23;6~, kf48=\\E[24;6~, kf49=\\EO3P,
kf5=\\E[15~, kf50=\\EO3Q, kf51=\\EO3R, kf52=\\EO3S,
kf53=\\E[15;3~, kf54=\\E[17;3~, kf55=\\E[18;3~,
kf56=\\E[19;3~, kf57=\\E[20;3~, kf58=\\E[21;3~,
kf59=\\E[23;3~, kf6=\\E[17~, kf60=\\E[24;3~, kf61=\\EO4P,
kf62=\\EO4Q, kf63=\\EO4R, kf7=\\E[18~, kf8=\\E[19~, kf9=\\E[20~,
khome=\\EOH, kich1=\\E[2~, kind=\\E[1;2B, kmous=\\E[M,
knp=\\E[6~, kpp=\\E[5~, kri=\\E[1;2A, mc0=\\E[i, mc4=\\E[4i,
mc5=\\E[5i, meml=\\El, memu=\\Em, op=\\E[39;49m, rc=\\E8,
rev=\\E[7m, ri=\\EM, rin=\\E[%p1%dT, rmacs=\\E(B, rmam=\\E[?7l,
rmcup=\\E[?1049l, rmir=\\E[4l, rmkx=\\E[?1l\\E>, rmso=\\E[27m,
rmul=\\E[24m, rs1=\\Ec, rs2=\\E[!p\\E[?3;4l\\E[4l\\E>, sc=\\E7,
setab=\\E[4%p1%dm, setaf=\\E[3%p1%dm,
setb=\\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
setf=\\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
sgr=%?%p9%t\\E(0%e\\E(B%;\\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
sgr0=\\E(B\\E[m, smacs=\\E(0, smam=\\E[?7h, smcup=\\E[?1049h,
smir=\\E[4h, smkx=\\E[?1h\\E=, smso=\\E[7m, smul=\\E[4m,
tbc=\\E[3g, u6=\\E[%i%d;%dR, u7=\\E[6n, u8=\\E[?1;2c, u9=\\E[c,
vpa=\\E[%i%p1%dd,
[root@localhost ~]# DDDDDDDDDDDDDDDDDDDDDDDDDDDDD
[root@localhost ~]# DDDDDDDDDD
#include <term.h>
int setupterm(char *term, int fd, int *errret);
-1 : 没有 terminfo 数据库
0 : 在 terminfo 数据库里没有匹配的条目
1 : 成功
#include <stdio.h>
#include <term.h>
#include <curses.h>
#include <stdlib.h>
int main()
{
setupterm("unlisted", fileno(stdout), (int *)0);
printf("Done\\n");
exit(0);
}
[root@localhost C]# gcc -g setuperm.c -o setuperm.exe -lncurses
[root@localhost C]# ./setuperm.exe
'unlisted': unknown terminal type.
[root@localhost C]# ll /usr/include/curses.h
lrwxrwxrwx 1 root root 16 12-02 21:39 /usr/include/curses.h -> ncurses/curses.h
[root@localhost C]# ll /usr/include/ncurses.h
lrwxrwxrwx 1 root root 17 12-02 21:39 /usr/include/ncurses.h -> ncurses/ncurses.h
[root@localhost C]# ll /usr/include/ncurses/ncurses.h
lrwxrwxrwx 1 root root 8 12-02 21:39 /usr/include/ncurses/ncurses.h -> curses.h
[root@localhost C]# gcc -g setuperm.c -o setuperm.exe -lcurses
#include <term.h>
int tigetflag(char *capname);
int tigetnum(char *capname);
char *tigetstr(char *capname);
int main()
{
int nrows, ncolumns;
setupterm(NULL, fileno(stdout), (int *)0);
nrows = tigetnum("lines"); /*lines和cols在终端性能指标定义文件中可以看到*/
ncolumns = tigetnum("cols");
printf("This termianl has %d columns and %d rows\\n", ncolumns, nrows);
exit(0);
}
[root@localhost C]# ./sizeterm.exe
This termianl has 80 columns and 24 rows
#include <term.h>
#include <curses.h>
#include <stdlib.h>
int main()
{
int nrows, ncolumns;
setupterm(NULL, fileno(stdout), (int *)0);
nrows = tigetnum("lines");
ncolumns = tigetnum("cols");
printf("This termianl has %d columns and %d rows\\n", ncolumns, nrows);
printf("%s\\n", tigetstr("cup"));
exit(0);
}
#include <term.h>
char *tparm(char *cap, long p1, long p2, ..., long p9);
其实,如果在不严格的情况下,用 printf() 函数是可以把 tigetstr() 函数得到的行为“执行”出来的,比如要进行一个清屏的动作就可以用 printf("%s", tigetstr("clear"); 这条语句来实现。 |
#include <term.h>
int putp(char *const str);
int tputs(char *const str, int affcnt, int (*putfunc)(int));
char *cursor;
char *esc_sequence;
cursor = tigetstr("cup");
esc_sequence = tparm(cursor,5,30);
putp(esc_sequence);
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |