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

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

?? event.c

?? uboot for K9 AT91RM9200 學習板
?? C
?? 第 1 頁 / 共 2 頁
字號:
    while (EVT.count < EVENTQSIZE) {	rc = mouse_read(_PM_mouse_ctl, &ev, 1, 0, NULL);	if (rc == -1) {	    perror("getEvents");	    PM_fatalError("Mouse error (Input terminated?)");	    }	if (rc == 0)	    break;	message = 0, but_stat = 0;	memset(&evt, 0, sizeof(evt));	ev.buttons &= (_MOUSE_LEFT | _MOUSE_RIGHT);	if (ev.buttons & _MOUSE_LEFT)	    but_stat = EVT_LEFTBUT;	if ((ev.buttons & _MOUSE_LEFT) != (old_buttons & _MOUSE_LEFT))	    message = EVT_LEFTBMASK;	if (ev.buttons & _MOUSE_RIGHT)	    but_stat |= EVT_RIGHTBUT;	if ((ev.buttons & _MOUSE_RIGHT) != (old_buttons & _MOUSE_RIGHT))	    message |= EVT_RIGHTBMASK;	if (ev.dx || ev.dy) {	    ev.dy = -ev.dy;	    EVT.mx += MickeyToPixel(ev.dx);	    EVT.my += MickeyToPixel(ev.dy);	    if (EVT.mx < 0) EVT.mx = 0;	    if (EVT.my < 0) EVT.my = 0;	    if (EVT.mx > rangeX)    EVT.mx = rangeX;	    if (EVT.my > rangeY)    EVT.my = rangeY;	    evt.what = EVT_MOUSEMOVE;	    evt.when = ev.timestamp*100;	    evt.where_x = EVT.mx;	    evt.where_y = EVT.my;	    evt.relative_x = ev.dx;	    evt.relative_y = ev.dy;	    evt.modifiers = but_stat;	    addEvent(&evt);	    }	evt.what = ev.buttons < old_buttons ? EVT_MOUSEUP : EVT_MOUSEDOWN;	evt.when = ev.timestamp*100;	evt.where_x = EVT.mx;	evt.where_y = EVT.my;	evt.relative_x = ev.dx;	evt.relative_y = ev.dy;	evt.modifiers = but_stat;	evt.message = message;	if (ev.buttons != old_buttons) {	    addEvent(&evt);	    old_buttons = ev.buttons;	    }	}}#endif  /* __QNXNTO__ *//****************************************************************************REMARKS:This macro/function is used to converts the scan codes reported by thekeyboard to our event libraries normalised format. We only have one scancode for the 'A' key, and use shift modifiers to determine if it is aCtrl-F1, Alt-F1 etc. The raw scan codes from the keyboard work this way,but the OS gives us 'cooked' scan codes, we have to translate them backto the raw format.****************************************************************************/#define _EVT_maskKeyCode(evt)/****************************************************************************REMARKS:Safely abort the event module upon catching a fatal error.****************************************************************************/void _EVT_abort(    int signo){    char    buf[80];    EVT_exit();    sprintf(buf,"Terminating on signal %d",signo);    PM_fatalError(buf);}/****************************************************************************PARAMETERS:mouseMove   - Callback function to call wheneve the mouse needs to be movedREMARKS:Initiliase the event handling module. Here we install our mouse handling ISRto be called whenever any button's are pressed or released. We also buildthe free list of events in the event queue.We use handler number 2 of the mouse libraries interrupt handlers for ourevent handling routines.****************************************************************************/void EVTAPI EVT_init(    _EVT_mouseMoveHandler mouseMove){    int         i;    struct stat st;    char        *iarg[16];#ifdef __QNXNTO__    char        buf[128];    FILE        *p;    int         argno,len;#endif#ifdef __QNXNTO__    ThreadCtl(_NTO_TCTL_IO, 0); /* So joystick code won't blow up */#endif    /* Initialise the event queue */    EVT.mouseMove = mouseMove;    initEventQueue();    memset(keyUpMsg,0,sizeof(keyUpMsg));#ifdef __QNXNTO__    /*     * User may already have input running with the right parameters.     * Thus they could start input at boot time, using the output of     * inputtrap, passing the the -r flag to make it run as a resource     * manager.     */    if ((mouse_fd = open("/dev/mouse0", O_RDONLY | O_NONBLOCK)) < 0) {	/* Run inputtrap to get the args for input */	if ((p = popen("inputtrap", "r")) == NULL)	    PM_fatalError("Error running 'inputtrap'");	fgets(buf, sizeof(buf), p);	pclose(p);	/* Build the argument list */	len = strlen(buf);	iarg[0] = buf;	for (i = 0, argno = 0; i < len && argno < 15;) {	    if (argno == 1) {		/*		 * Add flags to input's arg list.		 * '-r' means run as resource		 * manager, providing the /dev/mouse		 * and /dev/keyboard interfaces.		 * '-P' supresses the /dev/photon		 * mechanism.		 */		iarg[argno++] = "-Pr";		continue;		}	    while (buf[i] == ' ')		i++;	    if (buf[i] == '\0' || buf[i] == '\n')		break;	    iarg[argno++] = &buf[i];	    while (buf[i] != ' '		&& buf[i] != '\0' && buf[i] != '\n')		i++;	    buf[i++] = '\0';	    }	iarg[argno] = NULL;	if ((kill_pid = spawnvp(P_NOWAITO, iarg[0], iarg)) == -1) {	    perror("spawning input resmgr");	    PM_fatalError("Could not start input resmgr");	    }	for (i = 0; i < 10; i++) {	    if (stat("/dev/mouse0", &st) == 0)		break;	    sleep(1);	    }	if ((mouse_fd = open("/dev/mouse0", O_RDONLY|O_NONBLOCK)) < 0) {	    perror("/dev/mouse0");	    PM_fatalError("Could not open /dev/mouse0");	    }	}    if ((kbd_fd = open("/dev/keyboard0", O_RDONLY|O_NONBLOCK)) < 0) {	perror("/dev/keyboard0");	PM_fatalError("Could not open /dev/keyboard0");	}#else    /* Connect to Input/Mouse for event handling */    if (_PM_mouse_ctl == NULL) {	_PM_mouse_ctl = mouse_open(0, "/dev/mouse", 0);	/* "Mouse" is not running; attempt to start it */	if (_PM_mouse_ctl == NULL) {	    iarg[0] = "mousetrap";	    iarg[1] = "start";	    iarg[2] = NULL;	    if ((kill_pid = spawnvp(P_NOWAITO, iarg[0], (void*)iarg)) == -1)		perror("spawn (mousetrap)");	    else {		for (i = 0; i < 10; i++) {		    if (stat("/dev/mouse", &st) == 0)			break;		    sleep(1);		    }		_PM_mouse_ctl = mouse_open(0, "/dev/mouse", 0);		}	    }	}    if (_PM_keyboard_fd == -1)	_PM_keyboard_fd = open("/dev/kbd", O_RDONLY|O_NONBLOCK);#endif    /* Catch program termination signals so we can clean up properly */    signal(SIGABRT, _EVT_abort);    signal(SIGFPE, _EVT_abort);    signal(SIGINT, _EVT_abort);}/****************************************************************************REMARKSChanges the range of coordinates returned by the mouse functions to thespecified range of values. This is used when changing between graphicsmodes set the range of mouse coordinates for the new display mode.****************************************************************************/void EVTAPI EVT_setMouseRange(    int xRes,    int yRes){    rangeX = xRes;    rangeY = yRes;}/****************************************************************************REMARKSModifes the mouse coordinates as necessary if scaling to OS coordinates,and sets the OS mouse cursor position.****************************************************************************/#define _EVT_setMousePos(x,y)/****************************************************************************REMARKS:Initiailises the internal event handling modules. The EVT_suspend functioncan be called to suspend event handling (such as when shelling out to DOS),and this function can be used to resume it again later.****************************************************************************/void EVT_resume(void){    /* Do nothing for QNX */}/****************************************************************************REMARKSSuspends all of our event handling operations. This is also used tode-install the event handling code.****************************************************************************/void EVT_suspend(void){    /* Do nothing for QNX */}/****************************************************************************REMARKSExits the event module for program terminatation.****************************************************************************/void EVT_exit(void){#ifdef __QNXNTO__    char    c;    int flags;    if (kbd_fd != -1) {	close(kbd_fd);	kbd_fd = -1;	}    if (mouse_fd != -1) {	close(mouse_fd);	mouse_fd = -1;	}#endif    /* Restore signal handlers */    signal(SIGABRT, SIG_DFL);    signal(SIGFPE, SIG_DFL);    signal(SIGINT, SIG_DFL);#ifndef __QNXNTO__    /* Kill the Input/Mouse driver if we have spawned it */    if (_PM_mouse_ctl != NULL) {	struct _fd_entry    fde;	uint            pid = 0;	/* Find out the pid of the mouse driver */	if (kill_pid > 0) {	    if (qnx_fd_query(0,		0, _PM_mouse_ctl->fd, &fde) != -1)		pid = fde.pid;	    }	mouse_close(_PM_mouse_ctl);	_PM_mouse_ctl = NULL;	if (pid > 0) {	    /* For some reasons the PID's are different under QNX4,	     * so we use the old mechanism to kill the mouse server.	     */	    kill(pid, SIGTERM);	    kill_pid = 0;	    }	}#endif    if (kill_pid > 0) {	kill(kill_pid, SIGTERM);	kill_pid = 0;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲久草在线视频| 国产精品传媒视频| 欧美影院精品一区| 色综合亚洲欧洲| 欧美一级黄色片| 欧美日韩美女一区二区| 色999日韩国产欧美一区二区| 不卡av在线网| www.成人在线| 色婷婷av久久久久久久| 欧美三级在线视频| 69p69国产精品| 欧美成人精品3d动漫h| 日韩欧美一区二区三区在线| 久久综合九色综合97婷婷女人| 精品国产免费一区二区三区香蕉| 亚洲精品一区二区三区蜜桃下载| 精品久久久久久最新网址| 国产视频一区不卡| 中文字幕在线视频一区| 亚洲狠狠丁香婷婷综合久久久| 亚洲综合一区二区| 蜜臀精品一区二区三区在线观看| 麻豆精品在线视频| 国产成人8x视频一区二区| 99国产精品一区| 欧美久久高跟鞋激| 久久蜜桃一区二区| 亚洲女同女同女同女同女同69| 亚洲bt欧美bt精品| 国产原创一区二区三区| 91尤物视频在线观看| 欧美久久高跟鞋激| 国产精品三级av在线播放| 午夜精品一区二区三区三上悠亚| 久久精品99久久久| av电影在线观看一区| 欧美剧在线免费观看网站| xf在线a精品一区二区视频网站| 中文字幕中文字幕一区二区| 天天操天天色综合| 成人97人人超碰人人99| 欧美一区二区三区在线视频 | 91久久精品国产91性色tv| 4438x亚洲最大成人网| 欧美国产日韩精品免费观看| 亚洲一二三区不卡| av高清不卡在线| 久久久久综合网| 日韩不卡手机在线v区| 色综合一区二区三区| 久久综合色婷婷| 亚洲成av人片在线观看无码| 国产传媒一区在线| 日韩午夜电影av| 亚洲电影第三页| 91小视频在线| 中文字幕乱码久久午夜不卡 | 亚洲黄色免费电影| 国产一区二区三区高清播放| 91九色最新地址| 亚洲天堂av老司机| 国产91富婆露脸刺激对白| 欧美不卡激情三级在线观看| 亚洲成人av免费| 91国偷自产一区二区使用方法| 欧美国产日韩a欧美在线观看 | 成人一区二区三区| 精品久久一区二区三区| 麻豆成人免费电影| 欧美肥妇free| 日韩avvvv在线播放| 精品视频一区二区三区免费| 亚洲精品视频免费观看| 91视频com| 亚洲人快播电影网| 99riav一区二区三区| 亚洲国产激情av| 99久久精品99国产精品| 自拍av一区二区三区| 99久久久久免费精品国产| 国产精品第一页第二页第三页| 99久久综合狠狠综合久久| 国产精品初高中害羞小美女文| 成人免费毛片app| 亚洲免费色视频| 欧美三级一区二区| 日韩中文字幕1| 精品国产一区二区三区久久影院| 麻豆成人av在线| 国产丝袜欧美中文另类| 成人av免费在线观看| 亚洲欧美电影一区二区| 欧美日韩国产综合一区二区三区| 日韩电影免费在线看| 精品va天堂亚洲国产| 成人国产电影网| 亚洲综合在线观看视频| 欧美一区二区三区免费大片| 久久爱www久久做| 国产精品久久久久婷婷二区次| 91蝌蚪国产九色| 日本不卡的三区四区五区| 精品国产乱子伦一区| 国产jizzjizz一区二区| 一区二区三区中文免费| 欧美一区二区视频网站| 成人av在线影院| 亚洲国产中文字幕在线视频综合 | 欧美影院一区二区| 精品中文字幕一区二区| 中文字幕一区二区三区四区| 欧美日韩免费电影| 成人精品免费看| 偷窥少妇高潮呻吟av久久免费| 欧美精品一区二区在线观看| 色综合久久六月婷婷中文字幕| 日韩精品五月天| 中文字幕不卡的av| 欧美电影在线免费观看| av综合在线播放| 激情五月婷婷综合| 亚洲第一久久影院| 国产精品国产精品国产专区不片| 欧美一区二区免费观在线| 成人av中文字幕| 国产真实乱对白精彩久久| 亚洲影视在线播放| 最新不卡av在线| 国产丝袜在线精品| 精品欧美乱码久久久久久| 欧美性大战久久久| 99国产精品久| 成人教育av在线| 激情欧美日韩一区二区| 亚洲r级在线视频| 一区二区三区精品在线观看| 中文字幕一区二区三区精华液| 精品成人私密视频| 26uuu亚洲婷婷狠狠天堂| 91精品国产综合久久精品| 欧美中文字幕一区| 色综合久久久久综合99| 成人97人人超碰人人99| 国产成人aaaa| 成人免费毛片a| 国产·精品毛片| 国产精品一区二区你懂的| 老司机精品视频在线| 奇米影视7777精品一区二区| 日韩高清电影一区| 青青青爽久久午夜综合久久午夜| 偷拍自拍另类欧美| 男人的天堂亚洲一区| 青青草国产成人av片免费| 日韩av一级片| 美女视频黄 久久| 精品一区二区三区视频| 国产一区二区三区四区五区美女 | 日韩欧美国产不卡| 欧美一区二区在线看| 日韩欧美资源站| 26uuu亚洲综合色| 国产日韩欧美精品在线| 国产精品国产三级国产普通话99 | 欧美va日韩va| 久久综合九色综合97婷婷女人| 久久久久久毛片| 国产精品盗摄一区二区三区| 依依成人精品视频| 亚洲高清免费视频| 另类专区欧美蜜桃臀第一页| 国产不卡视频一区| av不卡在线观看| 欧美网站一区二区| 日韩美女视频一区二区在线观看| 久久一夜天堂av一区二区三区| 久久久精品综合| 亚洲精品久久7777| 美女视频网站久久| 成人高清av在线| 欧美日韩国产三级| 亚洲精品一区二区三区精华液 | 欧美制服丝袜第一页| 欧美精品乱人伦久久久久久| 久久色在线观看| 一区二区欧美国产| 久久99精品一区二区三区三区| 成人免费视频一区| 欧美一卡二卡三卡| 日韩毛片精品高清免费| 男男视频亚洲欧美| 99久久综合色| 精品国产一区二区亚洲人成毛片| 最新国产成人在线观看| 久久99国产精品久久99| 91黄视频在线观看| 国产欧美一二三区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 日韩欧美在线一区二区三区|