blob: 09cb5c78c01438250ccaf83d984d785809006368 [file] [log] [blame]
rscf7012582003-11-25 01:40:27 +00001#ifndef _EVENT_H_
2#define _EVENT_H_ 1
3#if defined(__cplusplus)
4extern "C" {
5#endif
6
rscb2cfc4e2003-09-30 17:47:41 +00007typedef struct Event Event;
8typedef struct Menu Menu;
9
10enum
11{
12 Emouse = 1,
rsccbeb0b22006-04-01 19:24:03 +000013 Ekeyboard = 2
rscb2cfc4e2003-09-30 17:47:41 +000014};
15
16enum
17{
18 MAXSLAVE = 32,
rsccbeb0b22006-04-01 19:24:03 +000019 EMAXMSG = 128+8192 /* size of 9p header+data */
rscb2cfc4e2003-09-30 17:47:41 +000020};
21
22struct Mouse
23{
24 int buttons; /* bit array: LMR=124 */
25 Point xy;
26 ulong msec;
27};
28
29struct 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
38struct Menu
39{
40 char **item;
41 char *(*gen)(int);
42 int lasthit;
43};
44
45/*
46 * Events
47 */
48extern void einit(ulong);
49extern ulong estart(ulong, int, int);
50extern ulong estartfn(ulong, int, int, int (*fn)(int, Event*, uchar*, int));
51extern ulong etimer(ulong, int);
52extern ulong event(Event*);
53extern ulong eread(ulong, Event*);
54extern Mouse emouse(void);
55extern int ekbd(void);
56extern int ecanread(ulong);
57extern int ecanmouse(void);
58extern int ecankbd(void);
59extern void eresized(int); /* supplied by user */
60extern int emenuhit(int, Mouse*, Menu*);
61extern int eatomouse(Mouse*, char*, int);
62extern Rectangle getrect(int, Mouse*);
63struct Cursor;
64extern void esetcursor(struct Cursor*);
65extern void emoveto(Point);
66extern Rectangle egetrect(int, Mouse*);
67extern void edrawgetrect(Rectangle, int);
68extern int ereadmouse(Mouse*);
69extern int eatomouse(Mouse*, char*, int);
rscf7012582003-11-25 01:40:27 +000070
71#if defined(__cplusplus)
72}
73#endif
74#endif