From: SteelGolem Newsgroups: comp.os.msdos.djgpp Subject: 3 button keyboard handler?? that sucks!!! -again Date: Tue, 06 May 1997 14:22:37 -0300 Organization: Auracom Internet Services Lines: 71 Message-ID: <5knp94$ng6$1@thor.atcon.com> Reply-To: myork AT auracom DOT com NNTP-Posting-Host: 199.126.230.172 Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------52C8496A47EB" To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk This is a multi-part message in MIME format. --------------52C8496A47EB Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit i need to find out how to make an old unprotected mode keyboard handler work under protected mode. i need to be able to process more keys at once than allegro can handle. i have the keyboard handler function below. i know i already posted this one, but i didn't realize i forgot to add: email pleeeeze! steelgolem keyboard handler: (it works perfectly in QuickC) --------------52C8496A47EB Content-Type: text/plain; charset=us-ascii; name="Kybdhndt.c" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="Kybdhndt.c" #include #include #include //first we'll declare some things we'll need.. #define KEYBOARDINTR 9 #define KEYBOARDPORT 0x60 int exitprog=0; void (_interrupt _far *BIOSkeyboardhandler)(void); _interrupt _far keyboardhandler(unsigned int ax, unsigned int bx, unsigned int cx, unsigned int dx, unsigned int si, unsigned int di, unsigned int cflag); main(void) { BIOSkeyboardhandler = _dos_getvect(KEYBOARDINTR); _dos_setvect(KEYBOARDINTR, keyboardhandler); _clearscreen(_GCLEARSCREEN); printf("\n\nHIT ENTER TO STOP\n"); while (!exitprog) ; _clearscreen(_GCLEARSCREEN); //when the program is finished, we set the old keyboard handler again _dos_setvect(KEYBOARDINTR, BIOSkeyboardhandler); } _interrupt _far keyboardhandler(unsigned int ax, unsigned int bx, unsigned int cx, unsigned int dx, unsigned int si, unsigned int di, unsigned int cflag){ unsigned char key, scancode; key = inp(KEYBOARDPORT); scancode = key & 127; printf("%d %d\n",key,scancode); if ((scancode == 28) && (key & 128)) exitprog = 1; outp(0x20, 0x20); } --------------52C8496A47EB--