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

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

?? tl_key.c

?? 這是模擬器源代碼
?? 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***/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人vps| 日韩三级免费观看| 日韩精品欧美成人高清一区二区| 国产亚洲成年网址在线观看| 成人深夜视频在线观看| 亚洲一区二区四区蜜桃| 欧美电影免费观看高清完整版在线| 91热门视频在线观看| 视频一区中文字幕国产| 中文字幕免费观看一区| 国产在线看一区| 亚洲一二三四久久| 久久久久久99精品| 欧美色图一区二区三区| www.日韩精品| 美女在线视频一区| 亚洲免费观看高清在线观看| 日韩免费电影一区| 91久久人澡人人添人人爽欧美 | 色婷婷久久99综合精品jk白丝| 五月婷婷激情综合网| 欧美精品日韩精品| 成人v精品蜜桃久久一区| 婷婷夜色潮精品综合在线| 国产精品沙发午睡系列990531| 91福利在线观看| 国产成人午夜视频| 裸体歌舞表演一区二区| 亚洲一区二区3| 欧美xingq一区二区| 在线观看一区二区精品视频| youjizz国产精品| 奇米一区二区三区| 亚洲成在线观看| 国产精品久久久久国产精品日日| 欧美日韩国产一级片| 欧美午夜一区二区三区免费大片| 成人综合婷婷国产精品久久蜜臀| 日本欧美一区二区| 奇米影视7777精品一区二区| 亚洲自拍偷拍网站| 自拍偷拍国产精品| 欧美高清一级片在线| 欧美特级限制片免费在线观看| 成人精品视频一区二区三区尤物| 国产一区啦啦啦在线观看| 日本成人在线网站| 亚瑟在线精品视频| 亚洲一二三区不卡| 亚洲在线视频网站| 午夜视黄欧洲亚洲| 五月天亚洲精品| 一区二区三区在线播| 一区二区三区在线观看动漫| 有坂深雪av一区二区精品| ...xxx性欧美| 久久午夜色播影院免费高清| 国产日韩欧美在线一区| 久久久久久一级片| 久久久久久久久岛国免费| 中文字幕在线视频一区| 欧美韩日一区二区三区| 欧美激情一区二区| 国产精品国产三级国产普通话三级 | 欧美一区二区三区免费观看视频| 欧美日韩一区 二区 三区 久久精品| 欧美日韩成人激情| 91精品国产综合久久久久久漫画 | 国产色婷婷亚洲99精品小说| 久久久天堂av| 亚洲精品欧美激情| 亚洲午夜电影在线观看| 午夜久久久久久久久| 夜夜精品视频一区二区| 毛片一区二区三区| 韩国理伦片一区二区三区在线播放 | 在线一区二区视频| 欧美写真视频网站| 911精品产国品一二三产区| 在线播放国产精品二区一二区四区| 宅男在线国产精品| 久久综合一区二区| 亚洲男人的天堂av| 天天免费综合色| 久久精品久久99精品久久| 成人app下载| 欧美系列亚洲系列| 337p日本欧洲亚洲大胆色噜噜| 一区二区三区四区五区视频在线观看 | 国产欧美一区二区三区在线老狼 | 日韩视频免费观看高清完整版在线观看 | 精品久久99ma| 亚洲另类春色国产| 久久国内精品视频| 国产成人av电影在线| 成人激情文学综合网| 日韩欧美的一区| 国产精品久久久久一区| 亚洲高清在线视频| jlzzjlzz欧美大全| 91精品国产美女浴室洗澡无遮挡| 久久综合资源网| 亚洲一区二区三区视频在线播放 | 狠狠狠色丁香婷婷综合激情 | 国产曰批免费观看久久久| 97精品超碰一区二区三区| 69堂精品视频| 国产精品看片你懂得 | 毛片一区二区三区| 91视频91自| 久久久久久久久97黄色工厂| 免费久久99精品国产| av资源站一区| 亚洲综合成人网| 国产伦理精品不卡| 欧美中文字幕不卡| 中文字幕乱码亚洲精品一区| 一区2区3区在线看| 粉嫩欧美一区二区三区高清影视| 在线成人小视频| 久久久久9999亚洲精品| 免费观看日韩电影| 色哦色哦哦色天天综合| 国产午夜精品福利| 国产一区二区三区蝌蚪| 欧美精品aⅴ在线视频| 亚洲欧美日韩系列| 老司机一区二区| 欧美一级片免费看| 亚洲国产欧美一区二区三区丁香婷| 国产成人精品www牛牛影视| 欧美午夜片在线观看| 国产清纯白嫩初高生在线观看91| 蜜臀av一区二区三区| 欧美日韩日本视频| 国产精品国产a| 国产一区二区91| 精品少妇一区二区三区免费观看 | 成人动漫视频在线| 国产精品拍天天在线| 国产精品亚洲专一区二区三区| 欧美二区在线观看| 欧美日免费三级在线| 亚洲国产精品视频| 69堂亚洲精品首页| 麻豆国产欧美日韩综合精品二区| 日韩视频一区二区三区在线播放| 老司机午夜精品99久久| 久久久亚洲精品石原莉奈| 精品一区二区日韩| 久久网站热最新地址| 成人午夜又粗又硬又大| 中文字幕一区二区三区不卡在线| 91在线国产福利| 亚洲一区二区三区自拍| 欧美一区二区三区四区久久| 久久99久久久久| 国产丝袜美腿一区二区三区| 欧美区在线观看| 国产美女娇喘av呻吟久久| 国产精品进线69影院| 欧美三级电影在线看| 久草精品在线观看| 中文字幕一区二区三区不卡| 在线欧美一区二区| 精品亚洲porn| 亚洲欧洲日韩一区二区三区| 欧美日韩极品在线观看一区| 久久国产日韩欧美精品| 中文字幕在线观看一区| 欧美一区二区三区喷汁尤物| 国产精品18久久久久久久网站| 一区二区三区久久久| 日韩欧美一级二级三级久久久| 成人av在线电影| 日韩中文字幕一区二区三区| 国产清纯白嫩初高生在线观看91| 色婷婷激情久久| 精品一区二区三区日韩| 综合久久一区二区三区| 日韩精品一区二区三区视频| 99这里只有久久精品视频| 美女视频一区在线观看| 亚洲男同1069视频| 久久亚区不卡日本| 精品视频在线免费| 成年人午夜久久久| 久久激情综合网| 亚洲福利一区二区三区| 中文字幕国产一区二区| 欧美一二三四区在线| 91影视在线播放| 韩国欧美国产1区| 亚洲不卡在线观看| 国产精品久久久久久久岛一牛影视 | 成人欧美一区二区三区白人| 日韩免费视频一区| 91久久精品一区二区| 国产成人av福利| 美女www一区二区|