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