Q:> 2.4.1 Как узнать состояние клавиш Shift, Alt, Ctrl,
Num Lock, Caps Lock, Scroll Lock и искусственно переключать их?
A:> Состояние этих клавиш храниться в памяти по адресу 0:$417.
Каждой из этих клавиш в байте по этому адресу соответствует
свой бит. Следующие процедуры показывает как можно читать и
изменять состояния клавиш
Type
TKeytype=(ktCaps, ktNum, ktScroll, ktCtrl, ktAlt, ktLShift,
ktRShift);
function GetLock(lock:TKeytype):Boolean;
var
b:byte;
begin
case lock of
ktCaps : b:=$40;
ktNum : b:=$20;
ktScroll : b:=$10;
ktCtrl : b:=$04;
ktAlt : b:=$08;
ktLShift : b:=$02;
ktRShift : b:=$01;
end;
if (mem[0:$417] and b)<>0 then GetLock:=true
else GetLock:=false;
end;
procedure SetLock(lock:TKeytype; On:Boolean);
var
b:byte;
begin
case lock of
ktCaps : b:=$40;
ktNum : b:=$20;
ktScroll : b:=$10;
ktCtrl : b:=$04;
ktAlt : b:=$08;
ktLShift : b:=$02;
ktRShift : b:=$01;
end;
if On then
mem[0:$417]:=mem[0:$417] or b
Else
mem[0:$417]:=mem[0:$417] and not b;
end;