You could try something like this:
[pascal]
...
var sc, m: byte;
i,t: integer;
begin
m := inportb($64);
t := 10;
while (t > 0) and ((m and 1) = 1) do
begin
sc := inportb($60);

m := inportb($61);
m := m or $80;
outportb($61, m);
m := m and $7F;
outportb($61, m);

HandleScancode(sc);

dec(t);
m := inportb($64);
end;
[/pascal]