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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tl_key.c

?? 十七種模擬器源代碼 非常有用的作課程設(shè)計不可缺少的
?? C
字號:
/*** thinlib (c) 2000 Matthew Conte (matt@conte.com)****** This program is free software; you can redistribute it and/or** modify it under the terms of version 2 of the GNU Library General ** Public License as published by the Free Software Foundation.**** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU ** Library General Public License for more details.  To obtain a ** copy of the GNU Library General Public License, write to the Free ** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.**** Any permitted reproduction of these routines, in whole or in part,** must bear this legend.****** tl_key.c**** DOS keyboard handler** $Id: tl_key.c,v 1.4 2001/03/12 06:06:56 matt Exp $*/#include <stdlib.h>#include <go32.h>#include <dpmi.h>#include <dos.h>#include "tl_types.h"#include "tl_djgpp.h"#include "tl_key.h"#define  KEYBOARD_INT      0x09/* maybe make this globally accesible? */static int key_status[THIN_MAX_KEYS];static bool key_repeat = false;static _go32_dpmi_seginfo old_key_handler;static _go32_dpmi_seginfo new_key_handler;/*** Simple queue routines*/#define  KEYQUEUE_MAX      256#define  KEYQUEUE_MASK     (KEYQUEUE_MAX - 1)#define  KEYQUEUE_EMPTY()  (keyq_head == keyq_tail)static int keyq_tail = 0, keyq_head = 0;static keydata_t key_queue[KEYQUEUE_MAX];static void key_enqueue(keydata_t *data){   key_queue[keyq_head] = *data;   keyq_head = (keyq_head + 1) & KEYQUEUE_MASK;}THIN_LOCKED_STATIC_FUNC(key_enqueue)static bool ext_key = false;keydata_t *thin_key_dequeue(void){   int loc;   if (KEYQUEUE_EMPTY())      return NULL;   loc = keyq_tail;   keyq_tail = (keyq_tail + 1) & KEYQUEUE_MASK;   return &key_queue[loc];}static const uint8 ext_tab[0x80] = {   0, 0, 0, 0, 0, 0, 0, 0, /* 0x00 - 0x07 */   0, 0, 0, 0, 0, 0, 0, 0, /* 0x08 - 0x0F */   0, 0, 0, 0, 0, 0, 0, 0, /* 0x10 - 0x17 */   0, 0, 0, 0, THIN_KEY_NUMPAD_ENTER, THIN_KEY_RIGHT_CTRL, 0, 0,  /* 0x10 - 0x1F */   0, 0, 0, 0, 0, 0, 0, 0, /* 0x20 - 0x27 */   0, 0, 0, 0, 0, 0, 0, 0, /* 0x28 - 0x2F */   0, 0, 0, 0, 0, THIN_KEY_NUMPAD_DIV, 0, THIN_KEY_SYSRQ, /* 0x30 - 0x37 */   THIN_KEY_RIGHT_ALT, 0, 0, 0, 0, 0, 0, 0, /* 0x38 - 0x3F */   0, 0, 0, 0, 0, 0, THIN_KEY_BREAK, THIN_KEY_HOME, /* 0x40 - 0x47 */   THIN_KEY_UP, THIN_KEY_PGUP, 0, THIN_KEY_LEFT, 0, THIN_KEY_RIGHT, 0, THIN_KEY_END, /* 0x48 - 0x4F */   THIN_KEY_DOWN, THIN_KEY_PGDN, THIN_KEY_INSERT, THIN_KEY_DELETE, /* 0x50 - 0x57 */   0, 0, 0, 0, 0, 0, 0, 0, /* 0x58 - 0x5F */   0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x67 */   0, 0, 0, 0, 0, 0, 0, 0, /* 0x68 - 0x6F */   0, 0, 0, 0, 0, 0, 0, 0, /* 0x70 - 0x77 */   0, 0, 0, 0, 0, 0, 0, 0, /* 0x78 - 0x7F */};/* keyboard ISR */static void key_handler(void){   /* read the key */   keydata_t data;   uint8 raw_code, ack_code;   raw_code = inportb(0x60);   ack_code = inportb(0x61);   outportb(0x61, ack_code | 0x80);   outportb(0x61, ack_code);   outportb(0x20, 0x20);   if (0xE0 == raw_code)   {      ext_key = true;   }   else   {      if (ext_key)      {         ext_key = false;         data.key = ext_tab[raw_code & 0x7F];      }      else      {         data.key = raw_code & 0x7F;      }      data.signal = (raw_code & 0x80) ? THIN_CODE_BREAK : THIN_CODE_MAKE;      if (key_repeat || (data.signal != key_status[data.key]))      {         key_status[data.key] = data.signal;         key_enqueue(&data);      }   }}THIN_LOCKED_STATIC_FUNC(key_handler)void thin_key_set_repeat(bool state){   key_repeat = state;}/* set up variables, lock code/data, set the new handler and save old one */int thin_key_init(void){   THIN_LOCK_FUNC(key_enqueue);   THIN_LOCK_FUNC(key_handler);   THIN_LOCK_VAR(key_queue);   THIN_LOCK_VAR(keyq_head);   THIN_LOCK_VAR(key_status);      memset(key_status, THIN_CODE_BREAK, sizeof(key_status));   _go32_dpmi_get_protected_mode_interrupt_vector(KEYBOARD_INT, &old_key_handler);   new_key_handler.pm_offset = (uint32) key_handler;   new_key_handler.pm_selector = _go32_my_cs();   _go32_dpmi_allocate_iret_wrapper(&new_key_handler);   _go32_dpmi_set_protected_mode_interrupt_vector(KEYBOARD_INT, &new_key_handler);   return 0; /* can't fail */}/* restore old keyboard handler */void thin_key_shutdown(void){   _go32_dpmi_set_protected_mode_interrupt_vector(KEYBOARD_INT, &old_key_handler);   _go32_dpmi_free_iret_wrapper(&new_key_handler);}/*** $Log: tl_key.c,v $** Revision 1.4  2001/03/12 06:06:56  matt** better keyboard driver, support for bit depths other than 8bpp**** Revision 1.3  2000/12/16 21:18:11  matt** thinlib cleanups**** Revision 1.2  2000/11/05 16:32:36  matt** thinlib round 2**** Revision 1.1  2000/11/05 06:29:03  matt** initial revision***/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国产精品成人| 懂色av中文一区二区三区| 丝袜脚交一区二区| 国产成人免费视频网站| 欧美日韩情趣电影| 中文字幕一区av| 狠狠色综合日日| 欧美精品久久99| 中文字幕日韩一区| 国产一区二三区| 91麻豆精品国产91久久久久 | 欧美日韩一本到| 国产精品国产a| 国产露脸91国语对白| 欧美一区二区在线看| 亚洲高清免费视频| 色噜噜狠狠色综合中国 | 久久综合狠狠综合久久综合88| 亚洲综合偷拍欧美一区色| 国产一区二区在线看| 日韩欧美黄色影院| 免费在线成人网| 欧美一级二级在线观看| 亚洲第一成人在线| 欧美日韩国产综合久久| 亚洲午夜一区二区三区| 色噜噜狠狠成人中文综合| 中文字幕中文在线不卡住| 东方欧美亚洲色图在线| 国产日本一区二区| 粗大黑人巨茎大战欧美成人| 国产欧美一区二区精品性色| 丁香六月综合激情| 国产精品久久久一本精品| 18成人在线观看| 欧美r级在线观看| 性感美女久久精品| 欧美系列一区二区| 亚洲aaa精品| 欧美一区二区福利视频| 免费在线看成人av| 精品国产3级a| 国产一区二区毛片| 国产三级精品视频| 成人福利视频在线看| 国产精品久久久久久久岛一牛影视| 国产盗摄视频一区二区三区| 中文乱码免费一区二区| 99在线热播精品免费| 一区二区三区欧美激情| 欧美精品亚洲二区| 狠狠色丁香婷婷综合| 国产区在线观看成人精品| 欧美日韩aaaaaa| 亚洲欧美福利一区二区| 欧美午夜寂寞影院| 麻豆久久一区二区| 国产精品色呦呦| 欧美亚洲精品一区| 精一区二区三区| 国产精品久久777777| 欧美日韩一二三区| 国产一区二区女| 最近中文字幕一区二区三区| 精品视频一区 二区 三区| 麻豆极品一区二区三区| 中文字幕五月欧美| 91精品国产一区二区三区蜜臀| 国产裸体歌舞团一区二区| |精品福利一区二区三区| 欧洲国产伦久久久久久久| 久热成人在线视频| 亚洲欧美韩国综合色| 日韩欧美国产1| 91一区在线观看| 天堂一区二区在线免费观看| 国产亚洲福利社区一区| 欧美日韩亚州综合| 成人av资源在线| 美女一区二区视频| 一区二区在线观看不卡| 欧美精品一区视频| 欧美二区乱c少妇| 成人性视频网站| 久久国产精品99精品国产| 亚洲欧美一区二区三区久本道91| 中文字幕中文字幕一区二区| 欧美一级免费大片| 色婷婷综合久久久| 国产成人精品免费| 久久国产福利国产秒拍| 亚洲电影一级片| 亚洲精品视频免费观看| 国产欧美日韩中文久久| 欧美一区二区三区四区视频| 91极品美女在线| 成人av第一页| 国产麻豆视频精品| 麻豆91精品91久久久的内涵| 亚洲一区二区综合| 亚洲免费在线看| 欧美激情一区二区在线| 日韩美女在线视频| 欧美放荡的少妇| 欧美日韩高清在线播放| 99久久综合色| 不卡在线视频中文字幕| 国产成人av一区二区三区在线| 久久99精品国产麻豆婷婷| 日韩国产欧美在线观看| 日韩激情在线观看| 日韩国产欧美视频| 日韩中文字幕麻豆| 偷拍一区二区三区| 亚洲福利国产精品| 一区二区三区加勒比av| 一区二区三区 在线观看视频| 自拍偷拍亚洲综合| 亚洲天堂久久久久久久| 尤物av一区二区| 亚洲大型综合色站| 日本特黄久久久高潮| 久久成人综合网| 国产高清无密码一区二区三区| 国产99久久久精品| 色婷婷av一区二区三区软件 | 日韩视频在线一区二区| 日韩一区二区三区免费看| 欧美r级在线观看| 国产亚洲精品精华液| 日韩美女精品在线| 亚洲午夜在线视频| 五月婷婷欧美视频| 精品一区二区精品| 成人aa视频在线观看| 色婷婷国产精品久久包臀| 6080亚洲精品一区二区| www国产精品av| 亚洲四区在线观看| 亚洲va欧美va国产va天堂影院| 日韩精品电影在线| 国产福利一区二区三区视频| av在线综合网| 3d成人动漫网站| 国产亚洲欧洲997久久综合| 亚洲欧洲制服丝袜| 麻豆传媒一区二区三区| 99免费精品在线观看| 欧美丰满一区二区免费视频| 久久久精品国产99久久精品芒果| 综合久久国产九一剧情麻豆| 首页综合国产亚洲丝袜| 国产高清久久久久| 欧美日韩一区成人| 欧美激情艳妇裸体舞| 偷拍亚洲欧洲综合| 成人a级免费电影| 日韩欧美高清一区| 伊人性伊人情综合网| 国内精品国产三级国产a久久| 色婷婷综合久久久久中文一区二区 | 91久久久免费一区二区| 欧美喷潮久久久xxxxx| 亚洲成人免费电影| 国产麻豆日韩欧美久久| 欧美色区777第一页| 欧美国产日韩a欧美在线观看| 亚洲午夜久久久久中文字幕久| 国内精品视频一区二区三区八戒 | 午夜欧美一区二区三区在线播放| 国产真实乱偷精品视频免| 91黄色激情网站| 日本一区二区三区四区| 日韩精品91亚洲二区在线观看| 99精品欧美一区二区蜜桃免费| 日韩欧美亚洲一区二区| 亚洲福利国产精品| 色屁屁一区二区| 国产精品久久久久一区 | 久久久一区二区三区| 视频一区欧美精品| 欧美系列日韩一区| 亚洲欧洲av色图| 丁香六月久久综合狠狠色| 欧美成人官网二区| 人人精品人人爱| 在线播放中文字幕一区| 亚洲午夜精品久久久久久久久| 成人一区二区在线观看| 国产精品亲子乱子伦xxxx裸| 日本女优在线视频一区二区| 在线观看免费视频综合| 国产精品家庭影院| 国产成人av电影| 久久女同精品一区二区| 久久精品国产色蜜蜜麻豆| 91精品国产综合久久精品app| 亚洲成人自拍网| 欧美日本免费一区二区三区| 亚洲成人av在线电影|