home *** CD-ROM | disk | FTP | other *** search
- /*
- * 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 - */
-