Once a class of mouse events have been enabled,
KEY_MOUSE every time some mouse event
happens. Then, the mouse event can be retrieved with
getmouse returns a list of five elements: id, x, y, z, and
flags. The flags contain information about mouse button events.
Schematically, decoding mouse events could look like this. (Note that I’ve used some of the srfi-1 list functions in this example.)
(set! c (getch win)) (if (eqv? c KEY_MOUSE) (let* ((m (getmouse)) (mouse-x (second m)) (mouse-y (third m)) (mouse-flag (fifth m))) (cond ((logtest BUTTON1_PRESSED mouse-flag) ; do button1-pressed response here ) ((logtest BUTTON1_RELEASED mouse-flag) ; do button1-released response here ))))