PROCEDURE MouseEvent(v:MouseVBT; READONLY cd: VBT.MouseRec) = VAR point:=cd.cp.pt; mods:=cd.modifiers; text:=""; BEGIN CASE cd.whatChanged OF | Modifier.MouseL => TextVBT.Put(v.whatChanged, "Left Button"); | Modifier.MouseM => TextVBT.Put(v.whatChanged, "Middle Button"); | Modifier.MouseR => TextVBT.Put(v.whatChanged, "Right Button"); END; TextVBT.Put(v.time, Fmt.Unsigned(cd.time)); (* really Word.T *) TextVBT.Put(v.cp, "("&Fmt.Int(point.h)&","&Fmt.Int(point.v)&")"); IF (Modifier.Shift IN mods) THEN text := text&"+Shift"; END; IF (Modifier.Lock IN mods) THEN text := text&"+Lock"; END; IF (Modifier.Control IN mods) THEN text := text&"+Control"; END; IF (Modifier.Option IN mods) THEN text := text&"+Option"; END; TextVBT.Put(v.modifiers, text); CASE cd.clickType OF | ClickType.FirstDown => TextVBT.Put(v.clickType, "FirstDown"); | ClickType.OtherDown => TextVBT.Put(v.clickType, "OtherDown"); | ClickType.OtherUp => TextVBT.Put(v.clickType, "OtherUp"); | ClickType.LastUp => TextVBT.Put(v.clickType, "LastUp"); END; TextVBT.Put(v.clickCount, Fmt.Int(cd.clickCount)); END MouseEvent;