亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ansi.c

?? ncurses-5.4 需要的就來下把 一定會有用的哦
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*** Copyright (C) 1991, 1997 Free Software Foundation, Inc.** ** This file is part of TACK.** ** TACK is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License as published by** the Free Software Foundation; either version 2, or (at your option)** any later version.** ** TACK is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the** GNU General Public License for more details.** ** You should have received a copy of the GNU General Public License** along with TACK; see the file COPYING.  If not, write to** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,** Boston, MA 02111-1307, USA.*/#include <tack.h>MODULE_ID("$Id: ansi.c,v 1.9 2001/06/18 18:44:17 tom Exp $")/* * Standalone tests for ANSI terminals.  Three entry points: * test_ansi_graphics(), test_ansi_reports() and test_ansi_sgr(). *//***************************************************************************** * * Test ANSI status reports * *****************************************************************************//* ASCII control characters */#define A_DC1 0x11		/* Control Q */#define A_DC3 0x13		/* Control S */#define A_ESC 0x1b#define A_DCS 0x90#define A_CSI 0x9b#define A_ST  0x9c#define MAX_MODES 256static char default_bank[] = "\033(B\017";static int private_use, ape, terminal_class;static short ansi_value[256];static unsigned char ansi_buf[512], pack_buf[512];struct ansi_reports {	int lvl, final;	const char *text;	const char *request;};static struct ansi_reports report_list[] = {	{0, 'c', "(DA) Primary device attributes", "\033[0c"},	{1, 0, "(DSR) Terminal status", "\033[5n"},	{1, 'R', "(DSR) Cursor position", "\033[6n"},	{62, 0, "(DA) Secondary device attributes", "\033[>0c"},	{62, 0, "(DSR) Printer status", "\033[?15n"},	{62, 0, "(DSR) Function key definition", "\033[?25n"},	{62, 0, "(DSR) Keyboard language", "\033[?26n"},	{63, 0, "(DECRQSS) Data destination", "\033P$q$}\033\\"},	{63, 0, "(DECRQSS) Status line type", "\033P$q$~\033\\"},	{63, 0, "(DECRQSS) Erase attribute", "\033P$q\"q\033\\"},	{63, 0, "(DECRQSS) Personality", "\033P$q\"p\033\\"},	{63, 0, "(DECRQSS) Top and bottom margins", "\033P$qr\033\\"},	{63, 0, "(DECRQSS) Character attributes", "\033P$qm\033\\"},	{63, 0, "(DECRQSS) Illegal request", "\033P$q@\033\\"},	{63, 0, "(DECRQUPSS) User pref supplemental set", "\033[&u"},	{63, 0, "(DECRQPSR) Cursor information", "\033[1$w"},	{63, 0, "(DECRQPSR) Tab stop information", "\033[2$w"},	{64, 0, "(DA) Tertiary device attributes", "\033[=0c"},	{64, 0, "(DSR) Extended cursor position", "\033[?6n"},	{64, 0, "(DSR) Macro space", "\033[?62n"},	{64, 0, "(DSR) Memory checksum", "\033[?63n"},	{64, 0, "(DSR) Data integrity", "\033[?75n"},	{64, 0, "(DSR) Multiple session status", "\033[?85n"},	{64, 0, "(DECRQSS) Attribute change extent", "\033P$q*x\033\\"},	{64, 0, "(DECRQSS) Columns per page", "\033P$q$|\033\\"},	{64, 0, "(DECRQSS) Lines per page", "\033P$qt\033\\"},	{64, 0, "(DECRQSS) Lines per screen", "\033P$q*|\033\\"},	{64, 0, "(DECRQSS) Left and right margins", "\033P$qs\033\\"},	{64, 0, "(DECRQSS) Local functions", "\033P$q+q\033\\"},	{64, 0, "(DECRQSS) Local function key control", "\033P$q=}\033\\"},	{64, 0, "(DECRQSS) Select modifier key reporting", "\033P$q+r\033\\"},	{64, 0, "(DECRQDE) Window report", "\033[\"v"},	{0, 0, 0, 0}};struct request_control {	const char *text;	const char *expect;	const char *request;	const char *set_mode;	const char *reset_mode;};/* Request control function selection or setting */static const struct request_control rqss[] = {	{"Data sent to screen", "0", "$}", "\033[0$}", 0},	{"Data sent to disabled status line", "0", "$}", 0, 0},	{"\033[0$~\033[1$}", "\033[0$}", 0, 0, 0},	{"Data sent to enabled status line", "1", "$}", 0, 0},	{"\033[2$~\033[1$}", "\033[0$}", 0, 0, 0},	{"Disable status line", "0", "$~", "\033[0$~", 0},	{"Top status line", "1", "$~", "\033[1$~", 0},	{"Bottom status line", "2", "$~", "\033[2$~", 0},	{"Erasable character", "0", "\"q", "\033[0\"q", 0},	{"Nonerasable character", "1", "\"q", "\033[1\"q", "\033[0\"q"},	{"Top and bottom margins", "3;10", "r", "\0337\033[3;10r", 0},	{"\033[r\0338", 0, 0, 0, 0},	{"Top and bottom margins", "default", "r", "\0337\033[r", "\0338"},	{"Character attributes, dim, bold", "1", "m", "\033[2;1m", "\033[m"},	{"Character attributes, bold, dim", "2", "m", "\033[1;2m", "\033[m"},	{"Character attributes, under, rev", "4;7", "m", "\033[4;7m", "\033[m"},	{"Character attributes, color", "35;42", "m", "\033[35;42m", "\033[m"},	{"All character attributes", "", "m", "\033[1;2;3;4;5;6;7;8;9m", 0},	{"\033[m", 0, 0, 0, 0},	{0, 0, 0, 0, 0}};/***	read_ansi()****	read an ANSI status report from terminal*/static voidread_ansi(void){	int ch, i, j, last_escape;	fflush(stdout);	read_key((char *)ansi_buf, sizeof(ansi_buf));	/* Throw away control characters inside CSI sequences.	   Convert two character 7-bit sequences into 8-bit sequences. */	for (i = j = last_escape = 0; (ch = ansi_buf[i]) != 0; i++) {		if (ch == A_ESC) {			if (last_escape == A_ESC) {				pack_buf[j++] = A_ESC;			}			last_escape = A_ESC;		} else		if (last_escape == A_ESC && ch >= '@' && ch <= '_') {			pack_buf[j++] = last_escape = ch + 0x40;		} else		if (last_escape != A_CSI || (ch > 0x20 && ch != 0x80)) {			if (last_escape == A_ESC) {				pack_buf[j++] = A_ESC;			}			if (ch > 0x80 && ch < 0xa0) {				last_escape = ch;			}			pack_buf[j++] = ch;		}	}	if (last_escape == A_ESC) {		pack_buf[j++] = A_ESC;	}	pack_buf[j] = '\0';	return;}/***	valid_mode(expected)****	read a terminal mode status report and parse the result**	Return TRUE if we got the expected terminating character.*/static intvalid_mode(int expected){	unsigned char *s;	int ch, terminator;	read_ansi();	ape = 0;	ch = UChar(pack_buf[0]);	ansi_value[0] = 0;	if (ch != A_CSI && ch != A_DCS)		return FALSE;	s = pack_buf + 1;	private_use = 0;	if ((*s >= '<') & (*s <= '?')) {		private_use = *s++;	}	terminator = 0;	for (; (ch = *s); s++) {		if (ch >= '0' && ch <= '9')			ansi_value[ape] = ansi_value[ape] * 10 + ch - '0';		else if (ch == ';' || ch == ':')			ansi_value[++ape] = 0;		else if (ch >= '<' && ch <= '?')			private_use = ch;		else if (ch >= ' ')			terminator = (terminator << 8) | ch;		else			break;	}	return terminator == expected;}/***	read_reports()****	read all the reports in the ANSI report structure*/static intread_reports(void){	int i, j, k, tc, vcr, lc;	char *s;	const char *t;	lc = 5;	terminal_class = tc = 0;	for (i = 0; report_list[i].text; i++, lc++) {		if (terminal_class < report_list[i].lvl &&			tc < report_list[i].lvl) {			put_crlf();			menu_prompt();			ptext("/status [q] > ");			j = wait_here();			if (j != 'n' && j != 'N')				return 0;			tc = report_list[i].lvl;			lc = 1;		} else if (lc + 2 >= lines) {			put_crlf();			ptext("Hit any key to continue ");			(void) wait_here();			lc = 1;		}		sprintf(temp, "%s (%s) ", report_list[i].text,			expand_command(report_list[i].request));		ptext(temp);		for (j = strlen(temp); j < 49; j++)			putchp(' ');		tc_putp(report_list[i].request);		vcr = 0;		if (report_list[i].final == 0) {			read_ansi();		} else if (valid_mode(report_list[i].final))			switch (report_list[i].final) {			case 'c':				terminal_class = ansi_value[0];				break;			case 'R':				vcr = TRUE;				break;			}		j = UChar(pack_buf[0]);		if (j != A_CSI && j != A_DCS) {			put_crlf();			t = "*** The above request gives illegal response ***";			ptext(t);			for (j = strlen(t); j < 49; j++)				putchp(' ');		}		s = expand((const char *)ansi_buf);		if (char_count + expand_chars >= columns) {			put_str("\r\n        ");			lc++;		}		putln(s);		if (vcr) {	/* find out how big the screen is */			tc_putp(report_list[i].request);			if (!valid_mode('R'))				continue;			j = ansi_value[0];			k = ansi_value[1];			tc_putp("\033[255B\033[255C\033[6n");			if (!valid_mode('R'))				continue;			sprintf(temp, "\033[%d;%dH", j, k);			tc_putp(temp);			ptext("(DSR) Screen size (CSI 6 n)");			for (j = char_count; j < 50; j++)				putchp(' ');			sprintf(temp, "%d x %d", ansi_value[1], ansi_value[0]);			ptextln(temp);		}	}	menu_prompt();	ptext("/status r->repeat test, <return> to continue > ");	return wait_here();}/***	request_cfss()****	Request Control function selection or settings*/static intrequest_cfss(void){	int i, j, k, l, ch;	char *s;	put_clear();	ptextln("Request                         Expected  Received");	put_crlf();	for (i = 0; rqss[i].text; i++) {		ptext(rqss[i].text);		j = strlen(rqss[i].text) + strlen(rqss[i].expect);		putchp(' ');		for (j++; j < 40; j++)			putchp(' ');		ptext(rqss[i].expect);		putchp(' ');		tc_putp(rqss[i].set_mode);		sprintf(temp, "\033P$q%s\033\\", rqss[i].request);		tc_putp(temp);		read_ansi();		tc_putp(rqss[i].reset_mode);		putchp(' ');		for (j = 0; ansi_buf[j]; j++) {			if (ansi_buf[j] == 'r') {				for (k = j++; (ch = UChar(ansi_buf[k])) != 0; k++)					if (ch == A_ESC) {						break;					} else if (ch == A_ST) {						break;					}				ansi_buf[k] = '\0';				s = expand((const char *)&ansi_buf[j]);				if (char_count + expand_chars >= columns)					put_str("\r\n        ");				put_str(s);			}		}		put_crlf();	}	/* calculate the valid attributes */	ptext("Valid attributes:         0");	j = 0;	for (i = 1; i < 20; i++) {		sprintf(temp, "\033[0;%dm\033P$qm\033\\", i);		tc_putp(temp);		(void) valid_mode('m');		if (ape > 0) {			j = i;			sprintf(temp, "\033[0m; %d", i);			tc_putp(temp);		}	}	put_crlf();	/* calculate how many parameters can be sent */	ptext("Max number of parameters: ");	sprintf(temp, "%dm\033P$qm\033\\", j);	l = -1;	if (j > 0)		for (l = 1; l < 33; l++) {			tc_putp("\033[0");			for (ch = 1; ch <= l; ch++)				put_this(';');			tc_putp(temp);			(void) valid_mode('m');			if (ape == 0)				break;		}	tc_putp("\033[m");	if (l >= 0) {		sprintf(temp, "%d", l);		ptext(temp);	} else		ptext("unknown");	put_crlf();	return wait_here();}/***	mode_display(puc, mode, initial, set, reset)****	print the mode display entry*/static voidmode_display(const char *p, int n, int c, char s, char r){	int k;	sprintf(temp, "%s%d (%c, %c, %c)", p, n, c, s, r);	k = strlen(temp);	if (char_count + k >= columns)		put_crlf();	for (; k < 14; k++)		putchp(' ');	put_str(temp);}/***	terminal_state()****	test DECRQM status reports*/static voidterminal_state(void){	static const char *puc[] = {"", "<", "=", ">", "?", 0};	int i, j, k, l, modes_found;	char *s;	char buf[256], tms[256];	int mode_puc[MAX_MODES], mode_number[MAX_MODES];	char set_value[MAX_MODES], reset_value[MAX_MODES];	char current_value[MAX_MODES];	ptext("Testing terminal mode status. (CSI 0 $ p)");	tc_putp("\033[0$p");	modes_found = 0;	tms[0] = '\0';	if (valid_mode(('$' << 8) | 'y')) {		for (i = 0; puc[i]; i++) {			put_crlf();			if (i) {				sprintf(temp, "Private use: %c", puc[i][0]);			} else {				strcpy(temp, "Standard modes:");			}			k = strlen(temp);			ptext(temp);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一级二级在线| 欧美日韩午夜在线视频| 久久精品99国产精品| 亚洲电影在线免费观看| 亚洲欧美经典视频| 亚洲三级理论片| 一区二区在线免费观看| 一区二区三区日韩精品| 亚洲激情图片一区| 亚洲一区二区视频| 五月激情综合婷婷| 免费人成网站在线观看欧美高清| 丝袜诱惑制服诱惑色一区在线观看| 亚洲一区二区三区影院| 亚洲国产精品麻豆| 麻豆传媒一区二区三区| 久久国产精品99精品国产| 韩国女主播一区| 国产99久久久久久免费看农村| 成人综合婷婷国产精品久久| 成人晚上爱看视频| 色婷婷国产精品综合在线观看| 色香色香欲天天天影视综合网| 欧美中文字幕久久| 欧美精品18+| 精品国产伦一区二区三区观看方式| 久久一区二区三区国产精品| 中文字幕一区二区三区四区不卡 | 粉嫩av亚洲一区二区图片| 成人午夜伦理影院| 日本精品视频一区二区| 69成人精品免费视频| 欧美不卡一区二区三区四区| 国产精品网友自拍| 亚洲丰满少妇videoshd| 狠狠色伊人亚洲综合成人| 成人综合在线网站| 欧美日韩精品专区| 欧美精品一区二区在线播放| 国产精品成人在线观看| 亚洲成av人片在线| 国产精品一区二区在线播放| 99re热视频这里只精品| 51精品久久久久久久蜜臀| 精品国产一区二区三区四区四| 国产精品久久看| 亚洲电影欧美电影有声小说| 国产一区二区在线观看视频| 91麻豆高清视频| 欧美一级片在线看| 亚洲色图欧洲色图婷婷| 免费成人av在线| 99国内精品久久| 欧美成人一区二区三区片免费 | 26uuu国产电影一区二区| 亚洲精品视频在线看| 久久se精品一区精品二区| 不卡一卡二卡三乱码免费网站| 制服丝袜亚洲网站| 成人欧美一区二区三区白人| 欧美aa在线视频| 欧洲色大大久久| 欧美国产97人人爽人人喊| 日本sm残虐另类| 91蝌蚪porny成人天涯| 久久伊人中文字幕| 日韩福利电影在线观看| 91理论电影在线观看| 2014亚洲片线观看视频免费| 婷婷国产在线综合| 一本大道久久a久久综合婷婷| 久久日韩粉嫩一区二区三区| 亚欧色一区w666天堂| 色婷婷久久99综合精品jk白丝| 国产区在线观看成人精品| 欧美aaaaaa午夜精品| 在线观看亚洲a| 亚洲视频一区在线观看| 国产精品白丝av| 日韩欧美美女一区二区三区| 亚洲午夜久久久久久久久久久| 成人手机电影网| 久久女同互慰一区二区三区| 日本亚洲欧美天堂免费| 欧美日韩视频在线第一区| 最新国产成人在线观看| 国产精品一区免费视频| 日韩欧美美女一区二区三区| 亚洲无人区一区| 色综合亚洲欧洲| 中文字幕一区二区三区四区| 丰满少妇在线播放bd日韩电影| 26uuu国产电影一区二区| 日本欧美一区二区在线观看| 欧洲色大大久久| 亚洲综合免费观看高清完整版在线| av影院午夜一区| 国产欧美一区二区在线| 国产另类ts人妖一区二区| 欧美精品一区二区三| 久久成人免费电影| 久久综合久久99| 久久精品国产99国产| 精品国产乱码久久久久久1区2区| 另类综合日韩欧美亚洲| 欧美日本在线观看| 免费三级欧美电影| 日韩欧美在线综合网| 极品少妇xxxx精品少妇| 日韩免费电影网站| 久久国产精品99久久久久久老狼| 日韩欧美综合在线| 美女www一区二区| 亚洲精品一区在线观看| 国产很黄免费观看久久| 国产精品久久久久久久浪潮网站| 成人免费va视频| 亚洲激情网站免费观看| 欧美午夜影院一区| 日本欧美肥老太交大片| 精品国产成人在线影院| 国产精品1区2区3区在线观看| 国产欧美一区二区三区在线老狼| 丁香婷婷综合网| 国产精品久久久久久久久免费樱桃| 国产成人一区在线| 亚洲欧洲成人av每日更新| 在线观看成人小视频| 日韩av电影天堂| 精品免费国产二区三区| 成人理论电影网| 亚洲一二三区在线观看| 日韩一区二区三区四区五区六区| 美国精品在线观看| 久久女同性恋中文字幕| 91无套直看片红桃| 亚洲成a天堂v人片| 精品剧情在线观看| 99re成人精品视频| 日韩激情av在线| 国产午夜精品一区二区| 色婷婷激情综合| 美女任你摸久久| 国产精品美女久久久久av爽李琼| 99国产精品国产精品久久| 亚洲成a人v欧美综合天堂下载| 精品国产在天天线2019| jiyouzz国产精品久久| 亚洲第一搞黄网站| 国产欧美综合色| 欧美日韩在线一区二区| 国产精品自拍一区| 亚洲综合另类小说| 国产日本一区二区| 91精品啪在线观看国产60岁| 成人午夜大片免费观看| 香蕉成人啪国产精品视频综合网| 久久精品视频免费| 欧美精品第1页| proumb性欧美在线观看| 欧美aⅴ一区二区三区视频| 国产精品传媒在线| 精品国产3级a| 色综合中文字幕国产| 日本不卡一二三区黄网| 中文幕一区二区三区久久蜜桃| 欧美肥妇free| 成人国产在线观看| 麻豆国产欧美日韩综合精品二区| 亚洲女性喷水在线观看一区| 欧美撒尿777hd撒尿| 国产成人综合网站| 日本一区中文字幕| 亚洲精品菠萝久久久久久久| 国产日产亚洲精品系列| 欧美一级精品在线| 92国产精品观看| 国产盗摄精品一区二区三区在线| 亚洲成a人片在线不卡一二三区| 中文字幕在线不卡一区| 精品国产不卡一区二区三区| 欧美裸体一区二区三区| 99久久综合狠狠综合久久| 国产精品综合网| 蜜臀久久久久久久| 午夜天堂影视香蕉久久| 亚洲精选免费视频| 国产精品久久久久久久裸模| 国产欧美一区二区三区在线老狼| 日韩视频免费观看高清在线视频| 欧美午夜精品久久久久久超碰| 不卡区在线中文字幕| 精品在线观看视频| 亚洲成人动漫av| 午夜亚洲福利老司机| 亚洲电影一级黄| 亚洲成va人在线观看| 天天做天天摸天天爽国产一区| 亚洲尤物在线视频观看| 亚洲欧美偷拍卡通变态|