program keyit;
   uses crt,dos;
   var x,y:integer;
   var inkey:char;
   {$I inkey.pas}
 Procedure chkdir;
           begin;
           if inkey='o' then y:=y-1; if y<1 then y:=1;
           if inkey='l' then y:=y+1; if y>22 then y:=22;
           if inkey='k' then x:=x-1; if x<1 then x:=1;
           if inkey=';' then x:=x+1; if x>79 then x:=79;
            gotoxy(x,y);
           write(char(1));
           delay (500)
           end;
   begin;
   x:=40; y:=10;
   while inkey<>'q' do
       Begin
       getinkey;
       gotoxy(x,y);
       write(' ');
       chkdir;
       end;
  end.

procedure getinkey;
       begin;
         if keypressed then inkey:=readkey;
         end;


    Source: geocities.com/~franzglaser/tpsrc

               ( geocities.com/~franzglaser)