xref: /plan9-contrib/sys/include/event.h (revision 024a96836316be092f525ab68e1fa35e086d48d1)
17dd7cddfSDavid du Colombier #pragma src "/sys/src/libdraw"
27dd7cddfSDavid du Colombier #pragma lib "libdraw.a"
37dd7cddfSDavid du Colombier 
47dd7cddfSDavid du Colombier typedef struct	Cursor Cursor;
57dd7cddfSDavid du Colombier typedef struct	Event Event;
67dd7cddfSDavid du Colombier typedef struct	Menu Menu;
77dd7cddfSDavid du Colombier 
87dd7cddfSDavid du Colombier enum
97dd7cddfSDavid du Colombier {
107dd7cddfSDavid du Colombier 	Emouse		= 1,
117dd7cddfSDavid du Colombier 	Ekeyboard	= 2,
127dd7cddfSDavid du Colombier };
137dd7cddfSDavid du Colombier 
147dd7cddfSDavid du Colombier enum
157dd7cddfSDavid du Colombier {
167dd7cddfSDavid du Colombier 	MAXSLAVE = 32,
17*024a9683SDavid du Colombier 	EMAXMSG = 128+16*1024,	/* size of 9p header+data */
187dd7cddfSDavid du Colombier };
197dd7cddfSDavid du Colombier 
207dd7cddfSDavid du Colombier struct	Mouse
217dd7cddfSDavid du Colombier {
227dd7cddfSDavid du Colombier 	int	buttons;	/* bit array: LMR=124 */
237dd7cddfSDavid du Colombier 	Point	xy;
247dd7cddfSDavid du Colombier 	ulong	msec;
257dd7cddfSDavid du Colombier };
267dd7cddfSDavid du Colombier 
277dd7cddfSDavid du Colombier struct	Event
287dd7cddfSDavid du Colombier {
297dd7cddfSDavid du Colombier 	int	kbdc;
307dd7cddfSDavid du Colombier 	Mouse	mouse;
317dd7cddfSDavid du Colombier 	int	n;		/* number of characters in message */
327dd7cddfSDavid du Colombier 	void	*v;		/* data unpacked by general event-handling function */
337dd7cddfSDavid du Colombier 	uchar	data[EMAXMSG];	/* message from an arbitrary file descriptor */
347dd7cddfSDavid du Colombier };
357dd7cddfSDavid du Colombier 
367dd7cddfSDavid du Colombier struct Menu
377dd7cddfSDavid du Colombier {
387dd7cddfSDavid du Colombier 	char	**item;
397dd7cddfSDavid du Colombier 	char	*(*gen)(int);
407dd7cddfSDavid du Colombier 	int	lasthit;
417dd7cddfSDavid du Colombier };
427dd7cddfSDavid du Colombier 
437dd7cddfSDavid du Colombier /*
447dd7cddfSDavid du Colombier  * Events
457dd7cddfSDavid du Colombier  */
467dd7cddfSDavid du Colombier extern void	 einit(ulong);
477dd7cddfSDavid du Colombier extern ulong	 estart(ulong, int, int);
487dd7cddfSDavid du Colombier extern ulong	 estartfn(ulong, int, int, int (*fn)(int, Event*, uchar*, int));
497dd7cddfSDavid du Colombier extern ulong	 etimer(ulong, int);
507dd7cddfSDavid du Colombier extern ulong	 event(Event*);
517dd7cddfSDavid du Colombier extern ulong	 eread(ulong, Event*);
527dd7cddfSDavid du Colombier extern Mouse	 emouse(void);
537dd7cddfSDavid du Colombier extern int	 ekbd(void);
547dd7cddfSDavid du Colombier extern int	 ecanread(ulong);
557dd7cddfSDavid du Colombier extern int	 ecanmouse(void);
567dd7cddfSDavid du Colombier extern int	 ecankbd(void);
577dd7cddfSDavid du Colombier extern void	 eresized(int);	/* supplied by user */
587dd7cddfSDavid du Colombier extern int	 emenuhit(int, Mouse*, Menu*);
597dd7cddfSDavid du Colombier extern int	eatomouse(Mouse*, char*, int);
607dd7cddfSDavid du Colombier extern Rectangle	getrect(int, Mouse*);
617dd7cddfSDavid du Colombier extern void	 esetcursor(Cursor*);
627dd7cddfSDavid du Colombier extern void	 emoveto(Point);
637dd7cddfSDavid du Colombier extern Rectangle	egetrect(int, Mouse*);
647dd7cddfSDavid du Colombier extern void		edrawgetrect(Rectangle, int);
657dd7cddfSDavid du Colombier extern int		ereadmouse(Mouse*);
667dd7cddfSDavid du Colombier extern int		eatomouse(Mouse*, char*, int);
67