Improved ManyMouse handling.
This commit is contained in:
@@ -452,9 +452,6 @@ unsigned short MouseMoveX[2];
|
|||||||
unsigned short MouseMoveY[2];
|
unsigned short MouseMoveY[2];
|
||||||
unsigned short MouseButton[2];
|
unsigned short MouseButton[2];
|
||||||
|
|
||||||
bool MouseWaiting[2];
|
|
||||||
ManyMouseEvent MouseEvent[2];
|
|
||||||
|
|
||||||
void MultiMouseShutdown()
|
void MultiMouseShutdown()
|
||||||
{
|
{
|
||||||
MouseCount = 0;
|
MouseCount = 0;
|
||||||
@@ -470,7 +467,6 @@ void MultiMouseInit()
|
|||||||
MouseMoveX[0] = MouseMoveX[1] = 0;
|
MouseMoveX[0] = MouseMoveX[1] = 0;
|
||||||
MouseMoveY[0] = MouseMoveY[1] = 0;
|
MouseMoveY[0] = MouseMoveY[1] = 0;
|
||||||
MouseButton[0] = MouseButton[1] = 0;
|
MouseButton[0] = MouseButton[1] = 0;
|
||||||
MouseWaiting[0] = MouseWaiting[1] = false;
|
|
||||||
atexit(MultiMouseShutdown);
|
atexit(MultiMouseShutdown);
|
||||||
|
|
||||||
printf("Using ManyMouse for:\nMouse 0: %s\nMouse 1: %s\n", ManyMouse_DeviceName(0), ManyMouse_DeviceName(1));
|
printf("Using ManyMouse for:\nMouse 0: %s\nMouse 1: %s\n", ManyMouse_DeviceName(0), ManyMouse_DeviceName(1));
|
||||||
@@ -490,53 +486,25 @@ unsigned char mouse;
|
|||||||
void MultiMouseProcess()
|
void MultiMouseProcess()
|
||||||
{
|
{
|
||||||
ManyMouseEvent event;
|
ManyMouseEvent event;
|
||||||
event.device = ~0;
|
|
||||||
|
|
||||||
MouseMoveX[mouse] = 0;
|
MouseMoveX[mouse] = 0;
|
||||||
MouseMoveY[mouse] = 0;
|
MouseMoveY[mouse] = 0;
|
||||||
|
|
||||||
if (MouseWaiting[mouse])
|
while (ManyMouse_PollEvent(&event))
|
||||||
{
|
{
|
||||||
if (MouseEvent[mouse].type == MANYMOUSE_EVENT_RELMOTION)
|
if ((event.device == 0) || (event.device == 1))
|
||||||
{
|
{
|
||||||
if (MouseEvent[mouse].item == 0) { MouseMoveX[mouse] = MouseEvent[mouse].value; }
|
if (event.type == MANYMOUSE_EVENT_RELMOTION)
|
||||||
else { MouseMoveY[mouse] = MouseEvent[mouse].value; }
|
{
|
||||||
|
if (event.item == 0) { MouseMoveX[event.device] = event.value; }
|
||||||
|
else { MouseMoveY[event.device] = event.value; }
|
||||||
|
}
|
||||||
|
else if (event.type == MANYMOUSE_EVENT_BUTTON)
|
||||||
|
{
|
||||||
|
if (event.item == 0) { MOUSE_BUTTON_HANDLE(MouseButton[event.device], 0, event.value); }
|
||||||
|
else if (event.item == 1) { MOUSE_BUTTON_HANDLE(MouseButton[event.device], 1, event.value); }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (MouseEvent[mouse].type == MANYMOUSE_EVENT_BUTTON)
|
|
||||||
{
|
|
||||||
if (MouseEvent[mouse].item == 0) { MOUSE_BUTTON_HANDLE(MouseButton[mouse], 0, MouseEvent[mouse].value); }
|
|
||||||
else if (MouseEvent[mouse].item == 1) { MOUSE_BUTTON_HANDLE(MouseButton[mouse], 1, MouseEvent[mouse].value); }
|
|
||||||
}
|
|
||||||
MouseWaiting[mouse] = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((event.device != 0) && (event.device != 1))
|
|
||||||
{
|
|
||||||
if (!ManyMouse_PollEvent(&event))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event.device == (mouse^1))
|
|
||||||
{
|
|
||||||
MouseEvent[event.device] = event;
|
|
||||||
MouseWaiting[event.device] = true;
|
|
||||||
event.device = ~0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event.type == MANYMOUSE_EVENT_RELMOTION)
|
|
||||||
{
|
|
||||||
if (event.item == 0) { MouseMoveX[mouse] = event.value; }
|
|
||||||
else { MouseMoveY[mouse] = event.value; }
|
|
||||||
}
|
|
||||||
else if (event.type == MANYMOUSE_EVENT_BUTTON)
|
|
||||||
{
|
|
||||||
if (event.item == 0) { MOUSE_BUTTON_HANDLE(MouseButton[mouse], 0, event.value); }
|
|
||||||
else if (event.item == 1) { MOUSE_BUTTON_HANDLE(MouseButton[mouse], 1, event.value); }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user