xf86-input-ws

/etc/X11/xorg.conf から #Section "InputDevice" # Identifier "TouchScreen0" あたりのタッチパネルの定義全部コメントアウトしてwsmouseだけにしたらX動いた。つまりxf86-input-wsがおかしいと

こんなパッチで直りませんかね。多分、最新版がマージされる前はこんな感じになっていた様な。

Index: ws.c
===================================================================
RCS file: /cvsroot/xsrc/external/mit/xf86-input-ws/dist/src/ws.c,v
retrieving revision 1.5
diff -u -r1.5 ws.c
--- ws.c	2 Aug 2011 09:33:33 -0000	1.5
+++ ws.c	16 Sep 2011 16:41:29 -0000
@@ -282,6 +282,7 @@
 		    pInfo->name);
 	}
 
+#ifndef __NetBSD__
 	if (priv->type == WSMOUSE_TYPE_TPANEL && priv->raw) {
 		if (ioctl(pInfo->fd, WSMOUSEIO_GCALIBCOORDS,
 			&priv->coords) != 0) {
@@ -298,12 +299,15 @@
 		priv->min_y = priv->coords.miny;
 		priv->max_y = priv->coords.maxy;
 	} else {
+#endif
 		/* in calibrated mode, coordinate space, is screen coords */
 		priv->min_x = 0;
 		priv->max_x = screenInfo.screens[priv->screen_no]->width - 1;
 		priv->min_y = 0;
 		priv->max_y = screenInfo.screens[priv->screen_no]->height - 1;
+#ifndef __NetBSD__
 	}
+#endif
 	/* Allow options to override this */
 	priv->min_x = xf86SetIntOption(pInfo->options, "MinX", priv->min_x);
 	xf86Msg(X_INFO, "%s minimum x position: %d\n",
@@ -506,6 +510,7 @@
 			return !Success;
 	}
 
+#ifndef __NetBSD__
 	if (priv->type == WSMOUSE_TYPE_TPANEL) {
 		/* get calibration values */
 		if (ioctl(pInfo->fd, WSMOUSEIO_GCALIBCOORDS, &coords) != 0) {
@@ -525,6 +530,7 @@
 			}
 		}
 	}
+#endif
 	priv->buffer = XisbNew(pInfo->fd,
 	    sizeof(struct wscons_event) * NUMEVENTS);
 	if (priv->buffer == NULL) {
@@ -547,6 +553,7 @@
 
 	DBG(1, ErrorF("WS DEVICE OFF\n"));
 	wsmbEmuFinalize(pInfo);
+#ifndef __NetBSD__
 	if (priv->type == WSMOUSE_TYPE_TPANEL) {
 		/* Restore calibration data */
 		memcpy(&coords, &priv->coords, sizeof coords);
@@ -555,6 +562,7 @@
 			    strerror(errno));
 		}
 	}
+#endif
 	if (pInfo->fd >= 0) {
 		xf86RemoveEnabledDevice(pInfo);
 		wsClose(pInfo);