home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / PASCAL / KEYBOARD / KEYDEMO.PAS < prev    next >
Pascal/Delphi Source File  |  1988-08-16  |  2KB  |  90 lines

  1. Program KeyBoardDemo;
  2.  
  3. Uses
  4.   Crt,DOS, KeyBoard;
  5.  
  6. Const
  7.   ShiftArray : Array [ShiftKeys] of String [20] = (
  8.     'RightShiftKeyPressed',
  9.     'LeftShiftKeyPressed',
  10.     'CtrlKeyPressed',
  11.     'AltKeyPressed',
  12.     'ScrollLockStatus',
  13.     'NumLockStatus',
  14.     'CapsLockStatus',
  15.     'InsertStatus',
  16.     'LeftCtrlKeyPressed',
  17.     'LeftAltKeyPressed',
  18.     'SysReqKeyPressed',
  19.     'PauseActive',
  20.     'ScrollLockKeyPressed',
  21.     'NumLockKeyPressed',
  22.     'CapsLockKeyPressed',
  23.     'InsertKeyPressed',
  24.     'RightCtrlKeyPressed',
  25.     'RightAltKeyPressed',
  26.     'KeyBoard101');
  27.  
  28. Procedure ShowShift;
  29.   Type
  30.     String2 = String[2];
  31.     ByteSet = Set of Byte;
  32.   Var
  33.     Index,E  : Byte;
  34.     B,M : Word;
  35.     BS : ByteSet absolute B;
  36.     MS : Byteset absolute M;
  37.     ES : ByteSet absolute E;
  38.     Key : ShiftKeys;
  39.   Const
  40.     S : String2 = '01';
  41.   Begin
  42.     B := BIOSshift;
  43.     M := MemShift (E);
  44.     E := MemW [$40:$96];
  45.     For Index := 0 to 15 do Begin
  46.       GotoXY (2*Index+11,3);
  47.       Write (s[Byte(Index in BS)+1]);
  48.       GotoXY (2*Index+11,4);
  49.       Write (s[Byte(Index in MS)+1]);
  50.     End;
  51.     For Index := 0 to 7 do Begin
  52.       GotoXY (2*Index+11,5);
  53.       Write (s[Byte(Index in ES)+1]);
  54.     End;
  55.     Writeln;
  56.     UpDateShift;
  57.     For Key := RightShiftKeyPressed to KeyBoard101 do Begin
  58.       If Key in ShiftStatus Then Write (ShiftArray[Key])
  59.                             Else Write ('                        ');
  60.       Writeln;
  61.     End;
  62.   End; { ShowShift }
  63.  
  64. Var
  65.   Ready : Boolean;
  66.   Ch : Char;
  67.  
  68. Begin
  69.   DirectVideo := True;
  70.   ClrScr;
  71.   Writeln ('ShowShift                     1 1 1 1 1 1');
  72.   Writeln ('          0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5');
  73.   Writeln ('BIOS :');
  74.   Writeln ('Memory :');
  75.   Writeln ('Status : ');
  76.  
  77.   Ready := False;
  78.  
  79.   Repeat
  80.     ShowShift;
  81.     Ready := KeyPressed;
  82.     If Ready Then Begin
  83.       Ch := ReadKey;
  84.       Ready := Ch = ' ';
  85.       If Ch = #0 Then Ch := ReadKey;
  86.     End;
  87.   Until Ready;
  88. End.
  89.  
  90.