78: How do I detect if
the F11 or F12 key has been pressed?
A: Here is a sample
program
uses Dos;
(* Enhanced keyboard ReadKey, no Crt unit needed. Detects
also F11
and F12, and distinguishes between the numeric keypad and
the
gray keys. Lower part of the word returns the first scan code,
the higher part the second *)
function RDENKEFN : word;
var regs : registers;
keyboard : byte absolute $40:$96;
begin
rdenkefn := 0;
if ((keyboard shr 4) and 1) = 0 then exit;
FillChar (regs, SizeOf(regs), 0);
regs.ah := $10;
Intr ($16, regs);
rdenkefn := regs.ax;
end; (* rdenkefn *)
{}
procedure TEST;
var key : word;
begin
while Lo(key) <> 27 do { esc exits }
begin
key := RDENKEFN;
if (Lo(key) = 0) and (Hi(key) = 133) then
writeln ('F11 was pressed');
if (Lo(key) = 0) and (Hi(key) = 134) then
writeln ('F12 was pressed');
end;
end;
{}
begin TEST; end.