亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
精品中文字幕一区二区小辣椒| 国产不卡在线播放| 亚洲成人免费av| 有坂深雪av一区二区精品| 国产日韩一级二级三级| 日本一区二区免费在线观看视频| 久久九九99视频| 国产欧美日韩另类一区| 久久久99免费| 亚洲国产精品成人综合| 久久精品在这里| 国产亚洲精品aa午夜观看| 国产片一区二区三区| 欧美激情综合在线| 国产精品天美传媒| 亚洲色图清纯唯美| 亚洲精品日韩专区silk| 亚洲国产乱码最新视频| 婷婷亚洲久悠悠色悠在线播放| 日韩精品久久久久久| 久久er99精品| 成人精品免费视频| 99久久久久免费精品国产 | 国产乱码精品一区二区三区av| 精品亚洲国内自在自线福利| 国产精品夜夜嗨| 成人av综合一区| 欧美综合欧美视频| 日韩一区二区不卡| 国产欧美日韩精品在线| 亚洲欧美偷拍卡通变态| 日韩一区精品字幕| 国产一本一道久久香蕉| 99re在线视频这里只有精品| 欧美性三三影院| 欧美一级欧美一级在线播放| 精品国产1区二区| 国产精品国产三级国产专播品爱网| 中文字幕日韩精品一区| 一区二区激情小说| 久久成人久久爱| av不卡一区二区三区| 欧美日韩精品是欧美日韩精品| 欧美成人a∨高清免费观看| 国产精品久久三| 香蕉成人啪国产精品视频综合网| 美国精品在线观看| 99久久久精品免费观看国产蜜| 欧美理论在线播放| 国产午夜精品美女毛片视频| 一区二区在线观看视频| 麻豆免费精品视频| 色综合色综合色综合色综合色综合| 精品视频免费看| 国产丝袜美腿一区二区三区| 亚洲一二三四在线| 国产馆精品极品| 欧美私人免费视频| 久久免费美女视频| 亚洲一区在线看| 丁香另类激情小说| 日韩一区二区高清| 一区二区三区在线播放| 国产麻豆精品在线| 欧美日韩国产一级二级| 中文字幕成人av| 日韩精品久久久久久| 91亚洲国产成人精品一区二区三| 日韩欧美电影一区| 亚洲伊人伊色伊影伊综合网| 国产成人精品一区二区三区四区 | 精品国产乱码久久久久久夜甘婷婷| 综合激情网...| 国产一区视频网站| 欧美精品丝袜中出| 亚洲免费观看高清完整版在线| 精品制服美女丁香| 51精品秘密在线观看| 亚洲激情第一区| 成人午夜伦理影院| 精品国产百合女同互慰| 五月激情六月综合| 色狠狠色狠狠综合| 中文字幕制服丝袜一区二区三区 | 午夜精品久久久久| 91久久精品国产91性色tv | 久久99精品国产麻豆不卡| 欧美唯美清纯偷拍| 亚洲欧美另类综合偷拍| 成人永久看片免费视频天堂| 精品乱人伦一区二区三区| 天堂一区二区在线免费观看| 欧美在线一二三四区| 亚洲欧美日韩国产综合在线| 波多野结衣的一区二区三区| 国产欧美一区二区精品性色 | 久久精品理论片| 色网站国产精品| 一区二区三区日韩精品视频| 久久黄色级2电影| 91精品久久久久久久99蜜桃| 亚洲国产cao| 91小视频在线观看| 国产精品萝li| 懂色av一区二区夜夜嗨| 欧美变态tickling挠脚心| 五月综合激情日本mⅴ| 欧美久久一二区| 一个色妞综合视频在线观看| www.亚洲在线| 国产精品久久久久久久久晋中 | 不卡一区中文字幕| 久久久.com| 不卡的电视剧免费网站有什么| 精品国产乱码久久久久久蜜臀| 日韩精品午夜视频| 欧美日韩不卡在线| 亚洲一区二区三区美女| 91啪亚洲精品| 亚洲成av人片一区二区三区| 91久久一区二区| 亚洲综合在线免费观看| 99riav久久精品riav| 亚洲色欲色欲www| 国产精品一二三四| 国产精品理伦片| 成人激情小说乱人伦| 国产精品萝li| 色诱视频网站一区| 一区二区三区在线视频免费| 色一情一伦一子一伦一区| 婷婷成人激情在线网| 67194成人在线观看| 亚洲18女电影在线观看| 91精品国产丝袜白色高跟鞋| 午夜精品久久久久| 久久精品一级爱片| eeuss鲁一区二区三区| 亚洲啪啪综合av一区二区三区| 日本高清不卡视频| 午夜av一区二区三区| 欧美日韩精品是欧美日韩精品| 日韩经典中文字幕一区| 欧美va日韩va| 国产精品伊人色| 日韩精品一区二区三区视频播放 | 日韩中文字幕不卡| 欧美电影免费观看高清完整版| 极品美女销魂一区二区三区免费| 国产亚洲成av人在线观看导航| 99久久综合国产精品| 亚洲一二三区视频在线观看| 日韩欧美中文一区二区| 国产成人免费网站| 亚洲一区二区精品久久av| 精品久久国产老人久久综合| 成人美女视频在线观看| 亚洲激情图片qvod| 精品国产制服丝袜高跟| 盗摄精品av一区二区三区| 丝袜亚洲精品中文字幕一区| 精品国产3级a| 在线亚洲人成电影网站色www| 婷婷夜色潮精品综合在线| 久久蜜桃香蕉精品一区二区三区| 欧美色综合天天久久综合精品| 蜜臀av一区二区在线观看| 日本一区二区视频在线| 欧美欧美欧美欧美| 丁香天五香天堂综合| 亚洲一二三四区| 国产喷白浆一区二区三区| 91.com在线观看| 成人av在线一区二区三区| 日韩经典中文字幕一区| 亚洲欧洲日韩综合一区二区| 欧美一区二区三区四区高清| 欧美中文字幕一区二区三区 | 99精品1区2区| 国模冰冰炮一区二区| 一区二区三区国产豹纹内裤在线| 日韩精品一区二区三区中文不卡| 色综合夜色一区| 国内久久精品视频| 麻豆91精品视频| 亚洲最新在线观看| 国产精品乱码妇女bbbb| 日韩一区二区免费电影| 99久久99久久久精品齐齐| 成人美女视频在线看| 久久精品国产一区二区| 一区二区三区在线看| 欧美国产1区2区| 国产日韩欧美一区二区三区综合| 欧美一级xxx| 欧美亚洲丝袜传媒另类| 成熟亚洲日本毛茸茸凸凹| 日韩福利电影在线| 视频精品一区二区| 一区二区三区四区高清精品免费观看|