Примерно принцип такой:
Код
var k:array[0..255]of boolean;
//.................................................
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
k[key]:=true;
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
k[key]:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if k[32] then begin ... end;
end;