markh@csd4.csd.uwm.edu (Mark William Hopkins) (03/17/91)
In article <1991Mar11.193729.3291@ssd.kodak.com> wieser@bissun.kodak.com (Jim Wieser) writes: >How do you temporarily disable the keyboard on a PC under >DOS using MSC short of installing a new interrupt handler? Installing a new interrupt handler is the easiest way by far. This should work on IBM-compatibles (possibly except for the PcJr): ------------------------------------------------------------ KbdInt.h: extern void DisableKbd(void); extern void EnableKbd(void); ------------------------------------------------------------ KbdInt.c: #include <dos.h> #pragma check_stack(off) #pragma check_pointer(off) static unsigned /* Keyboard buffer */ far *HeadP = (unsigned far *)0x0040001a, far *TailP = (unsigned far *)0x0040001c; static void (interrupt far *OldKbd)(void); static void interrupt far Ignore(void) { /* Get the key but ignore it. */ (*OldKbd)(); if (*HeadP == *TailP) return; *HeadP += 2; if (*HeadP > 0x003d) *HeadP = 0x001e; } void DisableKbd(void) { OldKbd = _dos_getvect(0x09); _dos_setvect(0x09, Ignore); } void EnableKbd(void) { _dos_setvect(0x09, OldKbd); } ------------------------------------------------------------ The only question I have is: how do you plan to re-enable the keyboard?