Пауза великовата да и смысл проверять клавиши каждый раз?
Я обычно делаю конструкции такого вида:
repeat
repeat
key:=GetKeyPressed;
Delay(20);
if (key<>0) then break;
until false;
key:=KeyToAction(key);
if (key = GA_LEFT) then MoveLeft;
if (key = GA_RIGHT) then MoveRIght;
.....
until false;