Index: x11/xf86-input-mouse/Makefile
===================================================================
RCS file: /NetBSD/pkgsrc/x11/xf86-input-mouse/Makefile,v
retrieving revision 1.9
diff -u -p x11/xf86-input-mouse/Makefile
--- x11/xf86-input-mouse/Makefile	14 Mar 2009 11:09:37 -0000	1.9
+++ x11/xf86-input-mouse/Makefile	20 May 2009 10:17:22 -0000
@@ -1,7 +1,6 @@
 # $NetBSD: Makefile,v 1.9 2009/03/14 11:09:37 apb Exp $
 
-DISTNAME=	xf86-input-mouse-1.3.0
-PKGREVISION=	2
+DISTNAME=	xf86-input-mouse-1.4.0
 CATEGORIES=	x11
 MASTER_SITES=	${MASTER_SITE_XORG:=driver/}
 EXTRACT_SUFX=	.tar.bz2
Index: x11/xf86-input-mouse/distinfo
===================================================================
RCS file: /NetBSD/pkgsrc/x11/xf86-input-mouse/distinfo,v
retrieving revision 1.7
diff -u -p x11/xf86-input-mouse/distinfo
--- x11/xf86-input-mouse/distinfo	14 Mar 2009 11:09:37 -0000	1.7
+++ x11/xf86-input-mouse/distinfo	20 May 2009 10:17:22 -0000
@@ -1,7 +1,9 @@
 $NetBSD: distinfo,v 1.7 2009/03/14 11:09:37 apb Exp $
 
-SHA1 (xf86-input-mouse-1.3.0.tar.bz2) = 79ecd994b2820d24a00d4c4af9aa9189bdd9db93
-RMD160 (xf86-input-mouse-1.3.0.tar.bz2) = a691e809e61e14e2383f1d4533b0eb454373667f
-Size (xf86-input-mouse-1.3.0.tar.bz2) = 282157 bytes
+SHA1 (xf86-input-mouse-1.4.0.tar.bz2) = d16c09580a0a5deb1675874e914f616548859747
+RMD160 (xf86-input-mouse-1.4.0.tar.bz2) = 17985f0493711a25ffa8fdeae4d741d7f602ca4e
+Size (xf86-input-mouse-1.4.0.tar.bz2) = 292626 bytes
 SHA1 (patch-aa) = baf529a3ae260e98fb068cb9549f749705d8213b
 SHA1 (patch-ab) = 632ec0e3908ccd16678a480b5ffa00dba7db640f
+SHA1 (patch-ac) = d32bbb082c0898e6eb6bf9dadb2af401b1e79312
+SHA1 (patch-ad) = 8301f21624cecdb19b2f705d546b6bd37d105dc3
--- /dev/null	2009-05-20 12:59:56 +0300
+++ x11/xf86-input-mouse/patches/patch-ac	2009-05-19 15:14:54 +0300
@@ -0,0 +1,106 @@
+$NetBSD$
+
+Changes from NetBSD xsrc/external/mit/xorg-server/dist/\
+hw/xfree86/os-support/bsd/bsd_mouse.c
+
+----------------------------
+revision 1.5
+date: 2009/02/09 09:49:39;  author: plunky;  state: Exp;  lines: +16 -0
+add horizontal mouse-wheel functionality to USB and WSMOUSE drivers
+----------------------------
+revision 1.4
+date: 2009/02/02 03:06:37;  author: christos;  state: Exp;  lines: +7 -11
+add a SetupMouse proc to condition the fd. Convert NetBSD's SetupAuto to
+SetupMouse.
+----------------------------
+revision 1.3
+date: 2009/01/19 00:54:29;  author: christos;  state: Exp;  lines: +2 -1
+fix ioctl.
+----------------------------
+revision 1.2
+date: 2009/01/13 18:43:46;  author: christos;  state: Exp;  lines: +25 -0
+Set the mouse event protocol version. (untested, but head will be broken
+unless I add this).
+----------------------------
+
+--- src/bsd_mouse.c.orig	2009-05-19 15:12:28 +0300
++++ src/bsd_mouse.c	2009-05-19 15:13:13 +0300
+@@ -53,12 +53,15 @@
+ 
+ #define HUP_GENERIC_DESKTOP     0x0001
+ #define HUP_BUTTON              0x0009
++#define HUP_CONSUMER            0x000c
+ 
+ #define HUG_X                   0x0030
+ #define HUG_Y                   0x0031
+ #define HUG_Z                   0x0032
+ #define HUG_WHEEL               0x0038
+ 
++#define HUC_AC_PAN              0x0238
++
+ #define HID_USAGE2(p,u) (((p) << 16) | u)
+ 
+ /* The UMS mices have middle button as number 3 */
+@@ -339,6 +342,23 @@ FindDevice(InputInfoPtr pInfo, const cha
+ }
+ #endif
+ 
++#if defined(__NetBSD__)
++static Bool
++SetupMouse(InputInfoPtr pInfo)
++{
++#ifdef WSCONS_SUPPORT
++#ifdef WSMOUSEIO_SETVERSION
++        int version = WSMOUSE_EVENT_VERSION;
++        if (ioctl(pInfo->fd, WSMOUSEIO_SETVERSION, &version) == -1) {
++            xf86Msg(X_WARNING, "%s: cannot set version\n", pInfo->name);
++            return FALSE;
++        }
++#endif
++#endif
++        return TRUE;
++}
++#endif
++
+ #if (defined(__OpenBSD__) || defined(__NetBSD__)) && defined(WSCONS_SUPPORT)
+ 
+ /* Only support wsmouse configuration for now */
+@@ -496,7 +516,7 @@ typedef struct _UsbMseRec {
+     hid_item_t loc_x;		/* x locator item */
+     hid_item_t loc_y;		/* y locator item */
+     hid_item_t loc_z;		/* z (wheel) locator item */
+-    hid_item_t loc_w;		/* z (wheel) locator item */
++    hid_item_t loc_w;		/* w (pan) locator item */
+     hid_item_t loc_btn[MSE_MAXBUTTONS]; /* buttons locator items */
+    unsigned char *buffer;
+ } UsbMseRec, *UsbMsePtr;
+@@ -708,6 +728,9 @@ usbPreInit(InputInfoPtr pInfo, const cha
+     if (hid_locate(reportDesc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_WHEEL),
+ 		   hid_input, &pUsbMse->loc_z, pUsbMse->iid) < 0) {
+     }
++    if (hid_locate(reportDesc, HID_USAGE2(HUP_CONSUMER, HUC_AC_PAN),
++		   hid_input, &pUsbMse->loc_w, pUsbMse->iid) < 0) {
++    }
+ #else
+     if (hid_locate(reportDesc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_X),
+ 		   hid_input, &pUsbMse->loc_x) < 0) {
+@@ -720,6 +743,9 @@ usbPreInit(InputInfoPtr pInfo, const cha
+     if (hid_locate(reportDesc, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_WHEEL),
+ 		   hid_input, &pUsbMse->loc_z) < 0) {
+     }
++    if (hid_locate(reportDesc, HID_USAGE2(HUP_CONSUMER, HUC_AC_PAN),
++		   hid_input, &pUsbMse->loc_w) < 0) {
++    }
+ #endif
+     /* Probe for number of buttons */
+     for (i = 1; i <= MSE_MAXBUTTONS; i++) {
+@@ -790,6 +816,9 @@ xf86OSMouseInit(int flags)
+     p->SetupAuto = SetupAuto;
+     p->SetMiscRes = SetMouseRes;
+ #endif
++#if defined(__NetBSD__)
++    p->SetupMouse = SetupMouse;
++#endif
+ #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__NetBSD__)
+     p->FindDevice = FindDevice;
+ #endif
--- /dev/null	2009-05-20 12:59:56 +0300
+++ x11/xf86-input-mouse/patches/patch-ad	2009-05-19 15:20:33 +0300
@@ -0,0 +1,39 @@
+$NetBSD$
+
+Changes from NetBSD xsrc/external/mit/xorg-server/dist/\
+hw/xfree86/os-support/xf86OSmouse.h
+
+----------------------------
+revision 1.2
+date: 2009/02/02 03:06:37;  author: christos;  state: Exp;  lines: +4 -0
+add a SetupMouse proc to condition the fd. Convert NetBSD's SetupAuto to
+SetupMouse.
+----------------------------
+
+--- ./src/xf86OSmouse.h.orig	2009-05-19 15:15:31 +0300
++++ ./src/xf86OSmouse.h	2009-05-19 15:18:54 +0300
+@@ -82,6 +82,7 @@ typedef Bool (*BuiltinPreInitProc)(Input
+ 				   int flags);
+ typedef const char *(*DefaultProtocolProc)(void);
+ typedef const char *(*SetupAutoProc)(InputInfoPtr pInfo, int *protoPara);
++typedef Bool (*SetupMouseProc)(InputInfoPtr pInfo);
+ typedef void (*SetResProc)(InputInfoPtr pInfo, const char* protocol, int rate,
+ 			   int res);
+ typedef const char *(*FindDeviceProc)(InputInfoPtr pInfo, const char *protocol,
+@@ -99,6 +100,7 @@ typedef struct {
+ 	BuiltinPreInitProc	PreInit;
+ 	DefaultProtocolProc	DefaultProtocol;
+ 	SetupAutoProc		SetupAuto;
++	SetupMouseProc		SetupMouse;
+ 	SetResProc		SetPS2Res;
+ 	SetResProc		SetBMRes;
+ 	SetResProc		SetMiscRes;
+@@ -141,6 +143,8 @@ typedef struct {
+  *
+  * SetBMRes:	Set the resolution and sample rate for MSE_BM protocol types.
+  *
++ * SetupMouse:	Called once after open to condition the file descriptor.
++ *
+  * SetMiscRes:	Set the resolution and sample rate for MSE_MISC protocol types.
+  *
+  * FindDevice:	This function gets called when no Device has been specified
