home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
files
/
gnu
/
gemlib27
/
aesevnt.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-07-30
|
6KB
|
248 lines
/*
* Aes event library interface
*
* evnt_keybd Wait for a keyboard event
* evnt_button Wait for a mouse button
* evnt_mouse Wait for a mouse to enter/leave a rectangle
* evnt_mesag Wait for a message from another application
* evnt_timer Wait for a specified amount of time
* evnt_multi Wait for one of many possible events
* evnt_dclick Set or get the present double click speed
*
* ++jrb bammi@cadence.com
* modified: mj -- ntomczak@vm.ucs.ualberta.ca
*/
#include "common.h"
#ifdef __DEF_ALL__
#define L_evnt_key
#define L_evnt_but
#define L_evnt_mou
#define L_evnt_mes
#define L_evnt_tim
#define L_evnt_mul
#define L_evnt_dcl
#endif /* __DEF_ALL__ */
#ifdef L_evnt_key
/* Wait for a keyboard event
* returns kdb code of the key hit
*/
int evnt_keybd(void)
{
return __aes__(AES_CONTROL_ENCODE(20, 0, 1, 0));
}
#endif /* L_evnt_key */
#ifdef L_evnt_but
/* wait for a mouse button state
* Clicks The number of times to wait for a button to enter state
* WhichButton Which of the mouse buttonss (1 for left 2 for right)
* WhichState Which state are we waiting for (0 = down 1 = up)
* Mx, My X,Y coordinate of mouse when event occured
* ButtonState The button state when event occured
* KeyState State of Shift, Ctrl and Alt keys when event occured
*
* returns The number of times the button actually entered
* the desired state.
*/
int evnt_button(int Clicks,
int WhichButton,
int WhichState,
int *Mx, int *My,
int *ButtonState, int *KeyState)
{
int retval;
_int_in[0] = Clicks;
_int_in[1] = WhichButton;
_int_in[2] = WhichState;
retval = __aes__(AES_CONTROL_ENCODE(21, 3, 5, 0));
*Mx = _int_out[1];
*My = _int_out[2];
*ButtonState = _int_out[3];
*KeyState = _int_out[4];
return retval;
}
#endif /* L_evnt_but */
#ifdef L_evnt_mou
/* wait for mouse event
* EnterExit =0 return on entry =1 return on exit
* InX,InY,InW,InH The rectangle to monitor entry/exit out of
* OutX,OutY X,Y coordinate of mouse when event occured
* ButtonState State of mouse buttons when event occured (1=l 2=r but)
* KeyState State of Shift, Ctrl and Alt keys when event occured
*
* always returns a reserved val.
*/
int evnt_mouse(int EnterExit, int InX, int InY, int InW, int InH,
int *OutX, int *OutY,
int *ButtonState,
int *KeyState)
{
int retval;
_int_in[0] = EnterExit;
_int_in[1] = InX;
_int_in[2] = InY;
_int_in[3] = InW;
_int_in[4] = InH;
retval = __aes__(AES_CONTROL_ENCODE(22, 5, 5, 0));
*OutX = _int_out[1];
*OutY = _int_out[2];
*ButtonState = _int_out[3];
*KeyState = _int_out[4];
return retval;
}
#endif /* L_evnt_mou */
#ifdef L_evnt_mes
/* Wait for a 16 byte message from pipe
* returns a reserved value
*/
int evnt_mesag(int MesagBuf[])
{
#ifndef __MSHORT__
#ifdef __GNUC__
volatile
#endif
short dummy[8];
register int i;
register int retval;
_addrin[0] = (void *)&dummy[0]; /* Address of 16 byte message buffer */
retval = __aes__(AES_CONTROL_ENCODE(23, 0, 1, 1));
if(MesagBuf != (int *)0)
for(i = 0; i < 8; i++)
MesagBuf[i] = dummy[i];
return retval;
#else
_addrin[0] = MesagBuf; /* Address of 16 byte message buffer */
return __aes__(AES_CONTROL_ENCODE(23, 0, 1, 1));
#endif
}
#endif /* L_evnt_mes */
#ifdef L_evnt_tim
/* sleep for Interval
* returns a reserved value
*/
int evnt_timer(unsigned long Interval)
{
unsigned short *i = (unsigned short *)&Interval;
_int_in[0] = i[1];
_int_in[1] = i[0];
return __aes__(AES_CONTROL_ENCODE(24, 2, 1, 0));
}
#endif /* L_evnt_tim */
#ifdef L_evnt_mul
/* wait for one of many events
* Type The types of Events to wait for
* rest of the parameters analogus to ones defined above.
*
* returns The event that ended the wait
*
*/
int evnt_multi(int Type,
int Clicks, /* Inputs */
int WhichButton,
int WhichState,
int EnterExit1, int In1X, int In1Y, int In1W, int In1H,
int EnterExit2, int In2X, int In2Y, int In2W, int In2H,
int MesagBuf[],
unsigned long Interval,
int *OutX, int *OutY, /* Outputs */
int *ButtonState,
int *KeyState,
int *Key,
int *ReturnCount)
{
unsigned short *i = (unsigned short *)&Interval;
int retval;
#ifndef __MSHORT__
register int j;
#ifdef __GNUC__
volatile
#endif
short dummy[8];
#endif
_int_in[0] = Type;
_int_in[1] = Clicks;
_int_in[2] = WhichButton;
_int_in[3] = WhichState;
_int_in[4] = EnterExit1;
_int_in[5] = In1X;
_int_in[6] = In1Y;
_int_in[7] = In1W;
_int_in[8] = In1H;
_int_in[9] = EnterExit2;
_int_in[10] = In2X;
_int_in[11] = In2Y;
_int_in[12] = In2W;
_int_in[13] = In2H;
_int_in[14] = i[1];
_int_in[15] = i[0];
#ifdef __MSHORT__
_addrin[0] = MesagBuf;
#else
_addrin[0] = (void *)&dummy[0];
#endif
retval = __aes__(AES_CONTROL_ENCODE(25, 16, 7, 1));
*OutX = _int_out[1];
*OutY = _int_out[2];
*ButtonState = _int_out[3];
*KeyState = _int_out[4];
*Key = _int_out[5];
*ReturnCount = _int_out[6];
#ifndef __MSHORT__
if(MesagBuf != (int *)0)
for(j = 0; j < 8; j++)
MesagBuf[j] = dummy[j];
#endif
return retval;
}
#endif /* L_evnt_mul */
#ifdef L_evnt_dcl
/* Set/get double click speed
* returns current setting
*/
int evnt_dclick(int ToSet, /* Speed to set at [0,4] */
int SetGet) /* 1= set 0=get */
{
_int_in[0] = ToSet;
_int_in[1] = SetGet;
return __aes__(AES_CONTROL_ENCODE(26, 2, 1, 0));
}
#endif /* L_evnt_dcl */
/* - eof - */