glenda.party
term% ls -F
term% cat index.txt
BUTTON(9.2)                                                        BUTTON(9.2)

NAME
       button123,  mouse,  cursallow,  cursinhibit,  cursset,  cursswitch, ge‐
       trect123 - mouse control

SYNOPSIS
       #include <jerq.h>

       extern struct Mouse {
           Point xy;
           short buttons;
       } mouse;

       int button(n) int n;
       int button1(), button2(), button3();
       int button12(), button23(), button123();

       void cursinhibit();
       void cursallow();

       void cursset(p); Point p;

       Texture *cursswitch(t); Texture *t;

       Rectangle getrect(n) int n;
       Rectangle getrect1(), getrect2(), getrect3();
       Rectangle getrect12(), getrect23(), getrect123();

DESCRIPTION
       For processes that request the  mouse  (see  request(9.2)),  the  mouse
       state  is  updated  asynchronously  in the per-process structure mouse.
       The coordinates of the mouse are held in mouse.xy, and the state of the
       buttons in mouse.buttons.  Each process's mouse structure  is  indepen‐
       dent of the others, so that (except for cursset) actions such as chang‐
       ing the tracking cursor do not affect other process's use of the mouse.
       Mouse  is  not updated if the process does not ‘own' the mouse; see re‐
       quest(9.2).

       The macro button and its counterparts return the state of  the  associ‐
       ated  mouse  button:  non-zero if the button is depressed, 0 otherwise.
       The buttons are numbered 1 to 3 from left to right.  Button12  and  the
       other multi-button functions return the OR of their states: true if ei‐
       ther button 1 or button 2 is depressed (as opposed to button 1 and but‐
       ton 2).

       Cursinhibit  turns  off  interrupt-time cursor tracking (the drawing of
       the cursor on the screen), although the  mouse  coordinates  are  still
       kept  current  and  available.  Cursallow enables interrupt-time cursor
       tracking.  Cursallow and cursinhibit stack: to enable  cursor  tracking
       after two calls to cursinhibit, two calls to cursallow are required.

       Cursset moves the mouse cursor to the Point p.

       Cursswitch changes the mouse cursor (a 16×16 pixel image) to that spec‐
       ified  by  the Texture *t.  If the argument is (Texture *)0, the cursor
       is restored to the default  arrow.   Cursswitch  returns  the  previous
       value of the cursor: the argument of the previous call to cursswitch.

       Getrect prompts the user with a box cursor and waits for a rectangle to
       be  swept  out  named button, identified as with the button primitives.
       It returns the screen coordinates of the box swept.   The  box  may  be
       partly or wholly outside the process's layer.

                                                                   BUTTON(9.2)