home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / ISXKBRD.C < prev    next >
C/C++ Source or Header  |  1997-07-05  |  1KB  |  51 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /*
  4. **  ISXKBRD.C - public domain by Ed Kowalski.
  5. **
  6. **  isxkeybrd() - detects enhanced kbd
  7. */
  8.  
  9. #include <dos.h>
  10. #include "snipkbio.h"
  11.  
  12. /*
  13. **  Check for enhanced keyboard support.
  14. */
  15.  
  16. int isxkeybrd(void)
  17. {
  18.       union REGS rg;
  19.       unsigned kbdflags;
  20.  
  21.       rg.h.ah = 0x02;               /* check BIOS supports enhanced kbd */
  22.       int86(0x16, &rg, &rg);        /* get kbd flags                    */
  23.       kbdflags = rg.h.al;
  24.  
  25.       /* mess 'em up, get enhanced flags */
  26.  
  27.       rg.x.ax = 0x1200 + kbdflags ^ 0xff;
  28.       int86(0x16, &rg, &rg);
  29.       if (rg.h.al == kbdflags)      /* BIOS supports enhanced keyboard  */
  30.       {
  31.             /* if bit 4 at 40:96h is set machine has an enhanced kbd */
  32.  
  33.             if ((*(( char far *) 0x400096L) & 0x10))
  34.                   return 1;         /* enhanced keyboard present        */
  35.       }
  36.       return 0;                     /* don't use enhanced keyboard calls */
  37. }
  38.  
  39. #ifdef TEST
  40.  
  41. #include <stdio.h>
  42. main()
  43. {
  44.       if (isxkeybrd())
  45.             puts( "Enhanced Keyboard supported" );
  46.       else  puts( "Enhanced Keyboard NOT supported ");
  47.       return 0;
  48. }
  49.  
  50. #endif /* TEST */
  51.