4 ** Copyright (C) 1992, Csaba Biegl
5 ** 820 Stirrup Dr, Nashville, TN, 37221
6 ** csaba@vuse.vanderbilt.edu
8 ** This file is distributed under the terms listed in the document
9 ** "copying.cb", available from the author at the address above.
10 ** A copy of "copying.cb" should accompany this file; if not, a copy
11 ** should be available from where this file was obtained. This file
12 ** may not be distributed without a verbatim copy of "copying.cb".
13 ** You should also have received a copy of the GNU General Public
14 ** License along with this program (it is in the file "copying");
15 ** if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
16 ** Cambridge, MA 02139, USA.
18 ** This program is distributed in the hope that it will be useful,
19 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
20 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ** GNU General Public License for more details.
33 * BE CAREFUL when hacking!!! -- 16 and 32 bit compilers have to generate
37 unsigned char evt_type; /* event type: 0: keyboard, 1: mouse */
38 unsigned char evt_kbstat; /* keyboard status (ALT, SHIFT, etc..) */
39 unsigned char evt_mask; /* mouse event mask */
40 unsigned char evt_button; /* button status */
41 unsigned short evt_xpos; /* X coord (or keycode if keybd event) */
42 unsigned short evt_ypos; /* Y coord */
43 unsigned long evt_time; /* time stamp of event */
44 #define evt_keycode evt_xpos /* reuse this slot for keybd events !! */
45 #define evt_scancode evt_ypos /* store here the BIOS scan code */
49 unsigned short evq_maxsize; /* max size of event queue */
50 unsigned short evq_cursize; /* number of events in the queue */
51 unsigned short evq_rdptr; /* next event to read */
52 unsigned short evq_wrptr; /* next event to be written */
53 short evq_xpos; /* current X coordinate of mouse */
54 short evq_ypos; /* current Y coordinate of mouse */
55 short evq_xmin; /* minimal mouse X coordinate */
56 short evq_ymin; /* minimal mouse Y coordinate */
57 short evq_xmax; /* maximal mouse X coordinate */
58 short evq_ymax; /* maximal mouse Y coordinate */
59 short evq_xspeed; /* horizontal speed (mickey/coord) */
60 short evq_yspeed; /* vertical speed (mickey/coord) */
61 unsigned short evq_thresh; /* fast movement threshold */
62 unsigned short evq_accel; /* multiplier for fast move */
63 unsigned char evq_drawmouse; /* interrupt handler has to draw mouse */
64 unsigned char evq_moved; /* set if mouse moved */
65 unsigned char evq_delchar; /* character removed from BIOS buffer */
66 unsigned char evq_enable; /* event generation control flag */
67 EventRecord evq_events[1]; /* event buffer space */
77 * MOUSE event flag bits
78 * (also defined in "mousex.h" of the graphics library)
82 #define M_MOTION 0x001
83 #define M_LEFT_DOWN 0x002
84 #define M_LEFT_UP 0x004
85 #define M_RIGHT_DOWN 0x008
86 #define M_RIGHT_UP 0x010
87 #define M_MIDDLE_DOWN 0x020
88 #define M_MIDDLE_UP 0x040
89 #define M_BUTTON_DOWN (M_LEFT_DOWN | M_MIDDLE_DOWN | M_RIGHT_DOWN)
90 #define M_BUTTON_UP (M_LEFT_UP | M_MIDDLE_UP | M_RIGHT_UP)
91 #define M_BUTTON_CHANGE (M_BUTTON_UP | M_BUTTON_DOWN )
94 * MOUSE button status bits
100 #endif /* M_MOTION */
103 * KEYBOARD status word bits
104 * (also defined in "mousex.h" of the graphics library)
108 #define KB_RIGHTSHIFT 0x01 /* right shift key depressed */
109 #define KB_LEFTSHIFT 0x02 /* left shift key depressed */
110 #define KB_CTRL 0x04 /* CTRL depressed */
111 #define KB_ALT 0x08 /* ALT depressed */
112 #define KB_SCROLLOCK 0x10 /* SCROLL LOCK active */
113 #define KB_NUMLOCK 0x20 /* NUM LOCK active */
114 #define KB_CAPSLOCK 0x40 /* CAPS LOCK active */
115 #define KB_INSERT 0x80 /* INSERT state active */
117 #define KB_SHIFT (KB_LEFTSHIFT | KB_RIGHTSHIFT)
119 #endif /* KB_SHIFT */
122 * set this bit in 'evq_enable' to generate the corresponding event
124 #define EVENT_ENABLE(type) (1 << (type))
129 #if defined(__TURBOC__) && defined(FOR_GO32)
130 EventQueue *EventQueueInit(int qsize,int ms_stksize,void (*msdraw)(void),int,int);
132 EventQueue *EventQueueInit(int qsize,int ms_stksize,void (*msdraw)(void));
135 void EventQueueDeInit(void);
136 int EventQueueNextEvent(EventQueue *q,EventRecord *e);
142 #endif /* whole file */