#include "compiler.h"
#include "xmil.h"
#include "mousemng.h"
typedef struct {
SINT16 x;
SINT16 y;
UINT8 btn;
UINT flag;
} MOUSEMNG;
static MOUSEMNG mousemng;
REG8 mousemng_getstat(SINT16 *x, SINT16 *y, BRESULT clear) {
*x = mousemng.x;
*y = mousemng.y;
if (clear) {
mousemng.x = 0;
mousemng.y = 0;
}
return(mousemng.btn ^ 3);
}
// ----
void mousemng_initialize(void) {
ZeroMemory(&mousemng, sizeof(mousemng));
mousemng.btn = uPD8255A_LEFTBIT | uPD8255A_RIGHTBIT;
mousemng.flag = (1 << MOUSEPROC_SYSTEM);
}
BRESULT mousemng_buttonevent(UINT event) {
if (!mousemng.flag) {
switch(event) {
case MOUSEMNG_LEFTDOWN:
mousemng.btn &= ~(uPD8255A_LEFTBIT);
break;
case MOUSEMNG_LEFTUP:
mousemng.btn |= uPD8255A_LEFTBIT;
break;
case MOUSEMNG_RIGHTDOWN:
mousemng.btn &= ~(uPD8255A_RIGHTBIT);
break;
case MOUSEMNG_RIGHTUP:
mousemng.btn |= uPD8255A_RIGHTBIT;
break;
}
return(TRUE);
}
else {
return(FALSE);
}
}
void mousemng_enable(UINT proc) {
UINT bit;
bit = 1 << proc;
if (mousemng.flag & bit) {
mousemng.flag &= ~bit;
}
}
void mousemng_disable(UINT proc) {
mousemng.flag |= (1 << proc);
}
void mousemng_toggle(UINT proc) {
mousemng.flag ^= (1 << proc);
}
RetroPC.NET-CVS <cvs@retropc.net>