home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / borhot / bioskeyx.c < prev    next >
C/C++ Source or Header  |  1992-01-06  |  2KB  |  63 lines

  1. /* ------------------------------------------------------ */
  2. /*                     BIOSKEYX.C                         */
  3. /*     Reading the enhanced keyboard's F11 & F12 keys     */
  4. /*            (c) 1990 Borland International              */
  5. /*                 All rights reserved.                   */
  6. /* ------------------------------------------------------ */
  7. /*  veröffentlicht in: DOS toolbox 2'92                   */
  8. /* ------------------------------------------------------ */
  9.  
  10. /*
  11.   The bioskey() example can be modified to recognize the
  12.   F11 and F12 extended keys. This requires the use of
  13.   functions 16 and 17;
  14.   function 17 (0x11) gets an enhanced keyboard's status and
  15.   function 16 (0x10) reads a character from an enhanced
  16.   keyboard.
  17.  
  18.   NOTE:  Requires enhanced keyboard and corresponding BIOS
  19. */
  20.  
  21. #include <stdio.h>       // for printf()
  22. #include <bios.h>        // for bioskey()
  23. #include <ctype.h>       // for isalnum()
  24.  
  25. #define RIGHT  0x01
  26. #define LEFT   0x02
  27. #define CTRL   0x04
  28. #define ALT    0x08
  29.  
  30. // ------------------------------------------------------- *
  31. int main(void)
  32. {
  33.   int key, modifiers;
  34.  
  35.   // function 17 returns 0 until a key is pressed
  36.   while (bioskey(17) == 0);
  37.  
  38.   // function 16 returns the key that is waiting
  39.   key = bioskey(16);
  40.  
  41.   // use function 2 to determine if shift keys were used
  42.   modifiers = bioskey(2);
  43.   if (modifiers) {
  44.     printf("[");
  45.     if (modifiers & RIGHT) printf("RIGHT");
  46.     if (modifiers & LEFT)  printf("LEFT");
  47.     if (modifiers & CTRL)  printf("CTRL");
  48.     if (modifiers & ALT)   printf("ALT");
  49.     printf("]");
  50.   }
  51.  
  52.   // print out the character read
  53.   if (isalnum(key & 0xFF))
  54.     printf("'%c'\n", key);
  55.   else
  56.     printf("%#02x\n", key);
  57.  
  58.   return 0;
  59. } // end of main()
  60. /* ------------------------------------------------------ */
  61. /*                 Ende von BIOSKEYX.C                    */
  62.  
  63.