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

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

?? event.c

?? uboot for K9 AT91RM9200 學習板
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************                   SciTech Multi-platform Graphics Library**  ========================================================================**    The contents of this file are subject to the SciTech MGL Public*    License Version 1.0 (the "License"); you may not use this file*    except in compliance with the License. You may obtain a copy of*    the License at http://www.scitechsoft.com/mgl-license.txt**    Software distributed under the License is distributed on an*    "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or*    implied. See the License for the specific language governing*    rights and limitations under the License.**    The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc.**    The Initial Developer of the Original Code is SciTech Software, Inc.*    All Rights Reserved.**  ========================================================================** Language:     ANSI C* Environment:  QNX** Description:  QNX fullscreen console implementation for the SciTech*               cross platform event library.*****************************************************************************/#include <errno.h>#include <unistd.h>/*--------------------------- Global variables ----------------------------*/#ifndef __QNXNTO__static struct _mouse_ctrl   *_PM_mouse_ctl;static int          _PM_keyboard_fd = -1;/*static int            _PM_modifiers, _PM_leds; */#elsestatic int          kbd_fd = -1, mouse_fd = -1;#endifstatic int          kill_pid = 0;static ushort       keyUpMsg[256] = {0};/* Table of key up messages     */static int          rangeX,rangeY;      /* Range of mouse coordinates   */#define TIME_TO_MSEC(__t)   ((__t).tv_nsec / 1000000 + (__t).tv_sec * 1000)#define LED_NUM         1#define LED_CAP         2#define LED_SCR         4/* Scancode mappings on QNX for special keys */typedef struct {    int scan;    int map;    } keymap;/* TODO: Fix this and set it up so we can do a binary search! */keymap keymaps[] = {    {96, KB_padEnter},    {74, KB_padMinus},    {78, KB_padPlus},    {55, KB_padTimes},    {98, KB_padDivide},    {71, KB_padHome},    {72, KB_padUp},    {73, KB_padPageUp},    {75, KB_padLeft},    {76, KB_padCenter},    {77, KB_padRight},    {79, KB_padEnd},    {80, KB_padDown},    {81, KB_padPageDown},    {82, KB_padInsert},    {83, KB_padDelete},    {105,KB_left},    {108,KB_down},    {106,KB_right},    {103,KB_up},    {110,KB_insert},    {102,KB_home},    {104,KB_pageUp},    {111,KB_delete},    {107,KB_end},    {109,KB_pageDown},    {125,KB_leftWindows},    {126,KB_rightWindows},    {127,KB_menu},    {100,KB_rightAlt},    {97,KB_rightCtrl},    };/* And the keypad with num lock turned on (changes the ASCII code only) */keymap keypad[] = {    {71, ASCII_7},    {72, ASCII_8},    {73, ASCII_9},    {75, ASCII_4},    {76, ASCII_5},    {77, ASCII_6},    {79, ASCII_1},    {80, ASCII_2},    {81, ASCII_3},    {82, ASCII_0},    {83, ASCII_period},    };#define NB_KEYMAPS (sizeof(keymaps)/sizeof(keymaps[0]))#define NB_KEYPAD (sizeof(keypad)/sizeof(keypad[0]))/*---------------------------- Implementation -----------------------------*//****************************************************************************REMARKS:Include generic raw scancode keyboard module.****************************************************************************/#include "common/keyboard.c"/* These are not used under QNX */#define _EVT_disableInt()       1#define _EVT_restoreInt(flags)/****************************************************************************REMARKS:This function is used to return the number of ticks since systemstartup in milliseconds. This should be the same value that is placed intothe time stamp fields of events, and is used to implement auto mouse downevents.****************************************************************************/ulong _EVT_getTicks(void){    struct timespec t;    clock_gettime(CLOCK_REALTIME,&t);    return (t.tv_nsec / 1000000 + t.tv_sec * 1000);}/****************************************************************************REMARKS:Converts a mickey movement value to a pixel adjustment value.****************************************************************************/static int MickeyToPixel(    int mickey){    /* TODO: We can add some code in here to handle 'acceleration' for */    /*       the mouse cursor. For now just use the mickeys. */    return mickey;}#ifdef __QNXNTO__/****************************************************************************REMARKS:Retrieves all events from the mouse/keyboard event queue and stuffs theminto the MGL event queue for further processing.****************************************************************************/static void _EVT_pumpMessages(void){    int         rc1, rc2;    struct _keyboard_packet key;    struct _mouse_packet    ms;    static long     old_buttons = 0;    uint            message = 0, but_stat = 0, mods = 0;    event_t         evt;    while (EVT.count < EVENTQSIZE) {	rc1 = read(kbd_fd, (void *)&key, sizeof(key));	if (rc1 == -1) {	    if (errno == EAGAIN)		rc1 = 0;	    else {		perror("getEvents");		PM_fatalError("Keyboard error");		}	    }	if (rc1 > 0) {	    memset(&evt, 0, sizeof(evt));	    if (key.data.modifiers & KEYMOD_SHIFT)		mods |= EVT_LEFTSHIFT;	    if (key.data.modifiers & KEYMOD_CTRL)		mods |= EVT_CTRLSTATE;	    if (key.data.modifiers & KEYMOD_ALT)		mods |= EVT_ALTSTATE;	    /* Now store the keyboard event data */	    evt.when = TIME_TO_MSEC(key.time);	    if (key.data.flags & KEY_SCAN_VALID)		evt.message |= (key.data.key_scan & 0x7F) << 8;	    if ((key.data.flags & KEY_SYM_VALID) &&		(((key.data.key_sym & 0xff00) == 0xf000 &&		(key.data.key_sym & 0xff) < 0x20) ||		key.data.key_sym < 0x80))		evt.message |= (key.data.key_sym & 0xFF);	    evt.modifiers = mods;	    if (key.data.flags & KEY_DOWN) {		evt.what = EVT_KEYDOWN;		keyUpMsg[evt.message >> 8] = (ushort)evt.message;		}	    else if (key.data.flags & KEY_REPEAT) {		evt.message |= 0x10000;		evt.what = EVT_KEYREPEAT;		}	    else {		evt.what = EVT_KEYUP;		evt.message = keyUpMsg[evt.message >> 8];		if (evt.message == 0)		    continue;		keyUpMsg[evt.message >> 8] = 0;		}	    /* Now add the new event to the event queue */	    addEvent(&evt);	    }	rc2 = read(mouse_fd, (void *)&ms, sizeof (ms));	if (rc2 == -1) {	    if (errno == EAGAIN)		rc2 = 0;	    else {		perror("getEvents");		PM_fatalError("Mouse error");		}	    }	if (rc2 > 0) {	    memset(&evt, 0, sizeof(evt));	    ms.hdr.buttons &=		(_POINTER_BUTTON_LEFT | _POINTER_BUTTON_RIGHT);	    if (ms.hdr.buttons & _POINTER_BUTTON_LEFT)		but_stat = EVT_LEFTBUT;	    if ((ms.hdr.buttons & _POINTER_BUTTON_LEFT) !=		(old_buttons & _POINTER_BUTTON_LEFT))		message = EVT_LEFTBMASK;	    if (ms.hdr.buttons & _POINTER_BUTTON_RIGHT)		but_stat |= EVT_RIGHTBUT;	    if ((ms.hdr.buttons & _POINTER_BUTTON_RIGHT) !=		(old_buttons & _POINTER_BUTTON_RIGHT))		message |= EVT_RIGHTBMASK;	    if (ms.dx || ms.dy) {		ms.dy = -ms.dy;		EVT.mx += MickeyToPixel(ms.dx);		EVT.my += MickeyToPixel(ms.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 = TIME_TO_MSEC(ms.hdr.time);		evt.where_x = EVT.mx;		evt.where_y = EVT.my;		evt.relative_x = ms.dx;		evt.relative_y = ms.dy;		evt.modifiers = but_stat;		addEvent(&evt);		}	    evt.what = ms.hdr.buttons < old_buttons ?		EVT_MOUSEUP : EVT_MOUSEDOWN;	    evt.when = TIME_TO_MSEC(ms.hdr.time);	    evt.where_x = EVT.mx;	    evt.where_y = EVT.my;	    evt.relative_x = ms.dx;	    evt.relative_y = ms.dy;	    evt.modifiers = but_stat;	    evt.message = message;	    if (ms.hdr.buttons != old_buttons) {		addEvent(&evt);		old_buttons = ms.hdr.buttons;		}	    }	if (rc1 + rc2 == 0)	    break;	}}#else/****************************************************************************REMARKS:Retrieves all events from the mouse/keyboard event queue and stuffs theminto the MGL event queue for further processing.****************************************************************************/static void _EVT_pumpMessages(void){    struct mouse_event      ev;    int             rc;    static long         old_buttons = 0;    uint                message = 0, but_stat = 0;    event_t             evt;    char                buf[32];    int             numkeys, i;    /* Poll keyboard events */    while ((numkeys = read(_PM_keyboard_fd, buf, sizeof buf)) > 0) {	for (i = 0; i < numkeys; i++) {	    processRawScanCode(buf[i]);	    }	}    if (_PM_mouse_ctl == NULL)	return;    /* Gobble pending mouse events */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99视频热这里只有精品免费| 蜜臀国产一区二区三区在线播放| 日韩一区二区三区视频| 在线观看亚洲a| 在线观看三级视频欧美| 97国产精品videossex| 99久久精品免费| 91啦中文在线观看| 欧美亚洲国产怡红院影院| 色www精品视频在线观看| 一本久道中文字幕精品亚洲嫩 | 欧美色偷偷大香| 欧美中文一区二区三区| 欧美影视一区在线| 欧美一区二区不卡视频| 欧美一区二区三区在线电影| 日韩欧美电影在线| 久久久久久久久久久黄色 | 成人深夜福利app| 99视频精品在线| 欧美体内she精高潮| 欧美二区在线观看| 久久奇米777| 国产精品久久久久aaaa樱花 | 91福利国产精品| 7777精品久久久大香线蕉| 日韩亚洲欧美一区二区三区| 久久精品综合网| 怡红院av一区二区三区| 免费高清在线一区| 成人一级片在线观看| 欧美自拍偷拍一区| 国产亚洲一区二区三区在线观看| 中文字幕在线观看不卡视频| 午夜精彩视频在线观看不卡| 久久精品国产亚洲一区二区三区| 国产精品12区| 欧美精品乱码久久久久久按摩| 精品久久五月天| 亚洲最快最全在线视频| 国产综合色在线视频区| 99久久久久久| 久久婷婷久久一区二区三区| 亚洲少妇30p| 国产一区二区三区四| 欧美色倩网站大全免费| 欧美国产成人精品| 免费观看成人鲁鲁鲁鲁鲁视频| 91美女片黄在线观看| 久久这里只有精品首页| 日韩在线一区二区| 色乱码一区二区三区88| 久久精品欧美一区二区三区不卡 | 男人的天堂久久精品| 成人免费不卡视频| 欧美不卡在线视频| 亚洲成av人片在线| 色综合网色综合| 亚洲乱码一区二区三区在线观看| 热久久一区二区| 欧洲一区在线电影| 亚洲美女电影在线| 99这里只有久久精品视频| 国产色一区二区| 精品在线观看视频| 日韩欧美国产午夜精品| 亚洲成年人影院| 91福利在线观看| 亚洲免费电影在线| voyeur盗摄精品| 国产精品网站在线| 成人h精品动漫一区二区三区| 久久美女艺术照精彩视频福利播放 | 欧美色偷偷大香| 亚洲精品中文字幕在线观看| 成人av免费观看| 国产精品女主播av| 99久精品国产| 亚洲免费观看视频| 日本道免费精品一区二区三区| 亚洲男人的天堂网| 91久久精品日日躁夜夜躁欧美| 亚洲天堂中文字幕| 91官网在线观看| 婷婷开心激情综合| 91精品国产综合久久久久久| 日韩专区在线视频| 欧美精品一区二区三区高清aⅴ | 国产精品久久久久久久久搜平片| 久久99国产精品麻豆| 2023国产精品自拍| 成人国产精品免费观看视频| 亚洲欧洲日韩在线| 欧美日韩国产三级| 久久99蜜桃精品| 国产女人aaa级久久久级| 成人18精品视频| 亚洲国产精品精华液网站| 欧美一区二区三区婷婷月色| 精品一区二区三区在线播放| 久久久久久久久久美女| 色综合久久久网| 日韩成人精品视频| 国产精品伦一区二区三级视频| 在线观看日韩高清av| 久久精品久久精品| 亚洲精品高清在线观看| 欧美视频在线一区二区三区| 久久99热这里只有精品| 国产精品色呦呦| 91精品一区二区三区在线观看| 久久成人18免费观看| 亚洲三级免费观看| 日韩欧美精品在线视频| 91一区二区三区在线观看| 喷白浆一区二区| 亚洲美女免费在线| 久久亚洲精品小早川怜子| 91麻豆swag| 国产九色sp调教91| 日韩成人午夜电影| 亚洲欧美国产77777| 精品国产三级电影在线观看| 97se亚洲国产综合自在线观| 久久成人麻豆午夜电影| 亚洲成在线观看| 中文字幕色av一区二区三区| 日韩美女一区二区三区四区| 日本韩国一区二区| 国产69精品一区二区亚洲孕妇| 天天综合色天天综合色h| 亚洲三级久久久| 国产欧美日韩精品a在线观看| 91精品国产高清一区二区三区蜜臀 | 亚洲成精国产精品女| 久久在线观看免费| 欧美成人三级在线| 欧美日韩情趣电影| 日本乱人伦一区| 福利91精品一区二区三区| 精品一区二区三区久久久| 天天av天天翘天天综合网 | 精品制服美女久久| 日韩中文字幕麻豆| 亚洲国产一区二区三区青草影视 | 在线看国产日韩| 91在线精品一区二区三区| 国产成人无遮挡在线视频| 国产一区二区三区在线看麻豆| 免费久久精品视频| 青青草成人在线观看| 午夜精品久久久久久不卡8050| 亚洲黄色在线视频| 亚洲视频中文字幕| 亚洲色图第一区| 一区二区三区蜜桃| 亚洲一区二区三区精品在线| 一区二区三区不卡视频| 亚洲欧美福利一区二区| 一区二区免费看| 午夜日韩在线观看| 日本美女视频一区二区| 日韩av网站在线观看| 成人毛片视频在线观看| av动漫一区二区| 色综合久久久网| 亚洲免费在线观看| 亚洲色图欧美在线| 天堂在线亚洲视频| 韩国v欧美v日本v亚洲v| 日本视频免费一区| 裸体一区二区三区| 天天操天天干天天综合网| 天天色 色综合| 91精品福利视频| 中文字幕国产一区二区| 日韩不卡在线观看日韩不卡视频| 91毛片在线观看| 国产精品美女一区二区| 国产一区在线观看麻豆| 337p亚洲精品色噜噜| 一区二区三区波多野结衣在线观看 | 国产精品视频在线看| 免费观看一级欧美片| 欧美日韩久久一区二区| 国产精品短视频| 国产成+人+日韩+欧美+亚洲| 精品久久国产字幕高潮| 奇米色777欧美一区二区| 欧美午夜一区二区三区免费大片| 136国产福利精品导航| 成人小视频在线| 国产欧美综合在线| 国产成人午夜片在线观看高清观看| 日韩三级av在线播放| 美女网站色91| wwwwxxxxx欧美| 成人永久aaa| 亚洲日本一区二区三区| 色av成人天堂桃色av|