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);