home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / keyboard / extkey / extkey.pas < prev    next >
Pascal/Delphi Source File  |  1988-02-09  |  3KB  |  86 lines

  1. Unit ExtKey;
  2.  
  3. { TP4 Unit: EXTKEY.PAS / Author: David Bennett / Date: 2-9-88 / Version 1.0
  4. {
  5. { This unit is a "Primitive" but very effective way to access most of the
  6. { extended key values using Turbo Pascal Version 4.0. See text for a more
  7. { descriptive documentation. Released to the public domain.
  8. }
  9.  
  10. Interface
  11.  
  12. Uses
  13.   Crt;
  14.  
  15. { The constants below can be used by your program to test for a particular
  16. { extended key value
  17. }
  18.  
  19. Const
  20.   Alt_A=$011E; Alt_B=$0130; Alt_C=$012E; Alt_D=$0120; Alt_E=$0112;
  21.   Alt_F=$0121; Alt_G=$0122; Alt_H=$0123; Alt_I=$0117; Alt_J=$0124;
  22.   Alt_K=$0125; Alt_L=$0126; Alt_M=$0132; Alt_N=$0131; Alt_O=$0118;
  23.   Alt_P=$0119; Alt_Q=$0110; Alt_R=$0113; Alt_S=$011F; Alt_T=$0114;
  24.   Alt_U=$0116; Alt_V=$012F; Alt_W=$0111; Alt_X=$012D; Alt_Y=$0115;
  25.   Alt_Z=$012C;
  26.  
  27.   UpKey        =$0148; DownKey       =$0150;
  28.   LeftKey      =$014B; RightKey      =$014D;
  29.   Ctrl_LeftKey =$0173; Ctrl_RightKey =$0174;
  30.   InsKey       =$0152; DelKey        =$0153;
  31.   HomeKey      =$0147; EndKey        =$014F;
  32.   PageUp       =$0149; PageDown      =$0151;
  33.   Ctrl_HomeKey =$0177; Ctrl_EndKey   =$0175;
  34.   Ctrl_PageUp  =$0184; Ctrl_PageDown =$0176;
  35.  
  36.   F1=$013B; F2=$013C; F3=$013D; F4=$013E; F5=$013F; F6=$0140; F7=$0141;
  37.   F8=$0142; F9=$0143; F10=$0144;
  38.  
  39.   Shift_F1=$0154; Shift_F2=$0155; Shift_F3=$0156; Shift_F4=$0157;
  40.   Shift_F5=$0158; Shift_F6=$0159; Shift_F7=$015A; Shift_F8=$015B;
  41.   Shift_F9=$015C; Shift_F10=$015D;
  42.  
  43.   Alt_F1=$0168; Alt_F2=$0169; Alt_F3=$016A; Alt_F4=$016B; Alt_F5=$016C;
  44.   Alt_F6=$016D; Alt_F7=$016E; Alt_F8=$016F; Alt_F9=$0170; Alt_F10=$0171;
  45.  
  46.   Ctrl_F1=$015E; Ctrl_F2=$015F; Ctrl_F3=$0160; Ctrl_F4=$0161; Ctrl_F5=$0162;
  47.   Ctrl_F6=$0163; Ctrl_F7=$0164; Ctrl_F8=$0165; Ctrl_F9=$0166; Ctrl_F10=$0167;
  48.  
  49. Var
  50.   ExtendedKey,           { Returns true if last key was extended false if not }
  51.   ASCIIKey    : Boolean; { Returns exactly opposite of ExtendedKey            }
  52.  
  53. Function ExtendKey : Word;
  54. { * This procedure returns the extended key board value. If the keypressed
  55. { * was an extended keyboard code, it will return a $01 (ESC) in the
  56. { * High byte.
  57. }
  58.  
  59. Implementation
  60.  
  61. { * This procedure returns the extended key board value. If the keypressed
  62. { * was an extended keyboard code, it will return a $01 in the high byte.
  63. { * If an extended key was pressed the ExtendedKey will return true. If
  64. { * an ASCII key was pressed the ASCIIKey will return true.
  65. }
  66. Function ExtendKey : Word;
  67. Var
  68.   Ch     : Char;
  69.   Result : Word;
  70. Begin
  71.   Ch := #00;
  72.   Ch := ReadKey;
  73.   If (Ch = #00) Then Begin
  74.     Ch          := ReadKey;
  75.     Result      := $0100+Ord(Ch);
  76.     ExtendedKey := True;
  77.   End Else Begin
  78.     Result      := Ord(Ch);
  79.     ExtendedKey := False;
  80.   End;
  81.   ASCIIKey := Not(ExtendedKey);
  82.   ExtendKey := Result;
  83. End;
  84.  
  85. End. {Implementation}
  86.