new_getcaps.c

来自「基于网络编程的例子」· C语言 代码 · 共 86 行

C
86
字号
/*  * new_getcaps.c - Get and show terminal capabilities using  *                 terminfo data structures and functions */#include <stdlib.h>#include <stdio.h>#include <term.h>#include <curses.h>#include <unistd.h> /* for sleep() */#define NUMCAPS 3void clrscr(void);void mv_cursor(int, int);int main(void){     char *boolcaps[NUMCAPS] = { "am", "bce", "km" };     char *numcaps[NUMCAPS] = { "cols", "lines", "colors" };     char *strcaps[NUMCAPS] = { "cup", "flash", "hpa" };     char *buf;     int retval, i;     if(setupterm(NULL, fileno(stdout), NULL) != OK) {          perror("setupterm()");          exit(EXIT_FAILURE);     }     clrscr();     for(i = 0; i < NUMCAPS; ++i) {          /* position the cursor */          mv_cursor(i, 10);          retval = tigetflag(boolcaps[i]);          if(retval == FALSE) {               printf("`%s' unsupported\n", boolcaps[i]);          } else {               printf("`%s' supported\n", boolcaps[i]);	  }     }     sleep(3);     clrscr();     for(i = 0; i < NUMCAPS; ++i) {          mv_cursor(i, 10);          retval = tigetnum(numcaps[i]);          if(retval == ERR) {               printf("`%s' unsupported\n", numcaps[i]);          } else {               printf("`%s' is %d\n", numcaps[i], retval);	  }     }     sleep(3);     clrscr();     for(i = 0; i < NUMCAPS; ++i) {          mv_cursor(i, 10);          buf = tigetstr(strcaps[i]);          if(buf == NULL) {               printf("`%s' unsupported\n", strcaps[i]);          } else {               printf("`%s' is \\E%s\n", strcaps[i], &buf[1]);	  }     }     sleep(3);     exit(0);}/* * Clear the screen */void clrscr(void){     char *buf = tigetstr("clear");     putp(buf);}/* * Move the cursor to the specified row row and column col */void mv_cursor(int row, int col){     char *cap = tigetstr("cup");     putp(tparm(cap, row, col));}

⌨️ 快捷键说明

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