1 #ifndef _EVENT_H_
2 #define _EVENT_H_ 1
3 #if defined(__cplusplus)
4 extern "C" {
5 #endif
6 
7 typedef struct	Event Event;
8 typedef struct	Menu Menu;
9 
10 enum
11 {
12 	Emouse		= 1,
13 	Ekeyboard	= 2
14 };
15 
16 enum
17 {
18 	MAXSLAVE = 32,
19 	EMAXMSG = 128+8192	/* size of 9p header+data */
20 };
21 
22 struct	Mouse
23 {
24 	int	buttons;	/* bit array: LMR=124 */
25 	Point	xy;
26 	ulong	msec;
27 };
28 
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 };
37 
38 struct Menu
39 {
40 	char	**item;
41 	char	*(*gen)(int);
42 	int	lasthit;
43 };
44 
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);
72 
73 #if defined(__cplusplus)
74 }
75 #endif
76 #endif
77