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