17dd7cddfSDavid du Colombier #pragma src "/sys/src/libdraw" 27dd7cddfSDavid du Colombier #pragma lib "libdraw.a" 37dd7cddfSDavid du Colombier 47dd7cddfSDavid du Colombier typedef struct Cursor Cursor; 57dd7cddfSDavid du Colombier typedef struct Event Event; 67dd7cddfSDavid du Colombier typedef struct Menu Menu; 77dd7cddfSDavid du Colombier 87dd7cddfSDavid du Colombier enum 97dd7cddfSDavid du Colombier { 107dd7cddfSDavid du Colombier Emouse = 1, 117dd7cddfSDavid du Colombier Ekeyboard = 2, 127dd7cddfSDavid du Colombier }; 137dd7cddfSDavid du Colombier 147dd7cddfSDavid du Colombier enum 157dd7cddfSDavid du Colombier { 167dd7cddfSDavid du Colombier MAXSLAVE = 32, 17*024a9683SDavid du Colombier EMAXMSG = 128+16*1024, /* size of 9p header+data */ 187dd7cddfSDavid du Colombier }; 197dd7cddfSDavid du Colombier 207dd7cddfSDavid du Colombier struct Mouse 217dd7cddfSDavid du Colombier { 227dd7cddfSDavid du Colombier int buttons; /* bit array: LMR=124 */ 237dd7cddfSDavid du Colombier Point xy; 247dd7cddfSDavid du Colombier ulong msec; 257dd7cddfSDavid du Colombier }; 267dd7cddfSDavid du Colombier 277dd7cddfSDavid du Colombier struct Event 287dd7cddfSDavid du Colombier { 297dd7cddfSDavid du Colombier int kbdc; 307dd7cddfSDavid du Colombier Mouse mouse; 317dd7cddfSDavid du Colombier int n; /* number of characters in message */ 327dd7cddfSDavid du Colombier void *v; /* data unpacked by general event-handling function */ 337dd7cddfSDavid du Colombier uchar data[EMAXMSG]; /* message from an arbitrary file descriptor */ 347dd7cddfSDavid du Colombier }; 357dd7cddfSDavid du Colombier 367dd7cddfSDavid du Colombier struct Menu 377dd7cddfSDavid du Colombier { 387dd7cddfSDavid du Colombier char **item; 397dd7cddfSDavid du Colombier char *(*gen)(int); 407dd7cddfSDavid du Colombier int lasthit; 417dd7cddfSDavid du Colombier }; 427dd7cddfSDavid du Colombier 437dd7cddfSDavid du Colombier /* 447dd7cddfSDavid du Colombier * Events 457dd7cddfSDavid du Colombier */ 467dd7cddfSDavid du Colombier extern void einit(ulong); 477dd7cddfSDavid du Colombier extern ulong estart(ulong, int, int); 487dd7cddfSDavid du Colombier extern ulong estartfn(ulong, int, int, int (*fn)(int, Event*, uchar*, int)); 497dd7cddfSDavid du Colombier extern ulong etimer(ulong, int); 507dd7cddfSDavid du Colombier extern ulong event(Event*); 517dd7cddfSDavid du Colombier extern ulong eread(ulong, Event*); 527dd7cddfSDavid du Colombier extern Mouse emouse(void); 537dd7cddfSDavid du Colombier extern int ekbd(void); 547dd7cddfSDavid du Colombier extern int ecanread(ulong); 557dd7cddfSDavid du Colombier extern int ecanmouse(void); 567dd7cddfSDavid du Colombier extern int ecankbd(void); 577dd7cddfSDavid du Colombier extern void eresized(int); /* supplied by user */ 587dd7cddfSDavid du Colombier extern int emenuhit(int, Mouse*, Menu*); 597dd7cddfSDavid du Colombier extern int eatomouse(Mouse*, char*, int); 607dd7cddfSDavid du Colombier extern Rectangle getrect(int, Mouse*); 617dd7cddfSDavid du Colombier extern void esetcursor(Cursor*); 627dd7cddfSDavid du Colombier extern void emoveto(Point); 637dd7cddfSDavid du Colombier extern Rectangle egetrect(int, Mouse*); 647dd7cddfSDavid du Colombier extern void edrawgetrect(Rectangle, int); 657dd7cddfSDavid du Colombier extern int ereadmouse(Mouse*); 667dd7cddfSDavid du Colombier extern int eatomouse(Mouse*, char*, int); 67