Это работает лишь в очень старых версиях Windows, теперь такое блокируется на уровне драйверной "обвязки" ядра, другими словами GetKeyState самый подходящий вариант для определения состояния конкретной клавиши, иначе есть ещё несколько способов, но они тоже за здоровый образ жизни без "асмы", напр.
Код:
function down: Boolean;
var
i: integer;
begin
Result:= false;
for i := 0 to 255 do if GetAsyncKeyState(i) <> 0 then Result:= true;
end;
мышиные кнопаря тоже отслеживаются