Blob


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