1 #pragma src "/sys/src/libdraw" 2 #pragma lib "libdraw.a" 3 4 typedef struct Cursor Cursor; 5 typedef struct Event Event; 6 typedef struct Menu Menu; 7 8 enum 9 { 10 Emouse = 1, 11 Ekeyboard = 2, 12 }; 13 14 enum 15 { 16 MAXSLAVE = 32, 17 EMAXMSG = 128+8192, /* size of 9p header+data */ 18 }; 19 20 struct Mouse 21 { 22 int buttons; /* bit array: LMR=124 */ 23 Point xy; 24 ulong msec; 25 }; 26 27 struct Event 28 { 29 int kbdc; 30 Mouse mouse; 31 int n; /* number of characters in message */ 32 void *v; /* data unpacked by general event-handling function */ 33 uchar data[EMAXMSG]; /* message from an arbitrary file descriptor */ 34 }; 35 36 struct Menu 37 { 38 char **item; 39 char *(*gen)(int); 40 int lasthit; 41 }; 42 43 /* 44 * Events 45 */ 46 extern void einit(ulong); 47 extern ulong estart(ulong, int, int); 48 extern ulong estartfn(ulong, int, int, int (*fn)(int, Event*, uchar*, int)); 49 extern ulong etimer(ulong, int); 50 extern ulong event(Event*); 51 extern ulong eread(ulong, Event*); 52 extern Mouse emouse(void); 53 extern int ekbd(void); 54 extern int ecanread(ulong); 55 extern int ecanmouse(void); 56 extern int ecankbd(void); 57 extern void eresized(int); /* supplied by user */ 58 extern int emenuhit(int, Mouse*, Menu*); 59 extern int eatomouse(Mouse*, char*, int); 60 extern Rectangle getrect(int, Mouse*); 61 extern void esetcursor(Cursor*); 62 extern void emoveto(Point); 63 extern Rectangle egetrect(int, Mouse*); 64 extern void edrawgetrect(Rectangle, int); 65 extern int ereadmouse(Mouse*); 66 extern int eatomouse(Mouse*, char*, int); 67