ftp.nice.ch/pub/next/developer/languages/c/djgpp-NS.s.tar.gz#/djgpp/go32/eventque.h

This is eventque.h in view mode; [Download] [Up]

/**
 ** EVENTQUE.H
 **
 **  Copyright (C) 1992, Csaba Biegl
 **    820 Stirrup Dr, Nashville, TN, 37221
 **    csaba@vuse.vanderbilt.edu
 **
 **  This file is distributed under the terms listed in the document
 **  "copying.cb", available from the author at the address above.
 **  A copy of "copying.cb" should accompany this file; if not, a copy
 **  should be available from where this file was obtained.  This file
 **  may not be distributed without a verbatim copy of "copying.cb".
 **  You should also have received a copy of the GNU General Public
 **  License along with this program (it is in the file "copying");
 **  if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 **  Cambridge, MA 02139, USA.
 **
 **  This program is distributed in the hope that it will be useful,
 **  but WITHOUT ANY WARRANTY; without even the implied warranty of
 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 **  GNU General Public License for more details.
 **/

#ifndef _EVENTQUE_H_
#define _EVENTQUE_H_

#ifdef __cplusplus
extern "C" {
#endif

/*
 * structures:
 *  BE CAREFUL when hacking!!! -- 16 and 32 bit compilers have to generate
 *  the same alignments
 */
typedef struct {
    unsigned char   evt_type;	    /* event type: 0: keyboard, 1: mouse */
    unsigned char   evt_kbstat;	    /* keyboard status (ALT, SHIFT, etc..) */
    unsigned char   evt_mask;	    /* mouse event mask */
    unsigned char   evt_button;	    /* button status */
    unsigned short  evt_xpos;	    /* X coord (or keycode if keybd event) */
    unsigned short  evt_ypos;	    /* Y coord */
    unsigned long   evt_time;	    /* time stamp of event */
#define evt_keycode   evt_xpos	    /* reuse this slot for keybd events !! */
#define evt_scancode  evt_ypos	    /* store here the BIOS scan code */
} EventRecord;

typedef struct {
    unsigned short  evq_maxsize;    /* max size of event queue */
    unsigned short  evq_cursize;    /* number of events in the queue */
    unsigned short  evq_rdptr;	    /* next event to read */
    unsigned short  evq_wrptr;	    /* next event to be written */
    short	    evq_xpos;	    /* current X coordinate of mouse */
    short	    evq_ypos;	    /* current Y coordinate of mouse */
    short	    evq_xmin;	    /* minimal mouse X coordinate */
    short	    evq_ymin;	    /* minimal mouse Y coordinate */
    short	    evq_xmax;	    /* maximal mouse X coordinate */
    short	    evq_ymax;	    /* maximal mouse Y coordinate */
    short	    evq_xspeed;	    /* horizontal speed (mickey/coord) */
    short	    evq_yspeed;	    /* vertical speed (mickey/coord) */
    unsigned short  evq_thresh;	    /* fast movement threshold */
    unsigned short  evq_accel;	    /* multiplier for fast move */
    unsigned char   evq_drawmouse;  /* interrupt handler has to draw mouse */
    unsigned char   evq_moved;	    /* set if mouse moved */
    unsigned char   evq_delchar;    /* character removed from BIOS buffer */
    unsigned char   evq_enable;	    /* event generation control flag */
    EventRecord	    evq_events[1];  /* event buffer space */
} EventQueue;

/*
 * event types
 */
#define EVENT_KEYBD	0
#define EVENT_MOUSE	1
#define EVENT_RAWKEY	2

/*
 * MOUSE event flag bits
 * (also defined in "mousex.h" of the graphics library)
 */
#ifndef M_MOTION

#define M_MOTION	0x001
#define M_LEFT_DOWN	0x002
#define M_LEFT_UP	0x004
#define M_RIGHT_DOWN	0x008
#define M_RIGHT_UP	0x010
#define M_MIDDLE_DOWN	0x020
#define M_MIDDLE_UP	0x040
#define M_BUTTON_DOWN	(M_LEFT_DOWN | M_MIDDLE_DOWN | M_RIGHT_DOWN)
#define M_BUTTON_UP	(M_LEFT_UP   | M_MIDDLE_UP   | M_RIGHT_UP)
#define M_BUTTON_CHANGE (M_BUTTON_UP | M_BUTTON_DOWN )

/*
 * MOUSE button status bits
 */
#define M_LEFT		1
#define M_RIGHT		2
#define M_MIDDLE	4

#endif  /* M_MOTION */

/*
 * KEYBOARD status word bits
 * (also defined in "mousex.h" of the graphics library)
 */
#ifndef KB_SHIFT

#define KB_RIGHTSHIFT	0x01		/* right shift key depressed */
#define KB_LEFTSHIFT	0x02		/* left shift key depressed */
#define KB_CTRL		0x04		/* CTRL depressed */
#define KB_ALT		0x08		/* ALT depressed */
#define KB_SCROLLOCK	0x10		/* SCROLL LOCK active */
#define KB_NUMLOCK	0x20		/* NUM LOCK active */
#define KB_CAPSLOCK	0x40		/* CAPS LOCK active */
#define KB_INSERT	0x80		/* INSERT state active */

#define KB_SHIFT	(KB_LEFTSHIFT | KB_RIGHTSHIFT)

#define KB_RAW_LEFTCTRL		0x01
#define KB_RAW_LEFTALT		0x02
#define KB_RAW_RIGHTCTRL	0x04
#define KB_RAW_RIGHTALT		0x08
#define KB_RAW_RIGHTSHIFT	0x10
#define KB_RAW_LEFTSHIFT	0x20
#define KB_RAW_CAPSLOCK		0x40
#define KB_RAW_SYSREQ		0x80

#define KB_RAW_SHIFT	(KB_RAW_LEFTSHIFT | KB_RAW_RIGHTSHIFT)
#define KB_RAW_CTRL	(KB_RAW_LEFTCTRL | KB_RAW_RIGHTCTRL)
#define KB_RAW_ALT	(KB_RAW_LEFTALT | KB_RAW_RIGHTALT)

#endif  /* KB_SHIFT */

/*
 * set this bit in 'evq_enable' to generate the corresponding event
 */
#define EVENT_ENABLE(type)	(1 << (type))

/*
 * prototypes
 */
EventQueue *EventQueueInit(int qsize,int ms_stksize,void (*msdraw)(void));
void	    EventQueueDeInit(void);
int	    EventQueueNextEvent(EventQueue *q,EventRecord *e);

#ifdef __cplusplus
}
#endif

#endif /* whole file */


These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.