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

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

?? wkeys.c

?? 用于通信環境的C語言源程序
?? C
字號:
/* * This file is part of the Minicom Communications Program, * written by Miquel van Smoorenburg 1991/1992/1993. * * Read a keypress from the standard input. If it is an escape * code, return a special value. * * WARNING: possibly the most ugly code in this package! */#if defined(_BSD43) && defined(_SELECT)#  undef _POSIX_SOURCE#endif#include <sys/types.h>#if defined(MINIX) || defined(linux)#  include <termcap.h>#elsechar *tgetstr();int tgetent();#endif#if defined (_POSIX_SOURCE) || defined(_BSD43)#  include <stdlib.h>#  include <unistd.h>#elsechar *getenv();#endif#ifdef _SELECT#  include <sys/time.h>#else#  include <signal.h>#endif#include <string.h>#include <errno.h>#include "window.h"#ifndef BBS#  include "config.h"#endif#if KEY_KLUDGE && defined(linux)#  include <sys/kd.h>#  include <sys/ioctl.h>#endifstatic struct key _keys[NUM_KEYS];extern int setcbreak();extern WIN *us;/* * The following is an external pointer to the termcap info. * If it's NOT zero then the main program has already * read the termcap for us. No sense in doing it twice. */extern char *_tptr;static char erasechar;static int gotalrm;extern int errno;int pendingkeys = 0;#ifdef _MINIX/* * MINIX (and some others, sigh) use F1-10. BSD uses k1-a (mostly..) */static char *func_key[] = { 	"", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F0",	"kh", "kP", "ku", "kl", "kr", "kd", "kH", "kN", "kI", "kD",	(char *)0 };#elsestatic char *func_key[] = { 	"", "k1", "k2", "k3", "k4", "k5", "k6", "k7", "k8", "k9", "ka",	"kh", "kP", "ku", "kl", "kr", "kd", "kH", "kN", "kI", "kD",	(char *)0 };#endif	#if KEY_KLUDGE#ifdef _V7#  include <sgtty.h>#endif/* * A VERY DIRTY HACK FOLLOWS: * This routine figures out if the tty we're using is a serial * device OR an IBM PC console. If we're using a console, we can * easily reckognize single escape-keys since escape sequences * always return > 1 characters from a read() */static int isconsole; static int testconsole(){#ifndef linux  struct sgttyb sg, ng;  /* Get parameters */  ioctl(0, TIOCGETP, &ng);  /* Save old parameters */  ioctl(0, TIOCGETP, &sg);    ng.sg_ispeed = 0;  ng.sg_ospeed = 1;    /* Set new speed */  ioctl(0, TIOCSETP, &ng);  /* Read new speed */  ioctl(0, TIOCGETP, &ng);  /* Restore old value */  ioctl(0, TIOCSETP, &sg);    /* RS 232 lines will have defaulted the ispeed since it was too low! */  return (ng.sg_ispeed == 0);#else  /* For Linux it's easy to see if this is a VC. */  int info;  return( ioctl(0, KDGETLED, &info) == 0);#endif}/* * Function to read chunks of data from fd 0 all at once */static int keys_in_buf;static int cread(c)char *c;{  static char buf[32];  static int idx = 0;  static int lastread = 0;  if (idx > 0 && idx < lastread) {  	*c = buf[idx++];	keys_in_buf--;  	return(lastread);  }  idx = 0;  do {	lastread = read(0, buf, 32);	keys_in_buf = lastread - 1;  } while(lastread < 0 && errno == EINTR);  *c = buf[0];  if (lastread > 1) idx = 1;  return(lastread);}#endifstatic void _initkeys(){  int i;  static char *cbuf, *tbuf;  char *term;  if (_tptr == CNULL) {	if ((tbuf = (char *)malloc(512)) == CNULL || 		(cbuf = (char *)malloc(1024)) == CNULL) {  		write(2, "Out of memory.\n", 15);  		exit(1);	}	term = getenv("TERM");	switch(tgetent(cbuf, term)) {  		case 0:  			write(2, "No termcap entry.\n", 18);  			exit(1);  		case -1:  			write(2, "No /etc/termcap present!\n", 25);  			exit(1);  		default:  			break;  	}	_tptr = tbuf;  }	/* Initialize codes for special keys */  for(i = 0; func_key[i]; i++) {  	if ((_keys[i].cap = tgetstr(func_key[i], &_tptr)) == CNULL)  		_keys[i].cap = "";  	_keys[i].len = strlen(_keys[i].cap);  }#if KEY_KLUDGE  isconsole = testconsole();#endif}  /* * Dummy routine for the alarm signal */#ifndef _SELECTstatic void dummy(){  gotalrm = 1;}#endif  /* * Read a character from the keyboard. * Handle special characters too! */int getch(){  int f, g;  int match = 1;  int len;  unsigned char c;  static unsigned char mem[8];  static int leftmem = 0;  static int init = 0;  int nfound = 0;#ifdef _SELECT  struct timeval timeout;  fd_set readfds;  static fd_set *nofds = (fd_set *)0;#endif  if (init == 0) {  	_initkeys();  	init++;  	erasechar = setcbreak(3);  }  /* Some sequence still in memory ? */  if (leftmem) {	leftmem--;	if (leftmem == 0) pendingkeys = 0;	return(mem[leftmem]);  }  gotalrm = 0;  pendingkeys = 0;  for (len = 1; len < 8 && match; len++) {#ifdef _SELECT#if KEY_KLUDGE	if (len > 1 && keys_in_buf == 0) {#else	if (len > 1) {#endif		timeout.tv_sec = 0;		timeout.tv_usec = 400000; /* 400 ms */#ifdef FD_SET		FD_ZERO(&readfds);		FD_SET(0, &readfds);#else		readfs = 1; /* First bit means file descriptor #0 */#endif#ifdef _HPUX_SOURCE		/* HPUX prototype of select is mangled */		nfound = select(1, (int *)&readfds,				(int *)nofds, (int *)nofds, &timeout);#else		nfound = select(1, &readfds, nofds, nofds, &timeout);#endif		if (nfound == 0) {			break;		}	}#else	if (len > 1) {		signal(SIGALRM, dummy);		alarm(1);	}#endif#if KEY_KLUDGE	while((nfound = cread(&c)) < 0 && (errno == EINTR && !gotalrm))		;#else  	while ((nfound = read(0, &c, 1)) < 0 && (errno == EINTR && !gotalrm))  		;#endif#ifndef _SELECT	if (len > 1) alarm(0);#endif	if (nfound < 1) break;  	if (len == 1) {  	/* Enter and erase have precedence over anything else */ 	 	if (c == (unsigned char)'\n')  			return c;		if (c == (unsigned char)erasechar)			return K_ERA;  	}#if KEY_KLUDGE	if (isconsole && nfound == 1 && len == 1) return(c);#endif  	mem[len - 1] = c;  	match = 0;  	for (f = 0; f < NUM_KEYS; f++)  	    if (_keys[f].len >= len && strncmp(_keys[f].cap, (char *)mem, len) == 0){  			match++;  			if (_keys[f].len == len) {  				return(f + KEY_OFFS);  			}  		}  }  /* No match. in len we have the number of characters + 1 */  len--; /* for convenience */  if (len == 1) return(mem[0]);  /* Remember there are more keys waiting in the buffer */  pendingkeys++;#ifndef _SELECT  /* Pressing eg escape twice means escape */  if (len == 2 && mem[0] == mem[1]) return(mem[0]);#endif    /* Reverse the "mem" array */  for(f = 0; f < len / 2; f++) {  	g = mem[f];  	mem[f] = mem[len - f - 1];  	mem[len - f - 1] = g;  }  leftmem = len - 1;  return(mem[leftmem]);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区免费视频| 成人午夜在线视频| 色婷婷精品大在线视频| 亚洲欧洲在线观看av| 99re成人在线| 亚洲成人av一区| 91精品国产欧美一区二区18| 国产一区二区网址| 亚洲人午夜精品天堂一二香蕉| 欧洲另类一二三四区| 偷窥国产亚洲免费视频| 亚洲欧洲日韩综合一区二区| 国产精品国产三级国产aⅴ入口 | 欧美一区中文字幕| 日韩欧美电影在线| 日本精品一级二级| 国产精品一区二区黑丝| 日韩制服丝袜先锋影音| 亚洲国产精品ⅴa在线观看| 欧美日本一区二区三区四区 | 国产精品视频一二三区| 欧美乱妇23p| 色综合一个色综合亚洲| 国产中文一区二区三区| 亚洲www啪成人一区二区麻豆 | 青椒成人免费视频| 日韩理论片在线| 久久色.com| 欧美一级欧美一级在线播放| 久久婷婷色综合| 亚洲精品菠萝久久久久久久| 国产精品免费免费| 亚洲韩国精品一区| 亚洲最新视频在线播放| 亚洲精品国产视频| 精品午夜久久福利影院| 日韩av电影免费观看高清完整版 | 国产精品三级在线观看| 一区二区激情小说| 国产乱码一区二区三区| 91久久线看在观草草青青| 欧美精品一区二区三区四区| 欧美一区二区福利视频| 国产精品女上位| 精品一区二区免费| 91久久精品国产91性色tv| 久久久久久久av麻豆果冻| 久久视频一区二区| 婷婷一区二区三区| 91色九色蝌蚪| 欧美日韩极品在线观看一区| 欧美国产日韩在线观看| 另类调教123区| 国产在线精品不卡| 欧美日韩国产bt| 亚洲乱码中文字幕| www.成人网.com| 在线看国产一区二区| 欧美激情综合在线| 国产一区视频导航| 精品成人一区二区三区四区| 日本美女一区二区三区视频| 在线精品视频一区二区三四 | 精品亚洲aⅴ乱码一区二区三区| 成人99免费视频| 色嗨嗨av一区二区三区| 国产欧美视频在线观看| 亚洲乱码精品一二三四区日韩在线| 国产综合久久久久影院| 日韩精品一区二区三区蜜臀| 日本强好片久久久久久aaa| 在线观看亚洲精品视频| 一区二区三区精品| 色噜噜夜夜夜综合网| 亚洲精品一二三区| 欧美性感一类影片在线播放| 日韩一级成人av| 美脚の诱脚舐め脚责91| 成人午夜激情在线| 中文字幕不卡在线| 成人av电影在线观看| 中文字幕一区二区三| 91免费看视频| 亚洲第一综合色| 欧美福利一区二区| 精品无人区卡一卡二卡三乱码免费卡| 亚洲精品在线观看网站| 国产电影一区在线| 精品毛片乱码1区2区3区| 亚洲色图都市小说| 91成人国产精品| 日本午夜一区二区| 精品盗摄一区二区三区| 成人动漫在线一区| 亚洲一区欧美一区| 成人毛片在线观看| 亚洲午夜精品网| 精品国偷自产国产一区| 懂色av中文字幕一区二区三区| 欧美大胆人体bbbb| 成人国产免费视频| 亚洲美女区一区| 欧美一级精品在线| 国产a精品视频| 五月综合激情日本mⅴ| 久久无码av三级| 欧美午夜精品一区二区三区| 日本亚洲电影天堂| 亚洲天堂成人在线观看| 欧美一区二区久久| 91久久香蕉国产日韩欧美9色| 久久精品国产77777蜜臀| 中文字幕一区二区三区不卡| 正在播放亚洲一区| 视频一区二区不卡| 国产精品家庭影院| 日韩精品一区二区在线| 色综合一区二区| 国产乱码精品一品二品| 亚洲国产cao| 国产欧美一区二区三区在线老狼| 欧美亚洲图片小说| 成人性生交大合| 青椒成人免费视频| 亚洲一区二区视频在线观看| 国产亚洲污的网站| 成人免费视频caoporn| 青娱乐精品视频| 亚洲综合在线观看视频| 欧美激情在线看| 精品国产免费人成在线观看| 欧美日韩欧美一区二区| 日韩av网站免费在线| 一区二区欧美精品| 日韩毛片一二三区| 欧美国产日韩精品免费观看| 日韩欧美色综合| 欧美三级视频在线| 色诱亚洲精品久久久久久| 成人性视频免费网站| 韩国精品久久久| 另类调教123区 | 欧美一区二区二区| 欧美日韩一区国产| 色悠久久久久综合欧美99| 成人av手机在线观看| 成人午夜精品一区二区三区| 国产成人精品网址| 国产成人在线影院| 成人夜色视频网站在线观看| 国产精品影视在线观看| 国产一区二区三区香蕉| 精品一区二区免费| 国产成人精品aa毛片| 国产精品乡下勾搭老头1| 国产成人丝袜美腿| 成人免费看的视频| 色婷婷综合久久久| 欧美视频精品在线| 欧美精品在线视频| 日韩精品专区在线影院观看| 久久这里只有精品6| 国产偷v国产偷v亚洲高清| 亚洲美女少妇撒尿| 欧美一级一区二区| 日韩欧美三级在线| 精品久久久久久久久久久久久久久久久 | 国产女人18毛片水真多成人如厕 | 久久久久国产精品麻豆ai换脸 | 久久久久久毛片| 国产精品欧美一区喷水| 亚洲视频网在线直播| 亚洲精品乱码久久久久久黑人| 香蕉成人啪国产精品视频综合网| 日韩精品三区四区| 国产a精品视频| 在线国产电影不卡| 日韩精品中文字幕一区二区三区| 久久久www免费人成精品| 成人欧美一区二区三区| 天天色天天操综合| 国产成人夜色高潮福利影视| 91久久精品一区二区三区| 日韩精品中午字幕| 亚洲欧美日韩久久| 日韩福利电影在线观看| 国产福利不卡视频| 欧美猛男男办公室激情| 国产婷婷色一区二区三区| 一级日本不卡的影视| 久久99精品久久久久久久久久久久| 粉嫩aⅴ一区二区三区四区| 欧美日韩精品福利| 国产欧美日韩精品一区| 舔着乳尖日韩一区| 972aa.com艺术欧美| 久久久精品一品道一区| 亚洲va国产va欧美va观看| 丁香另类激情小说| 欧美一级二级在线观看|