Crazy Typer
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.