From e4554db8f87c6a39a3087186395972000bd2085c Mon Sep 17 00:00:00 2001 From: Kean Johnson Date: Thu, 10 Nov 2005 02:41:20 +0000 Subject: [PATCH] Dont pass wheel mouse buttons as real buttons, map them as Z-Axis movement on SCO and USL. Re-instate the ZAxisMapping default for the mouse driver. --- hw/xfree86/os-support/sco/sco_mouse.c | 25 ++++++++++--------------- hw/xfree86/os-support/usl/usl_mouse.c | 10 ++-------- hw/xfree86/os-support/usl/usl_xqueue.c | 11 ++++------- 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; - pMse->PostEvent (pInfo, buttons, dx, dy, 0, 0); + buttons &= ~(WHEEL_FWD | WHEEL_BACK); + + 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;