Index: xf86-input-evtouch-0.8.8.dirty/evtouch.c =================================================================== --- xf86-input-evtouch-0.8.8.orig/evtouch.c 2008-11-11 03:47:55.000000000 -0500 +++ xf86-input-evtouch-0.8.8/evtouch.c 2009-05-10 03:56:22.000000000 -0400 @@ -445,9 +444,15 @@ void EVTouchProcessKey(EVTouchPrivatePtr priv) { struct input_event *ev; /* packet being/just read */ + ev = &priv->ev; DBGOUT(2, "EVTouch: %s\n", __FUNCTION__); - ev = &priv->ev; + + /* for buttonless devices no emulate3 is available, + only go through the SM */ + if (priv->buttonless) + return; + if ( (ev->code == BTN_LEFT) || (ev->code == BTN_RIGHT) || (ev->code == BTN_MIDDLE) ) { @@ -827,7 +827,8 @@ priv->cur_x, priv->cur_y); - if (priv->ev.code == BTN_TOUCH) { + if (priv->ev.code == BTN_TOUCH + || priv->buttonless) { if (priv->ev.value == 1) { priv->touch_flags |= TOUCHED; DBGOUT(2, "EVTouch: TOUCHED\n"); Index: xf86-input-evtouch-0.8.8/libtouch.c =================================================================== --- xf86-input-evtouch-0.8.8.orig/libtouch.c 2008-11-11 04:06:18.000000000 -0500 +++ xf86-input-evtouch-0.8.8/libtouch.c 2009-05-10 04:11:54.000000000 -0400 @@ -465,6 +465,14 @@ static void enter_moving(LibTouchRecPtr priv) { disable_timers(priv); + if (priv->pen == PEN_TOUCHED) { + DBG(4, ErrorF("LibTouch: Issuing Button-press 1\n")); + xf86PostButtonEvent(priv->local->dev, TRUE, + 1, 1, 0, 2, + priv->cur_x, + priv->cur_y); + priv->pressed_btn_stat |= 1 << 1; + } }