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

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

?? event.svga

?? UBOOT 源碼
?? SVGA
?? 第 1 頁 / 共 3 頁
字號:
we can clean up properly.****************************************************************************/static void exitHandler(int sig){    exit(-1);}/****************************************************************************REMARKS:Sleep until the virtual terminal is active****************************************************************************/void wait_vt_active(void){    while (ioctl(tty_fd, VT_WAITACTIVE, tty_vc) < 0) {        if ((errno != EAGAIN) && (errno != EINTR)) {            perror("ioctl(VT_WAITACTIVE)");            exit(1);            }        usleep(150000);        }}/****************************************************************************REMARKS:Signal handler called when our virtual terminal has been released and we arelosing the active focus.****************************************************************************/static void release_vt_signal(int n){    forbid_vt_acquire = 1;    if (forbid_vt_release) {        forbid_vt_acquire = 0;        ioctl(tty_fd, VT_RELDISP, 0);        return;        }    // TODO: Call the user supplied suspendAppCallback and restore text    //       mode (saving the existing mode so we can restore it).    //    //       Also if the suspendAppCallback is NULL then we have to    //       ignore the switch request!    if(suspendAppCallback){      oldmode = VBE_getVideoMode();      suspendAppCallback(true);      VBE_setVideoMode(initmode);    }    ioctl(tty_fd, VT_RELDISP, 1);    forbid_vt_acquire = 0;    wait_vt_active();}/****************************************************************************REMARKS:Signal handler called when our virtual terminal has been re-aquired and weare now regaiing the active focus.****************************************************************************/static void acquire_vt_signal(int n){    forbid_vt_release = 1;    if (forbid_vt_acquire) {        forbid_vt_release = 0;        return;        }    // TODO: Restore the old display mode, call the user suspendAppCallback    //       and and we will be back in graphics mode.    if(suspendAppCallback){      VBE_setVideoMode(oldmode);      suspendAppCallback(false);    }    ioctl(tty_fd, VT_RELDISP, VT_ACKACQ);    forbid_vt_release = 0;}/****************************************************************************REMARKS:Function to set the action for a specific signal to call our signal handler.****************************************************************************/static void set_sigaction(int sig,void (*handler)(int)){    struct sigaction    siga;    siga.sa_handler = handler;    siga.sa_flags = SA_RESTART;    memset(&(siga.sa_mask), 0, sizeof(sigset_t));    sigaction(sig, &siga, NULL);}/****************************************************************************REMARKS:Function to take over control of VT switching so that we can capturevirtual terminal release and aquire signals, allowing us to properlysupport VT switching while in graphics modes.****************************************************************************/static void take_vt_control(void){    struct vt_mode      vtmode;    ioctl(tty_fd, VT_GETMODE, &vtmode);    oldvtmode = vtmode;    vtmode.mode = VT_PROCESS;    vtmode.relsig = SIGUSR1;    vtmode.acqsig = SIGUSR2;    set_sigaction(SIGUSR1, release_vt_signal);    set_sigaction(SIGUSR2, acquire_vt_signal);    ioctl(tty_fd, VT_SETMODE, &oldvtmode);}/****************************************************************************REMARKS:Set the shift keyboard LED's based on the current keyboard modifiers flags.****************************************************************************/static void updateLEDStatus(void){    int state = 0;    if (key_modifiers & EVT_CAPSSTATE)        state |= LED_CAP;    if (key_modifiers & EVT_NUMSTATE)        state |= LED_NUM;    ioctl(tty_fd,KDSETLED,state);}/****************************************************************************PARAMETERS:scancode    - Raw scan code to handleREMARKS:Handles the shift key modifiers and keeps track of the shift key statesso that we can return the correct ASCII codes for the keyboard.****************************************************************************/static void toggleModifiers(    int scancode){    static int caps_down = 0,num_down = 0;    if (scancode & 0x80) {        /* Handle key-release function */        scancode &= 0x7F;        if (scancode == 0x2A || scancode == 0x36)            key_modifiers &= ~EVT_SHIFTKEY;        else if (scancode == 0x1D || scancode == 0x61)            key_modifiers &= ~EVT_CTRLSTATE;        else if (scancode == 0x38 || scancode == 0x64)            key_modifiers &= ~EVT_ALTSTATE;        else if (scancode == 0x3A)            caps_down = false;        else if (scancode == 0x45)            num_down = false;        }    else {        /* Handle key-down function */        scancode &= 0x7F;        if (scancode == 0x2A || scancode == 0x36)            key_modifiers |= EVT_SHIFTKEY;        else if (scancode == 0x1D || scancode == 0x61)            key_modifiers |= EVT_CTRLSTATE;        else if (scancode == 0x38 || scancode == 0x64)            key_modifiers |= EVT_ALTSTATE;        else if (scancode == 0x3A) {            if (!caps_down) {                key_modifiers ^= EVT_CAPSSTATE;                updateLEDStatus();                }            caps_down = true;            }        else if (scancode == 0x45) {            if (!num_down) {                key_modifiers ^= EVT_NUMSTATE;                updateLEDStatus();                }            num_down = true;            }        }}/***************************************************************************REMARKS:Returns the number of bits that have changed from 0 to 1(a negative value means the number of bits that have changed from 1 to 0)  **************************************************************************/static int compareBits(short a, short b){    int ret = 0;    if( (a&1) != (b&1) ) ret += (b&1) ? 1 : -1;    if( (a&2) != (b&2) ) ret += (b&2) ? 1 : -1;    if( (a&4) != (b&4) ) ret += (b&4) ? 1 : -1;    return ret;}/***************************************************************************REMARKS:Turns off all keyboard state because we can't rely on them anymore as soonas we switch VT's***************************************************************************/static void keyboard_clearstate(void){  key_modifiers = 0;  memset(key_down, 0, sizeof(key_down));}/****************************************************************************REMARKS:Pumps all events from the console event queue into the WinDirect event queue.****************************************************************************/static void pumpEvents(void){    static uchar    buf[KBDREADBUFFERSIZE];    static char     data[5];    static int      old_buts, old_mx, old_my;    static struct timeval t;    fd_set fds;    int             numkeys,i;    int             dx, dy, buts;    /* Read all pending keypresses from keyboard buffer and process */    while ((numkeys = read(tty_fd, buf, KBDREADBUFFERSIZE)) > 0) {        for (i = 0; i < numkeys; i++) {            toggleModifiers(buf[i]);            if (key_modifiers & EVT_ALTSTATE){              int fkey = 0;              // Do VT switching here for Alt+Fx keypresses              switch(buf[i] & 0x7F){              case 59 ... 68: /* F1 to F10 */                fkey = (buf[i] & 0x7F) - 58;                break;              case 87: /* F11 */              case 88: /* F12 */                fkey = (buf[i] & 0x7F) - 76;                break;              }              if(fkey){                struct vt_stat vts;                ioctl(tty_fd, VT_GETSTATE, &vts);                                if(fkey != vts.v_active){                  keyboard_clearstate();                  ioctl(tty_fd, VT_ACTIVATE, fkey);                }              }            }            if (buf[i] & 0x80)                addKeyEvent(EVT_KEYUP,buf[i] & 0x7F);            else                addKeyEvent(EVT_KEYDOWN,buf[i] & 0x7F);            }        // TODO: If we want to handle VC switching we will need to do it        //       in here so that we can switch away from the VC and then        //       switch back to it later. Right now VC switching is disabled        //       and in order to enable it we need to save/restore the state        //       of the graphics screen (using the suspendAppCallback and        //       saving/restoring the state of the current display mode).        }    /* Read all pending mouse events and process them */    if(conn > 0){        FD_ZERO(&fds);        FD_SET(conn, &fds);        t.tv_sec = t.tv_usec = 0L;        while (select(conn+1, &fds, NULL, NULL, &t) > 0) {            if(read(conn, data, 5) == 5){                buts = (~data[0]) & 0x07;                dx = (char)(data[1]) + (char)(data[3]);                dy = -((char)(data[2]) + (char)(data[4]));                                mx += dx; my += dy;                                if (dx || dy)                    addMouseEvent(EVT_MOUSEMOVE, 0, mx, my, buts);                                if (buts != old_buts){                    int c = compareBits(buts,old_buts);                    if(c>0)                        addMouseEvent(EVT_MOUSEDOWN, 0, mx, my, buts);                    else if(c<0)                        addMouseEvent(EVT_MOUSEUP, 0, mx, my, buts);                }                old_mx = mx; old_my = my;                old_buts = buts;                FD_SET(conn, &fds);                t.tv_sec = t.tv_usec = 0L;            }        }    }}/*------------------------ Public interface routines ----------------------*//****************************************************************************PARAMETERS:which       - Which code for event to postwhat        - Event code for event to postmessage     - Event messagemodifiers   - Shift key/mouse button modifiersRETURNS:True if the event was posted, false if queue is full.REMARKS:Posts an event to the event queue. This routine can be used to post any typeof event into the queue.****************************************************************************/ibool _WDAPI WD_postEvent(    ulong which,    uint what,    ulong message,    ulong modifiers){    WD_event    evt;    if (count < EVENTQSIZE) {        /* Save information in event record */        evt.which = which;        evt.what = what;        evt.when = getTimeStamp();        evt.message = message;        evt.modifiers = modifiers;        addEvent(&evt);             /* Add to tail of event queue   */        return true;        }    else        return false;}/****************************************************************************PARAMETERS:mask    - Event mask to useREMARKS:Flushes all the event specified in 'mask' from the event queue.****************************************************************************/void _WDAPI WD_flushEvent(    uint mask){    WD_event    evt;    do {                            /* Flush all events */        WD_getEvent(&evt,mask);        } while (evt.what != EVT_NULLEVT);}/****************************************************************************PARAMETERS:evt     - Place to store eventmask    - Event mask to useREMARKS:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人动漫一区| 91丨九色丨尤物| 老司机精品视频导航| 日韩主播视频在线| 丝袜国产日韩另类美女| 天堂在线亚洲视频| 五月婷婷激情综合| 国产一区二区三区综合| 国产综合一区二区| 国产福利精品导航| 国产激情一区二区三区四区| 国产福利一区二区| 99久久婷婷国产| 日本韩国一区二区三区视频| 在线观看日韩一区| 欧美日本高清视频在线观看| 日韩欧美资源站| 久久久国际精品| 国产精品久久综合| 亚洲一线二线三线久久久| 日日夜夜精品视频免费| 精品一区二区三区香蕉蜜桃| 国产a级毛片一区| 99精品国产视频| 欧美日韩一级视频| 精品三级在线看| 国产精品沙发午睡系列990531| 国产精品每日更新| 亚洲小说春色综合另类电影| 麻豆精品在线播放| 国产在线精品视频| 日本精品视频一区二区三区| 51精品视频一区二区三区| 日韩一卡二卡三卡四卡| 国产欧美日韩精品在线| 一区二区在线观看免费| 日韩精品色哟哟| 狠狠色狠狠色综合| 亚洲免费在线观看视频| 天堂在线亚洲视频| 国产大陆亚洲精品国产| 色综合中文综合网| 国产精品全国免费观看高清| 亚洲午夜精品17c| 国产风韵犹存在线视精品| 日本道色综合久久| 26uuu色噜噜精品一区二区| 亚洲视频1区2区| 久久99精品久久久| 99久久精品情趣| 欧美一级生活片| 中文在线资源观看网站视频免费不卡| 亚洲午夜久久久久| 国产suv精品一区二区三区| 欧美午夜影院一区| 欧美极品另类videosde| 视频在线观看一区| 99久久精品国产观看| 欧美成人性战久久| 一区二区三区免费网站| 国产成人在线视频网址| 欧美老人xxxx18| 国产精品国产三级国产aⅴ原创 | 欧美日韩在线一区二区| 日本一区二区三区四区| 日本欧美在线看| 色婷婷精品大在线视频| 国产午夜精品福利| 开心九九激情九九欧美日韩精美视频电影| av激情综合网| 久久免费视频一区| 免费av网站大全久久| 91福利国产成人精品照片| 欧美极品aⅴ影院| 久久99精品一区二区三区| 欧美午夜精品久久久久久超碰| 日本一区二区三区久久久久久久久不| 婷婷国产v国产偷v亚洲高清| 91热门视频在线观看| 国产精品进线69影院| 国产经典欧美精品| 久久久久综合网| 激情图区综合网| 欧美一区二区成人6969| 午夜精品福利一区二区蜜股av| av电影在线观看一区| 国产视频一区在线观看| 国产一区美女在线| 欧美电影精品一区二区| 美国十次综合导航| 欧美大片免费久久精品三p| 日日摸夜夜添夜夜添精品视频| 欧美日韩在线观看一区二区 | 日本亚洲免费观看| 欧美日韩精品一区二区三区蜜桃| 麻豆精品一区二区综合av| 欧美精品在欧美一区二区少妇| 亚洲一二三区不卡| 欧美丝袜丝nylons| 亚洲成av人综合在线观看| 欧美三级午夜理伦三级中视频| 亚洲电影一区二区| 欧美日韩在线综合| 日韩电影免费在线观看网站| 日韩一区二区精品| 精品一二三四在线| 久久久久久免费毛片精品| 国产一区二区久久| 日本一区二区视频在线| 94-欧美-setu| 亚洲精品久久久蜜桃| 日本韩国欧美国产| 午夜伊人狠狠久久| 日韩免费视频一区| 国产精品 日产精品 欧美精品| 中文字幕免费观看一区| 91在线你懂得| 亚洲电影你懂得| 日韩三级视频中文字幕| 国产伦理精品不卡| 一区视频在线播放| 欧美日韩五月天| 久久疯狂做爰流白浆xx| 中文字幕欧美日韩一区| 91黄色免费看| 日本网站在线观看一区二区三区 | 图片区小说区国产精品视频| 日韩一区二区精品葵司在线 | 精品国产91洋老外米糕| 国产91色综合久久免费分享| 亚洲男人天堂av| 日韩欧美第一区| 99麻豆久久久国产精品免费优播| 亚洲图片有声小说| 精品国产乱码久久久久久图片| 国产v综合v亚洲欧| 亚洲香肠在线观看| 2017欧美狠狠色| 91网站最新网址| 免费成人在线网站| 中文字幕一区二区在线播放| 91精品综合久久久久久| 国产综合一区二区| 亚洲一区二区三区三| 久久久久久久久久久久电影| 色婷婷精品久久二区二区蜜臀av| 免费看日韩精品| 亚洲免费在线观看| 精品国产乱码久久久久久图片 | 99在线精品一区二区三区| 亚洲国产精品久久人人爱蜜臀 | 韩国女主播成人在线观看| 自拍偷在线精品自拍偷无码专区| 555夜色666亚洲国产免| www.视频一区| 久久精品国产免费| 亚洲一区二三区| 欧美国产精品一区二区| 欧美一级国产精品| 91蜜桃在线免费视频| 国产一区免费电影| 午夜电影网一区| 亚洲三级在线观看| 久久综合狠狠综合| 欧美精品乱码久久久久久| 亚洲欧美日韩国产中文在线| 亚洲午夜国产一区99re久久| 日韩精品欧美精品| 色婷婷亚洲一区二区三区| 在线亚洲一区二区| 日韩欧美国产电影| 亚洲精品视频在线| 国产精品综合久久| 日韩一二三区视频| 久久久激情视频| 天堂影院一区二区| 国产美女精品人人做人人爽| 99国产欧美久久久精品| 国产精品每日更新在线播放网址| 成人小视频在线| 麻豆91在线观看| 亚洲大片在线观看| 亚洲精品成人天堂一二三| 久久久99免费| 日韩三级中文字幕| 91精品免费在线观看| 欧美在线短视频| 色综合天天性综合| 99在线精品视频| 成a人片国产精品| 懂色av一区二区三区蜜臀| 九色porny丨国产精品| 天天射综合影视| 亚洲.国产.中文慕字在线| 亚洲综合久久av| 日韩伦理av电影| 亚洲欧美日韩人成在线播放| 国产精品国产成人国产三级| 国产精品人成在线观看免费| 国产欧美精品在线观看|