home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / pcmag / vol12n13.zip / SHIFTK.ZIP / SHIFTKEY.PAS < prev   
Pascal/Delphi Source File  |  1992-12-09  |  1KB  |  44 lines

  1. PROGRAM ShiftKey;
  2. USES Crt;
  3. VAR
  4.   ShiftState : Byte ABSOLUTE $40:$17;
  5.   OldState   : Byte;
  6.   C          : Char;
  7.  
  8.   PROCEDURE ShiftReport;
  9.   VAR ro, co, N : Byte;
  10.   BEGIN
  11.     ro := WhereY; co := WhereX;
  12.     Window(1,1,80,25);
  13.     OldState := ShiftState;
  14.     FOR N := 0 TO 7 DO
  15.       BEGIN
  16.         GotoXY(5+N*7, 25);
  17.         IF ShiftState AND (Word(1) SHL N) <> 0 THEN Write('X')
  18.         ELSE Write(' ');
  19.       END;
  20.     Window(1,1,80,24);
  21.     GotoXY(co,ro);
  22.   END;
  23.  
  24. BEGIN
  25.   C := #0;
  26.   OldState := ShiftState;
  27.   ClrScr;
  28.   GotoXY(1,25);
  29.   Write('Rsh[ ] Lsh[ ] Ctl[ ] Alt[ ] Scr[ ] Num[ ] Cap[ ] Ins[ ]');
  30.   Window(1,1,80,24); GotoXY(1,1);
  31.   WriteLn('Press shift and regular keys.  <Esc> to quit.');
  32.   REPEAT
  33.     REPEAT UNTIL KeyPressed OR (OldState <> ShiftState);
  34.     IF KeyPressed THEN
  35.       BEGIN
  36.         C := ReadKey;
  37.         IF C = #0 THEN Write('(', Ord(ReadKey), ') ')
  38.         ELSE Write(C);
  39.         IF C=^M THEN Write(^J);
  40.       END;
  41.     IF OldState <> ShiftState THEN ShiftReport;
  42.   UNTIL C = #27;
  43. END.
  44.