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

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

?? mw_uid_ecos_qvfb.cxx

?? microwindows最新源碼
?? CXX
字號:
/* kate: space-indent off; indent-width 4; replace-tabs-save off; replace-tabs off; show-tabs on;  tab-width 4; *//*///////////////////////////////////////////////////////////////////////////////// Copyright (c) 2005 - Alexander Neundorf//// MODULE DESCRIPTION:// This module defines the interface for input devices used by MicroWindows// in an embedded system environment. Originally implemented for RTEMS, this// implementation works for eCos.////  Redistribution and use in source and binary forms, with or without//  modification, are permitted provided that the following conditions//  are met://  1. Redistributions of source code must retain the above copyright//     notice, this list of conditions and the following disclaimer.//  2. Redistributions in binary form must reproduce the above copyright//     notice, this list of conditions and the following disclaimer in the//     documentation and/or other materials provided with the distribution.//  3. The name of the author may not be used to endorse or promote products//     derived from this software without specific prior written permission.////  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR//  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES//  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.//  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,//  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT//  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,//  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY//  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT//  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF//  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.////// MODIFICATION/HISTORY://// mw_uid_ecos_qvfb.cxx// 2005-10-17  Alexander Neundorf  <neundorf@kde.org>////	* UID implementation for QVfb///////////////////////////////////////////////////////////////////////////////*/#define _GNU_SOURCE 1#include <assert.h>#include "ecos_synth_qvfb.h"#include <cyg/infra/diag.h>#include <cyg/hal/hal_io.h>#include <cyg/infra/cyg_type.h>#include <cyg/kernel/kapi.h>#include <rtems/mw_uid.h>#include <mwtypes.h>struct QMouseData mouse_data;int mouse_data_fill=0;struct QVFbKeyData key_data;int key_data_fill=0;static void qvfb_read_mouse_data(int fd){	char* buf=(char*)&mouse_data;	int res=cyg_hal_sys_read(fd, buf+mouse_data_fill, sizeof(struct QMouseData)-mouse_data_fill);	if (res<0)		diag_printf("mouse read returned %d\n", res);	else if (res==0)		diag_printf("mouse read returned 0!\n");	else	{		mouse_data_fill+=res;		if (mouse_data_fill==sizeof(struct QMouseData))		{			struct MW_UID_MESSAGE msg;			msg.type=MV_UID_ABS_POS;			msg.m.pos.x=mouse_data.xp;			msg.m.pos.y=mouse_data.yp;			msg.m.pos.btns=0;			if (mouse_data.buttons & 0x01)				msg.m.pos.btns|=MV_BUTTON_LEFT;			if (mouse_data.buttons & 0x2)				msg.m.pos.btns|=MV_BUTTON_RIGHT;			if (mouse_data.buttons & 0x04)				msg.m.pos.btns|=MV_BUTTON_CENTER;			uid_write_message( &msg );			mouse_data_fill=0;		}	}}static void qvfb_read_keyboard_data(int fd){	char* buf=(char*)&key_data;	int res=cyg_hal_sys_read(fd, buf+key_data_fill, sizeof(struct QVFbKeyData)-key_data_fill);	if (res<0)		diag_printf("key read returned %d\n", res);	else if (res==0)		diag_printf("key read returned 0!\n");	else	{		key_data_fill+=res;		if (key_data_fill==sizeof(struct QVFbKeyData))		{			short keycode=key_data.unicode & 0xffff;			diag_printf("u: 0x%x, mod: 0x%x, press: 0x%x repeat: %d\n", key_data.unicode, key_data.modifiers, (unsigned int)key_data.press, (unsigned int)key_data.repeat);			struct MW_UID_MESSAGE msg;			msg.type=MV_UID_KBD;			msg.m.kbd.mode= (key_data.press==1)?1:2;			key_data_fill=0;			if (keycode!=0)			{				msg.m.kbd.code=keycode;			}			else			{				switch ((key_data.unicode >> 16) & 0xffff)				{//            case 0x1010://               msg.m.kbd.code=MWKEY_FIRST;//               break;					case 0x1012:						msg.m.kbd.code=MWKEY_LEFT;						break;					case 0x1014:						msg.m.kbd.code=MWKEY_RIGHT;						break;					case 0x1013:						msg.m.kbd.code=MWKEY_UP;						break;					case 0x1015:						msg.m.kbd.code=MWKEY_DOWN;						break;					case 0x1006:						msg.m.kbd.code=MWKEY_INSERT;						break;					case 0x1007:						msg.m.kbd.code=MWKEY_DELETE;						break;					case 0x1010:						msg.m.kbd.code=MWKEY_HOME;						break;					case 0x1011:						msg.m.kbd.code=MWKEY_END;						break;					case 0x1016:						msg.m.kbd.code=MWKEY_PAGEUP;						break;					case 0x1017:						msg.m.kbd.code=MWKEY_PAGEDOWN;						break;					case 0x1030:						msg.m.kbd.code=MWKEY_F1;						break;					case 0x1031:						msg.m.kbd.code=MWKEY_F2;						break;					case 0x1032:						msg.m.kbd.code=MWKEY_F3;						break;					case 0x1033:						msg.m.kbd.code=MWKEY_F4;						break;					case 0x1034:						msg.m.kbd.code=MWKEY_F5;						break;					case 0x1035:						msg.m.kbd.code=MWKEY_F6;						break;					case 0x1036:						msg.m.kbd.code=MWKEY_F7;						break;					case 0x1037:						msg.m.kbd.code=MWKEY_F8;						break;					case 0x1038:						msg.m.kbd.code=MWKEY_F9;						break;					case 0x1039:						msg.m.kbd.code=MWKEY_F10;						break;					case 0x103a:						msg.m.kbd.code=MWKEY_F11;						break;					case 0x103b:						msg.m.kbd.code=MWKEY_F12;						break;					case 0x1025:						msg.m.kbd.code=MWKEY_NUMLOCK;						break;					case 0x1024:						msg.m.kbd.code=MWKEY_CAPSLOCK;						break;					case 0x1026:						msg.m.kbd.code=MWKEY_SCROLLOCK;						break;					case 0x1020:						msg.m.kbd.code=MWKEY_LSHIFT;						break;					case 0x1021:						msg.m.kbd.code=MWKEY_LCTRL;						break;					case 0x1023:						msg.m.kbd.code=MWKEY_LALT;						break;					case 0xffff:						msg.m.kbd.code=MWKEY_ALTGR;						break;						/* Numeric keypad*//*#define MWKEY_KP0		0xF80A#define MWKEY_KP1		0xF80B#define MWKEY_KP2		0xF80C#define MWKEY_KP3		0xF80D#define MWKEY_KP4		0xF80E#define MWKEY_KP5		0xF80F#define MWKEY_KP6		0xF810#define MWKEY_KP7		0xF811#define MWKEY_KP8		0xF812#define MWKEY_KP9		0xF813#define MWKEY_KP_PERIOD		0xF814#define MWKEY_KP_DIVIDE		0xF815#define MWKEY_KP_MULTIPLY	0xF816#define MWKEY_KP_MINUS		0xF817#define MWKEY_KP_PLUS		0xF818#define MWKEY_KP_ENTER		0xF819#define MWKEY_KP_EQUALS		0xF81A*/					default:						return; //no known key				}			}			uid_write_message( &msg );		}	}}#define STACK_SIZE (16*1024)struct QVfbMwuidInitializer{	QVfbMwuidInitializer();	cyg_thread thread;	cyg_handle_t handle;	char stack[STACK_SIZE] __attribute__ ((aligned(16)));};QVfbMwuidInitializer g_qvfbMwuid;externC void qvfb_run_mwuid_mainloop(cyg_addrword_t data){	int keyboardFd=-1;	int mouseFd=-1;	keyboardFd=qvfb_open_keyboard();	mouseFd=qvfb_open_mouse();	diag_printf("***** keyboard: %d mouse: %d %p\n", keyboardFd, mouseFd, g_qvfbMwuid.stack);	while (1)	{		struct cyg_hal_sys_fd_set readFds;		struct cyg_hal_sys_timeval tv;		int maxFd=-1;		tv.hal_tv_sec=0;		tv.hal_tv_usec=900*1000;		CYG_HAL_SYS_FD_ZERO(&readFds);		if (mouseFd>=0)		{			CYG_HAL_SYS_FD_SET(mouseFd, &readFds);			maxFd=mouseFd;		}		if (keyboardFd>=0)		{			if (keyboardFd>maxFd)				maxFd=keyboardFd;			CYG_HAL_SYS_FD_SET(keyboardFd, &readFds);		}		int res=cyg_hal_sys__newselect(maxFd+1, &readFds, NULL, NULL, &tv);		if (res<0)		{			if (res==-4) // ignore EINTR			{				cyg_thread_delay(1);			}			else				diag_printf("cyg_hal_sys_select() error %d\n", res);		}		else if (res==0)		{         //timeout		}		else		{			if (CYG_HAL_SYS_FD_ISSET(mouseFd, &readFds))			{				qvfb_read_mouse_data(mouseFd);			}			if (CYG_HAL_SYS_FD_ISSET(keyboardFd, &readFds))			{				qvfb_read_keyboard_data(keyboardFd);			}		}	}	if (mouseFd>=0)		cyg_hal_sys_close(mouseFd);	if (keyboardFd>=0)		cyg_hal_sys_close(keyboardFd);}QVfbMwuidInitializer::QVfbMwuidInitializer(){	uid_register_device(int(this), "mwuid_qvfb" ); // this does nothing right now	cyg_thread_create(4, qvfb_run_mwuid_mainloop, (cyg_addrword_t) 1, "mwuid_qvfb",			  (void *)  stack, STACK_SIZE, &handle, &thread);	cyg_thread_resume(handle);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲1区2区3区视频| 久久久久久综合| 亚洲国产欧美在线| 欧美性受xxxx黑人xyx| 亚洲精品国产成人久久av盗摄 | 欧美激情在线看| 国产91精品一区二区麻豆网站| 26uuu亚洲| 成人av电影免费观看| 亚洲啪啪综合av一区二区三区| 在线精品视频免费观看| 亚洲国产va精品久久久不卡综合| 欧美一卡二卡在线观看| 久久99精品国产麻豆婷婷 | 欧美日韩在线不卡| 懂色av中文一区二区三区| 国产精品全国免费观看高清| 91在线视频播放地址| 亚洲成年人影院| 久久亚洲精品小早川怜子| 成人教育av在线| 亚洲地区一二三色| 国产清纯美女被跳蛋高潮一区二区久久w| 成人av综合在线| 天堂精品中文字幕在线| 久久精品夜色噜噜亚洲aⅴ| 色999日韩国产欧美一区二区| 五月婷婷激情综合网| 久久久99久久精品欧美| 欧美午夜不卡视频| 国产精品一区2区| 亚洲高清久久久| 国产精品视频九色porn| 91麻豆精品国产91久久久使用方法 | 成人免费视频一区| 亚洲第一狼人社区| 中文字幕av一区二区三区| 欧美丰满少妇xxxbbb| 成年人网站91| 狠狠色狠狠色合久久伊人| 夜夜亚洲天天久久| 国产日韩精品一区二区浪潮av | 视频一区二区国产| 国产精品久久久久久久岛一牛影视| 欧美日韩国产经典色站一区二区三区| 国产精品99久久不卡二区| 午夜精品视频在线观看| 日韩理论片中文av| 久久综合久久综合久久| 欧美久久久久久久久中文字幕| 丁香天五香天堂综合| 久久精品国产第一区二区三区| 夜夜揉揉日日人人青青一国产精品| 久久九九国产精品| 日韩女优毛片在线| 欧美日韩一区二区在线视频| 白白色亚洲国产精品| 国产精品一区二区久激情瑜伽| 亚洲超碰97人人做人人爱| 亚洲欧美一区二区三区久本道91| 久久久夜色精品亚洲| 欧美成人三级电影在线| 538在线一区二区精品国产| 在线观看日韩精品| 91亚洲精品一区二区乱码| 国产成都精品91一区二区三| 极品少妇xxxx精品少妇偷拍| 日韩精品亚洲一区二区三区免费| 亚洲一区在线观看免费| 日韩一区在线看| 国产精品不卡视频| 中文字幕第一区二区| 久久久久国产精品免费免费搜索| 欧美xxxx在线观看| 日韩精品一区二区三区蜜臀| 91精品国产91综合久久蜜臀| 欧美精品在线一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 欧美挠脚心视频网站| 欧美影片第一页| 欧美日韩视频专区在线播放| 欧美日韩视频在线一区二区| 欧美日韩一区在线| 欧美无砖砖区免费| 欧美丰满高潮xxxx喷水动漫| 欧美一激情一区二区三区| 欧美一级二级三级蜜桃| 欧美大片国产精品| 久久久久久久久久久黄色| 国产精品沙发午睡系列990531| 亚洲私人黄色宅男| 岛国精品在线观看| 成人国产精品免费观看视频| 91美女精品福利| 欧美亚洲禁片免费| 日韩一区二区三区在线| 国产欧美一区二区三区在线老狼| 国产精品全国免费观看高清 | 亚洲日本va午夜在线影院| 一区二区三区av电影| 丝袜亚洲另类欧美| 国产一区二区91| 一本到不卡免费一区二区| 欧美日本在线播放| 久久久亚洲欧洲日产国码αv| 国产精品久久毛片| 亚洲mv在线观看| 国产麻豆精品视频| 色婷婷亚洲精品| 欧美不卡一区二区三区四区| 久久久精品国产99久久精品芒果| 综合久久给合久久狠狠狠97色 | 日韩国产在线观看一区| 国产一区在线精品| 在线亚洲一区二区| 日韩精品最新网址| 亚洲婷婷综合久久一本伊一区| 亚洲国产精品久久不卡毛片| 国产一区高清在线| 欧美在线一二三四区| 久久久蜜桃精品| 亚洲午夜影视影院在线观看| 国产精品一色哟哟哟| 在线观看亚洲成人| 亚洲国产激情av| 日韩精品成人一区二区在线| 成人18视频在线播放| 日韩欧美成人激情| 一区二区三区四区在线免费观看| 狠狠色狠狠色合久久伊人| 欧美性做爰猛烈叫床潮| 中文字幕不卡的av| 日韩av一级片| 色一情一乱一乱一91av| 久久久高清一区二区三区| 亚洲大片一区二区三区| 91在线porny国产在线看| 久久一二三国产| 日本人妖一区二区| 欧美亚洲高清一区二区三区不卡| 国产精品污污网站在线观看| 久久精品国产99| 欧美三级一区二区| 一区二区三区国产| 99精品国产视频| 国产精品久久久久久久久快鸭 | 欧美日韩一区在线| 亚洲天堂成人在线观看| 国产aⅴ综合色| 久久亚洲春色中文字幕久久久| 亚洲 欧美综合在线网络| aa级大片欧美| 日本一区二区成人| 国产激情偷乱视频一区二区三区 | 日本久久精品电影| 国产精品剧情在线亚洲| 国产99久久久久| 久久久久高清精品| 久久99精品久久久久久动态图 | 国产精品国产三级国产专播品爱网| 久久av资源网| 日韩免费视频线观看| 日本vs亚洲vs韩国一区三区| 欧美高清dvd| 日本欧美肥老太交大片| 欧美久久久一区| 日韩高清在线一区| 欧美一级片在线观看| 青青草国产成人99久久| 日韩免费看的电影| 久久99国产精品久久| 精品国产免费一区二区三区香蕉| 美女视频黄免费的久久| 日韩片之四级片| 国产在线国偷精品产拍免费yy| 久久综合成人精品亚洲另类欧美 | 欧美视频自拍偷拍| 亚洲线精品一区二区三区| 欧美日韩免费一区二区三区视频| 亚洲va天堂va国产va久| 91精品欧美久久久久久动漫| 蜜臀a∨国产成人精品| 精品国产亚洲在线| 成人美女在线观看| 樱花草国产18久久久久| 欧美日韩国产123区| 麻豆精品一区二区av白丝在线| 久久一区二区三区国产精品| 成人激情综合网站| 一区二区三区不卡视频在线观看| 欧美精品亚洲一区二区在线播放| 久久国产精品免费| 欧美激情综合五月色丁香| 色哟哟欧美精品| 免费成人性网站| 欧美经典一区二区三区| 欧美亚洲愉拍一区二区| 日韩国产欧美一区二区三区| 久久久久久久久久久久久夜| 91高清在线观看|