home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / PASCAL / PARADIS1 / SCROLL.PAS < prev    next >
Pascal/Delphi Source File  |  1992-01-24  |  2KB  |  100 lines

  1. (9641)  Wed 22 Jan 92 14:51
  2. By: Johannes Beekhuizen
  3. To: Frank Livaudais
  4. Re: Scroll Lock and Num Lock
  5. St:
  6. ---------------------------------------------------------------------------
  7. @MSGID: 2:281/527.5 0b0ecc73
  8. @REPLY: 1:130/78.0 2975c20c
  9. @PID: FM 2.02
  10.  > How can I toggle on and off the Scroll lock and number
  11.  > lock keys?
  12.  
  13. Any help comes up.
  14. I had to dig deep, but I think I found what you need - here is is:
  15.  
  16. PROGRAM test;
  17.  
  18. VAR KeyBoardStatus : WORD ABSOLUTE $0040:$0017;
  19.  
  20. VAR InKey       : CHAR;
  21.         Caps,
  22.         Num,
  23.       Scroll    : BOOLEAN;
  24.  
  25. PROCEDURE SetCapsLock(On : boolean);
  26.  
  27.     BEGIN
  28.         IF On THEN
  29.             KeyBoardStatus := (KeyBoardStatus OR $40)
  30.         ELSE
  31.             KeyBoardStatus := (KeyBoardStatus AND $BF);
  32.     END; {of proc SetCapsLock}
  33.  
  34. PROCEDURE SetNumLock(On : boolean);
  35.  
  36.     BEGIN
  37.         IF On THEN
  38.             KeyBoardStatus := (KeyBoardStatus OR $20)
  39.         ELSE
  40.             KeyBoardStatus := (KeyBoardStatus AND $DF);
  41.     END; {of proc SetNumLock}
  42.  
  43. PROCEDURE SetScrollLock(On : boolean);
  44.  
  45.     BEGIN
  46.         IF On THEN
  47.             KeyBoardStatus := (KeyBoardStatus OR $10)
  48.         ELSE
  49.             KeyBoardStatus := (KeyBoardStatus AND $EF);
  50.     END; {of proc SetScrollLock}
  51.  
  52. BEGIN
  53.  
  54.     Caps := FALSE;
  55.     Num := FALSE;
  56.     Scroll := FALSE;
  57.  
  58.     SetCapsLock(Caps);
  59.     SetNumLock(Num);
  60.     SetScrollLock(Scroll);
  61.  
  62.     REPEAT
  63.  
  64.       WRITELN;
  65.         WRITELN('Enter:');
  66.         WRITELN('C':10,' for CapsLock toggle,');
  67.         WRITELN('N':10,' for NumLock toggle,');
  68.         WRITELN('S':10,' for ScrollLock toggle,');
  69.         WRITE('or','X':8,' to exit:'#7,'':15);
  70.  
  71.         READLN(InKey);
  72.  
  73.         CASE Inkey OF
  74.  
  75.             'C','c' : BEGIN
  76.                             Caps := NOT Caps;
  77.                             SetCapsLock(Caps)
  78.                          END;
  79.  
  80.             'N','n' : BEGIN
  81.                             Num := NOT Num;
  82.                             SetNumLock(Num)
  83.                          END;
  84.  
  85.             'S','s' : BEGIN
  86.                             Scroll := NOT Scroll;
  87.                             SetScrollLock(Scroll)
  88.                          END
  89.  
  90.         END {case}
  91.  
  92.     UNTIL Inkey IN ['X','x']
  93.  
  94. END .
  95.  
  96. ---
  97.  * Origin: What's the use of taglines anyway? (2:281/527.5)
  98.  
  99. @PATH: 4527/5 281/527 515 1 280/0 512/0 1007 
  100.