17dd7cddfSDavid du Colombier #pragma src "/sys/src/libdraw" 27dd7cddfSDavid du Colombier 3*d9306527SDavid du Colombier typedef struct Channel Channel; 47dd7cddfSDavid du Colombier typedef struct Cursor Cursor; 57dd7cddfSDavid du Colombier typedef struct Menu Menu; 67dd7cddfSDavid du Colombier typedef struct Mousectl Mousectl; 77dd7cddfSDavid du Colombier 87dd7cddfSDavid du Colombier struct Mouse 97dd7cddfSDavid du Colombier { 107dd7cddfSDavid du Colombier int buttons; /* bit array: LMR=124 */ 117dd7cddfSDavid du Colombier Point xy; 127dd7cddfSDavid du Colombier ulong msec; 137dd7cddfSDavid du Colombier }; 147dd7cddfSDavid du Colombier 157dd7cddfSDavid du Colombier struct Mousectl 167dd7cddfSDavid du Colombier { 177dd7cddfSDavid du Colombier Mouse; 187dd7cddfSDavid du Colombier Channel *c; /* chan(Mouse) */ 197dd7cddfSDavid du Colombier Channel *resizec; /* chan(int)[2] */ 207dd7cddfSDavid du Colombier /* buffered in case client is waiting for a mouse action before handling resize */ 217dd7cddfSDavid du Colombier 227dd7cddfSDavid du Colombier char *file; 237dd7cddfSDavid du Colombier int mfd; /* to mouse file */ 247dd7cddfSDavid du Colombier int cfd; /* to cursor file */ 257dd7cddfSDavid du Colombier int pid; /* of slave proc */ 267dd7cddfSDavid du Colombier Image* image; /* of associated window/display */ 277dd7cddfSDavid du Colombier }; 287dd7cddfSDavid du Colombier 297dd7cddfSDavid du Colombier struct Menu 307dd7cddfSDavid du Colombier { 317dd7cddfSDavid du Colombier char **item; 327dd7cddfSDavid du Colombier char *(*gen)(int); 337dd7cddfSDavid du Colombier int lasthit; 347dd7cddfSDavid du Colombier }; 357dd7cddfSDavid du Colombier 367dd7cddfSDavid du Colombier /* 377dd7cddfSDavid du Colombier * Mouse 387dd7cddfSDavid du Colombier */ 397dd7cddfSDavid du Colombier extern Mousectl* initmouse(char*, Image*); 407dd7cddfSDavid du Colombier extern void moveto(Mousectl*, Point); 417dd7cddfSDavid du Colombier extern int readmouse(Mousectl*); 427dd7cddfSDavid du Colombier extern void closemouse(Mousectl*); 437dd7cddfSDavid du Colombier extern void setcursor(Mousectl*, Cursor*); 447dd7cddfSDavid du Colombier extern void drawgetrect(Rectangle, int); 457dd7cddfSDavid du Colombier extern Rectangle getrect(int, Mousectl*); 467dd7cddfSDavid du Colombier extern int menuhit(int, Mousectl*, Menu*, Screen*); 47