home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / TECLADO / TCKEY.ZIP / TCKEY.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-06-08  |  1.2 KB  |  67 lines

  1. /* tckey.c
  2.  *
  3.  * Turbo C keyboard interface
  4.  * Taken from 'The compleat keyboard: Retrieving Scan codes and extended
  5.  * keys' by Richard Hale Shaw as published in 'Inside Turbo C', the Cobb Group.
  6.  *
  7. */
  8. #include     <dos.h>
  9. #include     <conio.h>
  10. #include     "tckey.h"
  11.  
  12. static int enhanced = FALSE;
  13. #define ENHANCEDKEY 0xE0
  14.  
  15. /* controls use of Enhanced keyboard calls */
  16. void KbdEnhanced (int is_enhanced)
  17.     {
  18.     enhanced = is_enhanced;
  19.     }
  20.  
  21. /* retrieves current character from keyboard */
  22. unsigned KbdGetChar(void)
  23.     {
  24.     _AH = (enhanced ? 0x10 : 0);
  25.     geninterrupt(KEYINT);
  26.     if ((_AL == ENHANCEDKEY) && enhanced)
  27.         _AL = 0;
  28.     return _AX;
  29.     }
  30.  
  31. /* retrieves current keyboard flags */
  32. unsigned KbdFlags(void)
  33.     {
  34.     _AH = (enhanced ? 0x12 : 2);
  35.     geninterrupt(KEYINT);
  36.     return (enhanced ? _AX : _AL);
  37.     }
  38.  
  39. /* returns character, flags, with wait control */
  40. void KbdCharIn(unsigned *character, unsigned *flags, unsigned wait)
  41.     {
  42.     if (wait)
  43.         while(!KbdHit());
  44.     *character = KbdGetChar();
  45.     *flags = KbdFlags();
  46.     }
  47.  
  48. int KbdHit(void)
  49.     {
  50.     _AH = (enhanced ? 0x11 : 1);
  51.     geninterrupt(KEYINT);
  52.     asm jnz kbhit
  53.     return FALSE;
  54. kbhit:
  55.     return TRUE;
  56.     }
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.