Вроде бы как пришло в мою голову решение проблемы:
Код:
var
i : byte;
keyboardState,keyboardStateNew : array[0..255] of bool;
next : bool;
...
begin
for i := 65 to 90 do //Проверка клавиш 'a'..'z'
begin
if GetASYNCKeyState(i) <> 0 then keyboardStateNew[i] := True else keyboardStateNew[i] := false;
if (keyboardState[i] <> keyboardStateNew[i]) then next := true;
keyboardState[i] := keyboardStateNew[i];
end;
if next then
...
next := false
end;
Теперь работает как одно нажатие.
Ладно, спасибо всем за помощь)