home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / keyboard / kbdhdr / kbdhdr.pas < prev   
Pascal/Delphi Source File  |  1991-01-19  |  5KB  |  229 lines

  1. (******************************************************************************
  2. *                                   kbdHdr                                    *
  3. * Common Keyboard interface unit symbolic names, ungetch routine              *
  4. ******************************************************************************)
  5. Unit kbdHdr;
  6.  
  7. Interface
  8.  
  9. Uses Crt;
  10.  
  11. Const    
  12.     F1  = #187;
  13.     F2  = #188;
  14.     F3  = #189;
  15.     F4  = #190;
  16.     F5  = #191;
  17.     F6  = #192;
  18.     F7  = #193;
  19.     F8  = #194;
  20.     F9  = #195;
  21.     F10 = #196;
  22.  
  23.     ALTF1  = #232;
  24.     ALTF2  = #233;
  25.     ALTF3  = #234;
  26.     ALTF4  = #235;
  27.     ALTF5  = #236;
  28.     ALTF6  = #237;
  29.     ALTF7  = #238;
  30.     ALTF8  = #239;
  31.     ALTF9  = #240;
  32.     ALTF10 = #241;
  33.  
  34.     CTRLF1    = #222;
  35.     CTRLF2    = #223;
  36.     CTRLF3    = #224;
  37.     CTRLF4    = #225;
  38.     CTRLF5    = #226;
  39.     CTRLF6    = #227;
  40.     CTRLF7    = #228;
  41.     CTRLF8    = #229;
  42.     CTRLF9    = #230;
  43.     CTRLF10 = #231;
  44.  
  45.     SHFTF1    = #212;
  46.     SHFTF2    = #213;
  47.     SHFTF3    = #214;
  48.     SHFTF4    = #215;
  49.     SHFTF5    = #216;
  50.     SHFTF6    = #217;
  51.     SHFTF7    = #218;
  52.     SHFTF8    = #219;
  53.     SHFTF9    = #220;
  54.     SHFTF10 = #221;
  55.  
  56.     UPARROW    = #200;
  57.     RIGHTARROW = #205;
  58.     LEFTARROW  = #203;
  59.     DOWNARROW  = #208;
  60.  
  61.     HOME       = #199;
  62.     PGUP       = #201;
  63.     ENDKEY       = #207;
  64.     PGDN       = #209;
  65.     INS              = #210;
  66.     DEL              = #211;
  67.     TAB              = #9;
  68.     ESC              = #27;
  69.     ENTER       = #13;
  70.     SYSREQ       = #183;
  71.     CTRLMINUS  = #31;
  72.     SPACE       = #32;
  73.     CTRL2       = #129;
  74.     CTRL6       = #30;
  75.     BACKSPACE  = #8;
  76.     BS              = #8; {2 NAMES FOR BACKSPACE}
  77.  
  78.     CTRLBACKSLASH     = #28;
  79.     CTRLLEFTBRACKET  = #27;
  80.     CTRLRIGHTBRACKET = #29;
  81.     CTRLBACKSPACE     = #127;
  82.     CTRLBS              = #127;
  83.  
  84.     ALTA = #158;
  85.     ALTB = #176;
  86.     ALTC = #174;
  87.     ALTD = #160;
  88.     ALTE = #146;
  89.     ALTF = #161;
  90.     ALTG = #162;
  91.     ALTH = #163;
  92.     ALTI = #151;
  93.     ALTJ = #164;
  94.     ALTK = #165;
  95.     ALTL = #166;
  96.     ALTM = #178;
  97.     ALTN = #177;
  98.     ALTO = #152;
  99.     ALTP = #153;
  100.     ALTQ = #144;
  101.     ALTR = #147;
  102.     ALTS = #159;
  103.     ALTT = #148;
  104.     ALTU = #150;
  105.     ALTV = #175;
  106.     ALTW = #145;
  107.     ALTX = #173;
  108.     ALTY = #149;
  109.     ALTZ = #172;
  110.  
  111.     CTRLA = #1;
  112.     CTRLB = #2;
  113.     CTRLC = #3;
  114.     CTRLD = #4;
  115.     CTRLE = #5;
  116.     CTRLF = #6;
  117.     CTRLG = #7;
  118.     CTRLH = #8;
  119.     CTRLI = #9;
  120.     CTRLJ = #10;
  121.     CTRLK = #11;
  122.     CTRLL = #12;
  123.     CTRLM = #13;
  124.     CTRLN = #14;
  125.     CTRLO = #15;
  126.     CTRLP = #16;
  127.     CTRLQ = #17;
  128.     CTRLR = #18;
  129.     CTRLS = #19;
  130.     CTRLT = #20;
  131.     CTRLU = #21;
  132.     CTRLV = #22;
  133.     CTRLW = #23;
  134.     CTRLX = #24;
  135.     CTRLY = #25;
  136.     CTRLZ = #26;
  137.  
  138.     ALT1 = #248;
  139.     ALT2 = #249;
  140.     ALT3 = #250;
  141.     ALT4 = #251;
  142.     ALT5 = #252;
  143.     ALT6 = #253;
  144.     ALT7 = #254;
  145.     ALT8 = #255;
  146.     ALT9 = #167;
  147.     ALT0 = #168;
  148.  
  149.     ALTMINUS = #169;
  150.     ALTEQ     = #170;
  151.     SHIFTTAB = #143;
  152.  
  153. Function GetKey : Char;
  154. procedure unGetKey(C : char);
  155. procedure FlushKbd;
  156. procedure flushBuffer;
  157.  
  158. const
  159.     hasPushedChar   : boolean = false;
  160.  
  161. implementation
  162. var
  163.     pushedChar        : char;
  164.  
  165.  
  166. (******************************************************************************
  167. *                                  FlushKbd                                  *
  168. ******************************************************************************)
  169. procedure FlushKbd;
  170. var
  171.     C    : char;
  172. begin
  173.     hasPushedChar := False;
  174.     while (KeyPressed) do
  175.          C := GetKey;
  176. end; {flushKbd}
  177.  
  178. (******************************************************************************
  179. *                                 flushBuffer                                 *
  180. * Same as above, but if key was pushed by eventMgr, know about it !!          *
  181. ******************************************************************************)
  182. procedure flushBuffer;
  183. var
  184.    b : boolean;
  185. begin
  186.    b := hasPushedChar;
  187.    flushKbd;
  188.    hasPushedChar := b;
  189. end; {flushBuffer}
  190.  
  191.  
  192. (******************************************************************************
  193. *                                  unGetKey                                   *
  194. * UnGetKey will put one character back in the input buffer. Push-back buffer  *
  195. * can contain only one character.                                              *
  196. * To avoid problems DO NOT CALL UNGETKEY WITHOUT FIRST CALLING GETKEY. If two *
  197. * characters are pushed, the first is discarded.                              *
  198. ******************************************************************************)
  199. procedure unGetKey;
  200. begin
  201.     hasPushedChar := True;
  202.     pushedChar      := c;
  203. end; {unGetKey}
  204.  
  205. (******************************************************************************
  206. *                                   GetKey                                   *
  207. ******************************************************************************)
  208. function GetKey : Char;
  209. var 
  210.     c : Char;
  211. Begin
  212.     if (hasPushedChar) then begin
  213.         GetKey          := pushedChar;
  214.         hasPushedChar := False;
  215.         exit;
  216.     end;
  217.     c := ReadKey;
  218.     if (Ord(c) = 0) then Begin
  219.         c := ReadKey;
  220.         if c in [#128,#129,#130,#131]
  221.             then c := chr(ord(c) + 39)
  222.         else c := chr(ord(c) + 128); {map to suit keyboard constants}
  223.     End;
  224.     GetKey := c; {return keyboard (my..) code }
  225. End; {getKey}
  226.  
  227. End.
  228. 
  229.