INT9 (IRQ1) keyboard handler #9 by Patch (hamell@cs.pdx.edu) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ June 15th, 1994 Added a variable called KEYLAST so you could do input and build a string with the values in this variable. toASCII is a translate table that it gets shifted and unshifted characters from and stores the result in KEYLAST. The #define's that start with b are for BIOS equivalents (most of them are). To get input in the normal manner of getch(), call GetKey. The first key available from the keyboard buffer is stored in KEYLAST (0 means no key available). You can change the toASCII table to match the hardware scan codes to ASCII codes. As it is now only alphanumeric, Enter, and ESC are translated. Keys such as F1-F12, Insert, etc. are translated to return 0. Description of variables/functions/files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ keys[] - Array of 256 bytes. Each position corresponds to a key on the keyboard. A value of 1 means the key is being pressed, 0 means released. If you wanted to check for the LEFT SHIFT key being pressed, you'd type if (keys[kLEFTSHIFT] == 1) ... keynumpress - Tells you the number of keys being pressed at any given time If you want to do something while waiting for a keypress, you could do while (keynumpress == 0) ; or do GetKey(); while (keylast == 0); instead of while (!kbhit()); keylast - shifted value of last key hit Set_New_Int9() - Call this function when you want to install the INT 9 handler Set_Old_Int9() - Call this function when you want to uninstall the INT 9 handler ClearKeys - clears the keyboard buffer GetKey - returns the first key from the keyboard buffer in the variable KEYLAST (0 means no key available) KEY.DOC - this doc file KEY.ASM - ASM source for the INT9 handler (32-bit) KEY16.ASM - ............................... (16-bit) KEY.H - C #include header file (32-bit) KEY16.H - ...................... (16-bit) KEY.OBJ - compiled KEY.ASM KEY16.OBJ - compiled KEY16.ASM KEYTEST.C - C source for a program testing the INT9 handler KEYTEST.EXE - executable (DOS/4GW required to run it) If you and use it (whether it be as-is or slightly modified), please credit me. Please email me any changes you make so I can include them in future releases. To get more similar source and/or grafx/sound source, call my board: Dead Man's Hand (503) 288-9264 USR 28.8k DS Grafx/sound programming and VGA demos