[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]

    BB>procedure ShiftStatus(var Ins,
      >                          CapsLock,
      >                          NumLock,
      >                          ScrollLock,
      >                          Alt,
      >                          Ctrl,
      >                          LeftShift,
      >                          RightShift: Boolean);

    I thought this was a little tedious because it is a pain to have all
    those variables....so I made something like this:

    Unit KeyStats;

    Interface

      Function RightShift: Boolean;
      Function LeftShift: Boolean;
      Function Control: Boolean;
      Function Alt: Boolean;
      Function ScrollLock: Boolean;
      Function NumLock: Boolean;
      Function CapsLock: Boolean;
      Function Insert: Boolean;

    Implementation

    Uses Dos;

    Function ShiftState: Byte;
    Var Regs: Registers;
    Begin
      Regs.Ah:=2;
      Intr($16, Regs);
      ShiftState:=Regs.Al;
    End;

    Function RightShift: Boolean;
    Begin
      RightShift:=(ShiftState and 1)<>0;
    End;

    Function LeftShift: Boolean;
    Begin
      LeftShift:=(ShiftState and 2)<>0;
    End;

    Function Control: Boolean;
    Begin
      Control:=(ShiftState and 4)<>0;
    End;

    Function Alt: Boolean;
    Begin
      Alt:=(ShiftState and 8)<>0;
    End;

    Function ScrollLock: Boolean;
    Begin
      ScrollLock:=(ShiftState and 16)<>0;
    End;

    Function NumLock: Boolean;
    Begin
      NumLock:=(ShiftState and 32)<>0;
    End;

    Function CapsLock: Boolean;
    Begin
      CapsLock:=(ShiftState and 64)<>0;
    End;

    Function Insert: Boolean;
    Begin
      Insert:=(ShiftState and 128)<>0;
    End;

    End.

    Here is a little something that will turn on the light for you.
    The state of the keys below is at addrees $40 and offset $17 in memory, by
    changing the values at that location, you can turn on the CAPS, the NUM etc..

    Type

       Toggles      = (RShift, LShift, Ctrl, Alt,
                       ScrollLock, NumLock, CapsLock, Insert);
       Status       = Set of Toggles;

    Var
       KeyStatus   : Status Absolute $40:$17;

    Example : to turn on the caps lock, do this :

                            KeyStatus := KeyStatus + [CapsLock];

[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]