Crazy Typer

 
 

program CrazyTyper;

uses Types, QuickDraw, Events;


{ Handle key }


procedure handleKey(key: Integer);

begin

  setForeColor(random mod 15 + 1);

  moveTo(random mod 310, random mod 180 + 10);

  drawString(chr(key));

end;


{ Handle mouse }


procedure handleMouse(p: Point);

var

  circle: Rect;

 

begin

  setSolidPenPat(random mod 15 + 1);

  setRect(circle, p.h - 3, p.v - 3, p.h + 6,

  p.v + 6);

  paintOval(circle); 

end;


var

  i, key, etypes: Integer;

  event: EventRecord;


begin

  graphics(320);

  clearScreen(black);

  setBackColor(black); 

  etypes := keyDownMask + mDownMask;

   

  while true do begin

    if getNextEvent(etypes, event) then begin  

      case event.what of

     

        { Key down }

       

        keyDownEvt: begin

          key := event.message;

         

          case key of

            27: halt;

            32: clearScreen(black);

            otherwise handleKey(key);

          end;

        end;

       

        { Mouse down }

           

        mouseDownEvt: handleMouse(event.where);

      end;

    end;

  end;

end.

This program shows any keys typed on keyboard in random position and color on screen.


It also shows the current mouse position when clicked. Press ESC to quit the program. It teaches keyboard and mouse event handling.