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

    {
    > I was sitting here thinking about how usefull it would be to be able
    > to check the status of the different Locks (eg. scroll lock, num lock
    > or how to do it.  I think it is some sort of Bios or Dos service??
    > Any help would be greatly appreciated.

    The easiest way is to access BIOS memory at address 40h:17h

    }
    Procedure TestKeys;

    Var
      Scroll_Lock,
      Caps_Lock,
      Num_Lock,
      Ins,
      Alt,
      Ctrl,
      Left_Shift,
      Right_Shift : Boolean;
      Bios_Keys   : Byte Absolute $40:$17;

    begin
      Ins           := ((Bios_Keys And $80) = $80);
      Caps_Lock     := ((Bios_Keys And $40) = $40);
      Num_Lock      := ((Bios_Keys And $20) = $20);
      Scroll_Lock   := ((Bios_Keys And $10) = $10);
      Alt           := ((Bios_Keys And $8)  = $8);
      Ctrl          := ((Bios_Keys And $4)  = $4);
      Left_Shift    := ((Bios_Keys And $2)  = $2);
      Right_Shift   := ((Bios_Keys And $1)  = $1);

      Writeln('Insert      : ', Ins);
      Writeln('CapsLock    : ', Caps_Lock);
      Writeln('NumLock     : ', Num_Lock);
      Writeln('ScrollLock  : ', Scroll_Lock);
      Writeln('Alt         : ', Alt);
      Writeln('Control     : ', Ctrl);
      Writeln('Left Shift  : ', Left_Shift);
      Writeln('Right Shift : ', Right_Shift);
    end;

    begin
      TestKeys;
      Readln;
    end.

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