summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/xfree86/os-support/sco/sco_mouse.c25
-rw-r--r--hw/xfree86/os-support/usl/usl_mouse.c10
-rw-r--r--hw/xfree86/os-support/usl/usl_xqueue.c11
3 files changed, 16 insertions, 30 deletions
diff --git a/hw/xfree86/os-support/sco/sco_mouse.c b/hw/xfree86/os-support/sco/sco_mouse.c
index f29fcd7d9..ea81c947d 100644
--- a/hw/xfree86/os-support/sco/sco_mouse.c
+++ b/hw/xfree86/os-support/sco/sco_mouse.c
@@ -123,14 +123,8 @@ OsMouseProc (DeviceIntPtr pPointer, int what)
}
xf86Msg (from, "%s: Buttons: %d\n", pInfo->name, pMse->buttons);
- map[1] = 1;
- map[2] = 2;
- map[3] = 3;
- map[4] = 7;
- map[5] = 8;
- map[6] = 6;
- map[7] = 4;
- map[8] = 5; /* Compatibile with SCO X server */
+ for (evi = 0; evi <= 8; evi++)
+ map[evi] = evi;
InitPointerDeviceStruct((DevicePtr)pPointer, map, 8,
miPointerGetMotionEvents, pMse->Ctrl,
@@ -185,15 +179,16 @@ OsMouseReadInput (InputInfoPtr pInfo)
while ((evp = ev_read()) != (EVENT *)0) {
int buttons = EV_BUTTONS(*evp);
- int dx = EV_DX(*evp), dy = -(EV_DY(*evp));
+ int dx = EV_DX(*evp), dy = -(EV_DY(*evp)), dz = 0;
- if (EV_TAG(*evp) & T_WHEEL) {
- pMse->PostEvent (pInfo, buttons, 0, 0, 0, 0);
- /* Simulate button release */
- buttons &= ~(WHEEL_FWD | WHEEL_BACK);
- }
+ if (buttons & WHEEL_FWD)
+ dz = -1;
+ else if (buttons & WHEEL_BACK)
+ dz = 1;
+
+ buttons &= ~(WHEEL_FWD | WHEEL_BACK);
- pMse->PostEvent (pInfo, buttons, dx, dy, 0, 0);
+ pMse->PostEvent (pInfo, buttons, dx, dy, dz, 0);
ev_pop();
}
}
diff --git a/hw/xfree86/os-support/usl/usl_mouse.c b/hw/xfree86/os-support/usl/usl_mouse.c
index 68e4e9028..22d3626b4 100644
--- a/hw/xfree86/os-support/usl/usl_mouse.c
+++ b/hw/xfree86/os-support/usl/usl_mouse.c
@@ -86,14 +86,8 @@ OsMouseProc(DeviceIntPtr pPointer, int what)
case DEVICE_INIT:
pPointer->public.on = FALSE;
- map[1] = 1;
- map[2] = 2;
- map[3] = 3;
- map[4] = 7;
- map[5] = 8;
- map[6] = 6;
- map[7] = 4;
- map[8] = 5;
+ for (ret = 0; ret <= 8; ret++)
+ map[ret] = ret;
InitPointerDeviceStruct((DevicePtr)pPointer, map, 8,
miPointerGetMotionEvents, pMse->Ctrl,
diff --git a/hw/xfree86/os-support/usl/usl_xqueue.c b/hw/xfree86/os-support/usl/usl_xqueue.c
index ccdbe8da4..c00d37489 100644
--- a/hw/xfree86/os-support/usl/usl_xqueue.c
+++ b/hw/xfree86/os-support/usl/usl_xqueue.c
@@ -287,15 +287,12 @@ XqSignalHandler (int signo)
case XQ_WHEEL:
if (pMse) {
- int wbut = pMse->lastButtons;
+ int wbut = pMse->lastButtons, dz;
if (xqEvents[xqHead].xq_code == 1)
- wbut |= 0x80;
+ dz = 1;
else
- wbut |= 0x40;
- pMse->PostEvent(xqMouse, wbut, 0, 0, 0, 0);
- /* Simulate button release */
- wbut &= ~0xc0;
- pMse->PostEvent(xqMouse, wbut, 0, 0, 0, 0);
+ dz = -1;
+ pMse->PostEvent(xqMouse, wbut, 0, 0, dz, 0);
}
break;