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

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

?? keyboard.cpp

?? DOS游戲編程中處理Int 13的工具包
?? CPP
字號:
// KEYBOARD.CPP ************************************************************
// module for low level filtered and unfiltered keyboard i/o.              *
// Copyright 1991 by the Gamers Programming Workshop, a function of the    *
// GAMERS forum, Compuserve. For more info e-mail 76605,2346.              *
//                                                                         *
// License is granted for use or modification of this code as long as      *
// this notice remains intact, and all improvements are listed in the      *
// version history below, and uploaded to the GAMERS forum. This code      *
// may not be used for any commercial purpose.                             *
//                                                                         *
//**************************************************************************

//**************************************************************************
// Version history:                                                        *
//                                                                         *
// Version 1.0                                                             *
// Developed: May 30, 1991                                                 *
// Author:    Mark Betz, 76605, 2346                                       *
// Last update: July 5, 1991                                               *
//**************************************************************************

#include <stdio.h>
#include <conio.h>
#include "keyboard.hpp"

// ************************************************************************
// getkey() is passed pointers to type char, for the ascii code, and type
// extnd, for the scan code. If either is NULL the funtion ignores it. The
// function waits if no key has been pressed, so test with kbhit() if you
// don't want to hang here.
// ************************************************************************

void getkey(char *key, extnd *scan) {
	asm {
		mov ah, 0x10
		int 0x16
	}
	if (key!=NULL)
		*key=_AL;
	if (scan!=NULL) {
		if (*key==0)
			*scan=(extnd)_AH;
		else
			*scan=NO_EXT;
	}
}

// ************************************************************************
// getfilteredkey() compares the next keycode combination retrieved from
// the buffer based on the filter in mask. If a key matches the function
// stores the key data in key and scan, and returns a boolean true. If no
// match exists for the key, the function returns false, and the values
// of scan and key are unchanged. NULL pointer arguments are not allowed.
// ************************************************************************

boolean getfilteredkey(char mask, char *key, extnd *scan) {
	char main,aux;
	asm {
		mov ah, 0x10
		int 0x16
	}
	main=_AL;
	aux =_AH;
	if (!((mask&UCASE)&&                  // filter for uppercase chars
	   (main>64) && (main<91))) {

	 if (!((mask&LCASE)&&                 // filter for lower case chars
		(main>96) && (main<123))) {

	  if (!((mask&BCASE)&&                // filter for chars of both cases
		 (((main>64) && (main<91))||
		 ((main>96) && (main<123))))) {

	   if (!((mask&NUMBER)&&               // filter for numeric chars
		  (main>47) && (main<58))) {

		if (!((mask&FUNCT)&&               // filter for keys f1-f10
		   (main==0)&&
		   ((aux>58) && (aux<69)) ||
		   ((aux>132) && (aux<135)))) {

		 if (!((mask&FUNCT)&&              // filter for shift f1- shift f10
			(main==0)&&
			(((aux>83) && (aux<94))||
			((aux>134) && (aux<137))))) {

		  if (!((mask&FUNCT)&&             // filter for ctrl f1- ctrl f10
			 (main==0)&&
			 (((aux>93) && (aux<104))||
			 ((aux>136) && (aux<139))))) {

		   if (!((mask&FUNCT)&&            // filter for alt f1- alt f10
			  (main==0)&&
			  (((aux>103) && (aux<114))||
			  ((aux>138) && (aux<141))))) {

			if (!((mask&CURSOR)&&          // filter for cursor command keys
			   ((main==0)||(main==224))&&  // source keypad or standalone
			   (((aux>69) && (aux<74))||   // home, up arrow, pageup
			   (aux==75)||(aux==77)||      // left arrow, right arrow
			   ((aux>78) && (aux<84))||    // end, dn arrw, pgdwn, ins, del
			   ((aux>113) && (aux<120))||  // ctrl-cursor combos
			   (aux==132)))) {

			 if (!((mask&PUNCT)&&          // filter for punctuation marks
				((main==33)||(main==34)||  // ! and "
				(main==39)||(main==44)||   // ' and ,
				(main==46)||(main==96)||   // . and `
				(main==13)||(main==8)||    // enter and backspace
				(main==32)||(main==9)))) { // space and tab

			  if (!((mask&ESC)&&(main==27))) {

					return(false);
			  }
			 }
			}
		   }
		  }
		 }
		}
	   }
	  }
	 }
	}
	*key=main;
	*scan=(extnd)aux;
	return(true);
}

// ************************************************************************
// stuffbuffer() places the passed key and scan codes in the keyboard
// buffer. stuffbuffer() does not check for a full keyboard buffer. It is
// recommended that flushbuffer() be called prior to using this service,
// and that this function be called a maximum of 15 times between keyboard
// reads.
// ************************************************************************

void stuffbuffer(char key, extnd scan) {
	char s;
	s=scan;
	asm {
		mov ah, 5
		mov cl, key
		mov ch, s
		int 0x16
	}
}

// ************************************************************************
// flushbuffer() flushes the keyboard buffer. If buf != NULL it flushes the
// key and scan codes to the memory buffer pointed to by buf, and returns
// the number of characters read. If buf=NULL, or no characters are waiting
// it returns 0.
// ************************************************************************

int flushbuffer(char *buf) {
	char c;
	extnd s;
	int i;

	if (buf!=NULL) {
		for (i=0;kbhit();) {
			getkey(&c,&s);
			buf[i++]=c;
			buf[i++]=s;
		}
		return(i/2);
	} else
		while (kbhit()) {
			getkey(&c,&s);
		}
	return(0);
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区精品在线| 国产精品资源站在线| 一级中文字幕一区二区| 国产精品进线69影院| 成人欧美一区二区三区小说| 国产精品成人免费精品自在线观看| 欧美精品一区二区三区高清aⅴ | 欧美视频三区在线播放| 欧美一区二区视频在线观看| 久久久久国产精品免费免费搜索| 中文字幕一区二区三区四区不卡| 亚洲国产精品激情在线观看| 综合欧美亚洲日本| 蜜臀av性久久久久av蜜臀妖精| www.亚洲色图| 久久人人爽爽爽人久久久| 亚洲午夜国产一区99re久久| 国产一区二区三区免费播放| 欧美特级限制片免费在线观看| 久久综合色之久久综合| 视频一区二区不卡| 91免费看片在线观看| 久久精品人人做人人综合| 午夜精品久久久久久| 91丝袜国产在线播放| 一区二区三区精品视频| 高清国产一区二区三区| 7777精品伊人久久久大香线蕉完整版 | 99久久精品免费观看| 26uuu色噜噜精品一区二区| 亚洲高清免费在线| 天天爽夜夜爽夜夜爽精品视频| 国产成人精品午夜视频免费| 精品精品欲导航| 欧美aaaaaa午夜精品| 欧美一区二区三区喷汁尤物| 亚洲va国产天堂va久久en| 欧美日韩三级一区二区| 日韩电影免费在线| 日韩丝袜情趣美女图片| 国产在线精品免费| 中文字幕一区二区三区在线播放| 欧日韩精品视频| 久久成人精品无人区| 欧美激情一区二区三区不卡| 成人综合婷婷国产精品久久| 亚洲三级电影全部在线观看高清| 欧美性xxxxxxxx| 国产精品一级黄| 亚洲第一成年网| 久久久久久99精品| 日本精品视频一区二区| 精品国产免费人成电影在线观看四季 | 亚洲精品视频在线观看网站| 日韩一级片在线观看| 成人av网站免费| 香蕉久久一区二区不卡无毒影院| 国产午夜精品美女毛片视频| 欧美日韩午夜精品| www.在线欧美| 国产乱色国产精品免费视频| 亚洲国产精品久久久久秋霞影院 | 91精品国产福利在线观看 | 欧美日韩一区二区三区四区五区| 亚洲va韩国va欧美va| 亚洲精品久久嫩草网站秘色| 精品精品国产高清一毛片一天堂| 欧美日韩精品二区第二页| www.亚洲在线| 99久久99久久精品国产片果冻| 国产精品亚洲一区二区三区在线| 婷婷激情综合网| 日韩高清中文字幕一区| 国产亚洲欧美日韩日本| 久久精品人人爽人人爽| 正在播放一区二区| 欧美久久久影院| 欧美日本免费一区二区三区| 在线看日本不卡| 8v天堂国产在线一区二区| 欧美挠脚心视频网站| 欧美一区二区视频在线观看 | 日韩精品一级中文字幕精品视频免费观看 | 国产一区二区三区久久悠悠色av| 亚洲午夜在线电影| 午夜激情一区二区三区| 日本va欧美va精品发布| 国产一区二区影院| av电影天堂一区二区在线观看| 成人视屏免费看| 欧美色图第一页| 精品嫩草影院久久| 亚洲欧美在线视频| 日本美女一区二区三区视频| 国产精品乡下勾搭老头1| 成人av网站在线| 欧美丰满一区二区免费视频 | 日本在线播放一区二区三区| 色哟哟在线观看一区二区三区| 欧美一区二区三区四区五区 | 无码av中文一区二区三区桃花岛| 人禽交欧美网站| 成人av第一页| 欧美成人一区二区三区片免费| 欧美国产激情一区二区三区蜜月 | 色欧美片视频在线观看| 日韩欧美一级精品久久| 一区二区三区在线高清| 国产一区二区网址| 久久综合色婷婷| 国产精品一卡二卡| 91国偷自产一区二区使用方法| 日韩精品一区二区三区中文精品| 亚洲欧美电影一区二区| 国产精品影视网| 日韩三级av在线播放| 亚洲精品国产无套在线观| 成人久久久精品乱码一区二区三区| 欧美巨大另类极品videosbest | 国产亚洲一区二区三区在线观看| 国产精品乱人伦| 国产乱妇无码大片在线观看| 精品捆绑美女sm三区| 日韩精品亚洲一区| 91精品婷婷国产综合久久性色 | 国产欧美一区二区在线观看| 国产乱码字幕精品高清av | 成人黄色软件下载| 亚洲天天做日日做天天谢日日欢| 国内外精品视频| 亚洲综合小说图片| 欧洲精品一区二区| 亚洲一二三四在线观看| 欧美亚洲国产一卡| 青青草原综合久久大伊人精品优势| 欧美年轻男男videosbes| 久久av资源网| 国产色婷婷亚洲99精品小说| 99国内精品久久| 久久激情综合网| 91精品久久久久久蜜臀| 国产成人av资源| 亚洲尤物在线视频观看| 精品剧情v国产在线观看在线| 国产一区二区电影| 亚洲一级二级三级| 国产v综合v亚洲欧| 亚洲精品国产a久久久久久| 7777精品伊人久久久大香线蕉超级流畅| 精品一区免费av| 亚洲图片欧美色图| 欧美极品少妇xxxxⅹ高跟鞋 | 国产精品网站在线观看| 9191久久久久久久久久久| 成人免费av资源| 久久99国内精品| 五月天网站亚洲| 亚洲精品免费播放| 国产欧美一区二区精品性| 欧美一区二区三区视频免费播放| 欧美色图免费看| 99久久婷婷国产精品综合| 日韩不卡一区二区| 亚洲尤物视频在线| 成人欧美一区二区三区视频网页| 精品国产乱码久久久久久久久| 欧美私模裸体表演在线观看| 一本一本大道香蕉久在线精品 | 国产精品高清亚洲| 中文字幕不卡一区| 日本一区二区在线不卡| 国产日产欧产精品推荐色| 久久久久国产成人精品亚洲午夜 | 亚洲色图制服诱惑 | 成人av免费观看| www.一区二区| 欧美图区在线视频| 日韩欧美成人一区二区| 日韩一区二区三区在线观看| 欧美tk—视频vk| 国产精品乱码一区二区三区软件 | 精品成人一区二区三区| 国产精品丝袜久久久久久app| 亚洲人成人一区二区在线观看| 国产电影一区在线| 欧美另类一区二区三区| 欧美一区二区三区不卡| 久久久久高清精品| 亚洲成a人v欧美综合天堂下载| 久久精品国产999大香线蕉| 国产一区二区福利视频| 99视频一区二区| 日韩一区二区三区精品视频| 国产精品久久久久婷婷二区次| 亚洲人成精品久久久久久| 久久91精品国产91久久小草| 色婷婷综合五月| 中文字幕精品—区二区四季| 蜜臀99久久精品久久久久久软件 | 欧美大片免费久久精品三p|