[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]