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

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

?? get_key.c

?? 1. 8623L平臺
?? C
字號:
/* * * Copyright (c) Sigma Designs, Inc. 2003. All rights reserved. * *//**	@file get_key.c	@brief non-blocking character read from terminal		@author Christian Wolff*/#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/time.h>#include <unistd.h>#include <termios.h>#include <signal.h>#include "rmdef/rmdef.h"#include "samples/get_key.h"static struct termios tio_save;static RMuint32 init_count = 0;static RMuint32 exit_count = 0;static void (*terminate)(void *param) = NULL;void *g_param;static void sig_handler(int signo){	if (exit_count++) {		RMDBGLOG((ENABLE, "Signal %d during cleanup, exiting unclean!\n", signo));		exit(1);	}	RMDBGLOG((ENABLE, "Signal %d, exiting...\n", signo));	RMTermExit();	if (terminate) (*terminate)(g_param);	exit(0);}void RMTermInit(RMbool block_int){	struct termios tio;		if (init_count++) return;	if (tcgetattr(STDIN_FILENO, &tio_save) < 0) {		init_count--;		return;	}	tio = tio_save;	if (block_int) {		tio.c_lflag &= ~(ECHO | ICANON | ISIG);		tio.c_iflag &= ~(BRKINT);	} else {		tio.c_lflag |= (ISIG);		tio.c_lflag &= ~(ECHO | ICANON);		tio.c_iflag |= (BRKINT);		tio.c_iflag &= ~(IGNBRK);	}		/* 	   arrows or F1 characters generate a sequence of 3 characters in a row:	   like ESC [ A (up arrow).	   	   To avoid reading [ or A as an individual character, we set	   an inter character interval of 1/10 second. If characters	   are received in less of 1/10 second then it is treated as	   an individual character and is discard.	*/		tio.c_cc[VMIN] = 3;   /* up to 3 chars at a time */	tio.c_cc[VTIME] = 1;  /* after receiving 1 char and after a delay of 1/10 second, 'read' returns */	tcsetattr(STDIN_FILENO, TCSAFLUSH, &tio);}void RMTermExit(void){	if (--init_count) return;	tcsetattr(STDIN_FILENO, TCSAFLUSH, &tio_save);}void RMSignalInit(void (*cleanup)(void *param), void *param){	terminate = cleanup;	g_param = param;		if (signal(SIGBUS, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGBUS!\n"));#ifdef SIGEMT	if (signal(SIGEMT, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGEMT!\n"));#endif	if (signal(SIGFPE, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGFPE!\n"));	if (signal(SIGHUP, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGHUP!\n"));	if (signal(SIGILL, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGILL!\n"));	if (signal(SIGINT, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGINT!\n"));	if (signal(SIGIOT, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGIOT!\n"));	if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGPIPE!\n"));	if (signal(SIGQUIT, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGQUIT!\n"));	if (signal(SIGSEGV, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGSEGV!\n"));	if (signal(SIGSYS, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGSYS!\n"));	if (signal(SIGTERM, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGTERM!\n"));	if (signal(SIGTRAP, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGTRAP!\n"));	if (signal(SIGUSR1, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGUSR1!\n"));	if (signal(SIGUSR2, sig_handler) == SIG_ERR) RMDBGLOG((ENABLE, "Can't catch SIGUSR2!\n"));}RMbool RMKeyAvailable(void){	struct timeval tv;	fd_set readfds;		tv.tv_sec = 0;	tv.tv_usec = 0;	FD_ZERO(&readfds);	FD_SET(STDIN_FILENO, &readfds);	return (select(STDIN_FILENO + 1, &readfds, NULL, NULL, &tv) > 0);}RMascii RMGetKey(void){	RMascii Key[3];	if (read(STDIN_FILENO, Key, 3) == 1) return Key[0];	return '\0';}RMbool RMGetKeyNoWait(RMascii *pKey){	RMascii Key[3];	if (! RMKeyAvailable()) return FALSE;	if (pKey == NULL) return FALSE;	if (read(STDIN_FILENO, Key, 3) == 1) {		*pKey = Key[0];		return TRUE;	}		return FALSE;}void RMTermEnableEcho(){	static struct termios tio;	if (tcgetattr(STDIN_FILENO, &tio) < 0) {		return;	}	tio.c_lflag |= ECHO | ICANON;	tcsetattr(STDIN_FILENO, TCSAFLUSH, &tio);}void RMTermDisableEcho(){	static struct termios tio;	if (tcgetattr(STDIN_FILENO, &tio) < 0) {		return;	}	tio.c_lflag &=  ~( ECHO | ICANON );	tcsetattr(STDIN_FILENO, TCSAFLUSH, &tio);}void RMTermGetUint32(RMuint32 *data){/* 	static struct termios tio; */ 	RMbool handle_echo = FALSE; 		RMuint32 i = 0;	RMascii buffer[31];	RMascii key;	if (data == NULL)		return;/* 	if ( tcgetattr(STDIN_FILENO, &tio) == 0 && (tio.c_lflag & ( ECHO | ICANON )) == 0 ) 		handle_echo = TRUE; */ 	if (handle_echo)	  		RMTermEnableEcho();  try_again:	buffer[0] = '\0';	while (i < 31) {		if (RMKeyAvailable()) {			key = RMGetKey();			printf("%c", key); fflush(stdout); //echo			if ((key >= '0') && (key <= '9')) {				buffer[i++] = key;				buffer[i] = '\0';			}			if (key == '\n') {				buffer[i] = '\0';				break;			}		}	}	RMDBGLOG((DISABLE, "read '%s'\n", buffer));	sscanf(buffer, "%lu", data);	RMDBGLOG((DISABLE, "scanned %lu\n", *data));	if (i < 1) {		fprintf(stderr, "you must enter a number\n");		goto try_again;	}	if (handle_echo)		RMTermDisableEcho();	return;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.激情成人| 国产精品资源在线| 在线视频欧美区| 又紧又大又爽精品一区二区| 色综合久久久久久久| 亚洲你懂的在线视频| 日本二三区不卡| 视频精品一区二区| 91麻豆精品国产91| 韩国成人在线视频| 国产精品成人一区二区三区夜夜夜| 成人激情动漫在线观看| 亚洲男人天堂av| 欧美精选一区二区| 国模少妇一区二区三区| 国产精品久久三| 欧美日韩在线一区二区| 美国毛片一区二区三区| 久久日韩精品一区二区五区| 成人动漫一区二区在线| 亚洲自拍偷拍综合| 欧美精品一区二区三区高清aⅴ| 国产精品一级片在线观看| 国产精品白丝在线| 欧美日韩国产高清一区| 激情欧美一区二区| 亚洲精品中文在线观看| 日韩丝袜情趣美女图片| 成人美女视频在线观看18| 亚洲一区二区在线视频| 精品对白一区国产伦| 99精品在线观看视频| 日韩在线a电影| 国产精品网曝门| 91精品国产综合久久久久久久 | 欧美日韩国产一区| 国产一区二区影院| 亚洲永久精品大片| 久久久久99精品一区| 欧美日韩一区精品| 高清不卡一区二区在线| 三级精品在线观看| 国产精品久久久久婷婷| 日韩欧美国产午夜精品| av中文字幕不卡| 久久国产精品色| 亚洲一卡二卡三卡四卡| 国产午夜久久久久| 91精品免费在线| 91免费国产在线| 久久超碰97中文字幕| 一区二区三区国产豹纹内裤在线 | 91丝袜美腿高跟国产极品老师| 免费看欧美女人艹b| 樱桃视频在线观看一区| 国产欧美精品一区二区三区四区 | 欧美电影在线免费观看| 97国产一区二区| 国产成人精品亚洲777人妖| 美国av一区二区| 日韩主播视频在线| 亚洲人成精品久久久久久| 久久久精品日韩欧美| 91精品国产91综合久久蜜臀| 91视频精品在这里| 成人av网址在线| 免费成人在线视频观看| 日韩一区在线免费观看| 国产欧美日韩精品在线| 日韩美一区二区三区| 欧美精品乱人伦久久久久久| 色老头久久综合| a亚洲天堂av| 成人动漫在线一区| 高清国产一区二区| 成人av电影在线播放| 国产精品18久久久久久久网站| 久久电影网站中文字幕| 日韩高清在线一区| 亚洲h动漫在线| 亚洲成人在线免费| 日韩电影在线免费观看| 日韩成人一级大片| 日本不卡一二三| 精品午夜久久福利影院| 国产99久久久国产精品| 看片的网站亚洲| 精品一区二区三区久久久| 久久不见久久见中文字幕免费| 麻豆极品一区二区三区| 极品销魂美女一区二区三区| 狠狠色丁香久久婷婷综| 国产传媒久久文化传媒| eeuss国产一区二区三区| 97成人超碰视| 欧美片网站yy| 日韩免费观看高清完整版| 久久美女艺术照精彩视频福利播放 | 午夜成人免费电影| 日本网站在线观看一区二区三区| 三级一区在线视频先锋| 精品亚洲成av人在线观看| 成人禁用看黄a在线| av激情成人网| 欧美日韩国产中文| 精品剧情v国产在线观看在线| 久久新电视剧免费观看| 国产精品天干天干在观线| 樱花草国产18久久久久| 天天综合色天天综合色h| 久久国产视频网| 99视频国产精品| 555www色欧美视频| 欧美激情在线一区二区三区| 日韩毛片一二三区| 日本系列欧美系列| 国产成人av电影在线观看| 91啦中文在线观看| 3d成人动漫网站| 国产精品久久福利| 日韩中文字幕av电影| 成人精品在线视频观看| 精品视频一区 二区 三区| 久久免费精品国产久精品久久久久| 国产精品高潮呻吟| 免费欧美在线视频| 日本道色综合久久| 精品国产免费一区二区三区香蕉| 亚洲人成在线观看一区二区| 日韩1区2区3区| 99久久精品费精品国产一区二区| 欧美一区二区人人喊爽| 国产精品久久久久久久久动漫| 日韩国产精品久久久| 成人国产精品免费观看动漫| 在线不卡免费欧美| 亚洲女女做受ⅹxx高潮| 国产不卡一区视频| 日韩欧美另类在线| 一个色在线综合| 懂色av一区二区夜夜嗨| 3d成人动漫网站| 亚洲午夜电影在线| 波多野结衣在线一区| 日韩美女视频一区二区在线观看| 一区二区在线观看视频| 丁香桃色午夜亚洲一区二区三区| 欧美一区二区三区视频免费 | 日韩一级完整毛片| 亚洲综合免费观看高清完整版在线| 国产一二三精品| 日韩三级电影网址| 午夜欧美2019年伦理| 在线观看国产91| 日韩毛片视频在线看| 成人在线一区二区三区| 欧美精品一区二区三区在线| 蜜臀av性久久久久蜜臀aⅴ流畅 | 精品电影一区二区| 日韩av一级片| 欧美日韩国产色站一区二区三区| 亚洲久草在线视频| 91蜜桃在线观看| ...av二区三区久久精品| 高清国产一区二区三区| 久久精品夜色噜噜亚洲a∨| 看片的网站亚洲| 欧美大片免费久久精品三p| 视频一区二区三区在线| 欧美放荡的少妇| 青青草精品视频| 精品人伦一区二区色婷婷| 久久精品国产精品青草| 日韩欧美在线网站| 精品一区二区三区在线视频| 精品久久久久一区二区国产| 久草热8精品视频在线观看| 欧美一区二区私人影院日本| 免费高清在线一区| 日韩欧美黄色影院| 国产一区二区在线观看视频| 国产性色一区二区| www.亚洲激情.com| 亚洲老司机在线| 欧美视频一区二区三区四区 | 26uuu国产一区二区三区| 国产激情一区二区三区| 国产精品久久久久7777按摩| 91精品福利在线| 五月婷婷另类国产| 久久综合久久鬼色| 91猫先生在线| 三级不卡在线观看| 国产亚洲制服色| 色噜噜狠狠成人中文综合| 视频一区视频二区中文| 国产亚洲成aⅴ人片在线观看| www.av精品| 丝袜美腿成人在线| 国产欧美日韩精品一区|