home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / d / dots151.zip / GRAPHSRC.ZIP / SCR_CI.C < prev    next >
C/C++ Source or Header  |  1989-09-16  |  4KB  |  168 lines

  1. /*
  2.     scr_ci - translate extended key codes to single numbers
  3. */
  4.  
  5. #include "scr_ci.h"
  6.  
  7. #ifdef __TURBOC__
  8. #define ci getch
  9. #endif
  10.  
  11. /*    these are extended codes returned by getchar(), after a zero */
  12.  
  13. #define home_code        71
  14. #define up_code            72
  15. #define pgup_code        73
  16. #define left_code        75
  17. #define right_code        77
  18. #define end_code        79
  19. #define down_code        80
  20. #define pgdn_code        81
  21. #define ins_code        82
  22. #define del_code        83
  23. #define ctrl_home_code    0x77
  24. #define ctrl_end_code    0x75
  25. #define ctrl_left_code    115
  26. #define ctrl_right_code    116
  27.  
  28. #define F1_code            59
  29. #define F2_code            60
  30. #define F3_code            61
  31. #define F4_code            62
  32. #define F5_code            63
  33. #define F6_code            64
  34. #define F7_code            65
  35. #define F8_code            66
  36. #define F9_code            67
  37. #define F10_code        68
  38. #define F11_code        0xd9
  39. #define F12_code        0xda
  40.  
  41. #define ctrl_F1_code    94
  42. #define ctrl_F2_code    95
  43. #define ctrl_F3_code    96
  44. #define ctrl_F4_code    97
  45. #define ctrl_F5_code    98
  46. #define ctrl_F6_code    99
  47. #define ctrl_F7_code    100
  48. #define ctrl_F8_code    101
  49. #define ctrl_F9_code    102
  50. #define ctrl_F10_code    103
  51. #define ctrl_F11_code    103
  52. #define ctrl_F12_code    103
  53.  
  54. #define alt_F1_code        104
  55. #define alt_F2_code        105
  56. #define alt_F3_code        106
  57. #define alt_F4_code        107
  58. #define alt_F5_code        108
  59. #define alt_F6_code        109
  60. #define alt_F7_code        110
  61. #define alt_F8_code        111
  62. #define alt_F9_code        112
  63. #define alt_F10_code    113
  64. #define alt_F11_code    113
  65. #define alt_F12_code    113
  66.  
  67. char translation_table[] = {
  68.         up_code,            up_char,
  69.         down_code,            down_char,
  70.         left_code,            left_char,
  71.         right_code,            right_char,
  72.         home_code,            home_char,
  73.         end_code,            end_char, 
  74.         pgup_code,            pgup_char,
  75.         pgdn_code,            pgdn_char, 
  76.         ctrl_home_code,        ctrl_home_char,
  77.         ctrl_end_code,        ctrl_end_char,
  78.         ins_code,            ins_char,
  79.         del_code,            del_char,
  80.         ctrl_left_code,        ctrl_left_char,
  81.         ctrl_right_code,    ctrl_right_char,
  82.         F1_code,            F1_char,
  83.         F2_code,            F2_char,
  84.         F3_code,            F3_char,
  85.         F4_code,            F4_char,
  86.         F5_code,            F5_char,
  87.         F6_code,            F6_char,
  88.         F7_code,            F7_char,
  89.         F8_code,            F8_char,
  90.         F9_code,            F9_char,
  91.         F10_code,            F10_char,
  92.         F11_code,            F11_char,
  93.         F12_code,            F12_char,
  94.  
  95.         ctrl_F1_code,        ctrl_F1_char,
  96.         ctrl_F2_code,        ctrl_F2_char,
  97.         ctrl_F3_code,        ctrl_F3_char,
  98.         ctrl_F4_code,        ctrl_F4_char,
  99.         ctrl_F5_code,        ctrl_F5_char,
  100.         ctrl_F6_code,        ctrl_F6_char,
  101.         ctrl_F7_code,        ctrl_F7_char,
  102.         ctrl_F8_code,        ctrl_F8_char,
  103.         ctrl_F9_code,        ctrl_F9_char,
  104.         ctrl_F10_code,        ctrl_F10_char,
  105.         ctrl_F11_code,        ctrl_F11_char,
  106.         ctrl_F12_code,        ctrl_F12_char,
  107.  
  108.         alt_F1_code,        alt_F1_char,
  109.         alt_F2_code,        alt_F2_char,
  110.         alt_F3_code,        alt_F3_char,
  111.         alt_F4_code,        alt_F4_char,
  112.         alt_F5_code,        alt_F5_char,
  113.         alt_F6_code,        alt_F6_char,
  114.         alt_F7_code,        alt_F7_char,
  115.         alt_F8_code,        alt_F8_char,
  116.         alt_F9_code,        alt_F9_char,
  117.         alt_F10_code,        alt_F10_char,
  118.         alt_F11_code,        alt_F11_char,
  119.         alt_F12_code,        alt_F12_char,
  120.  
  121.         0,                     255
  122.         };
  123. int scan_code;
  124.  
  125. scr_ci()
  126. {
  127.     int ch;
  128.     char *s;
  129.  
  130.     ch = ci();
  131.     if(ch == 0)
  132.         {scan_code = ci();
  133.         for (s = translation_table; *s; s += 2)
  134.             if(*s == scan_code)
  135.                 break;
  136.         return s[1];
  137.         }
  138.     return ch;
  139. }
  140.  
  141. #ifdef MAIN
  142.  
  143. #include <stdio.h>
  144.  
  145. main()
  146. {
  147.     int ch;
  148.     FILE *ofile;
  149.     ofile = fopen("keys", "a");
  150.  
  151.  
  152.     do
  153.         {
  154.         printf("type a key: ");
  155.         ch = scr_ci();
  156.         printf("   ch = %3d = %02x or '%c', scan code = %3d = %02x \n", 
  157.                             ch, ch, isprint(ch)?ch:'.', scan_code, scan_code);
  158.         if(isalpha(ch) || isdigit(ch) || isspace(ch)) 
  159.             fprintf(ofile, "%c", ch);
  160.         else
  161.             fprintf(ofile, "   ch = %3d = %02x or '%c', scan code %3d = %02x \n", 
  162.                             ch, ch, isprint(ch)?ch:'.', scan_code, scan_code);
  163.         } while(ch != 'q');
  164.     fclose(ofile);
  165.  
  166. }
  167. #endif MAIN
  168.