xref: /plan9/sys/include/event.h (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
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