69-touchscreen.rules | 3 ChangeLog | 13 Makefile.in | 240 aclocal.m4 | 9137 ++++++---- calibrate.sh | 67 config.guess | 60 config.h.in | 4 config.sub | 66 configure |15856 ++++-------------- configure.ac | 2 debian/changelog | 6 debian/control | 2 debian/patches/01_fix_warnings.patch | 30 debian/patches/02-buttonless-device.patch | 86 debian/patches/04_include_xf86_ansic_h.patch | 23 debian/patches/05_build_with_1_4.patch | 22 debian/patches/06_xf86-input-evtouch-0.8.7-misc.patch | 770 debian/patches/07_random_fixes_for_06.patch | 523 debian/patches/series | 7 debian/xsfbs/xsfbs-autoreconf.mk | 150 debian/xsfbs/xsfbs.mk | 51 debian/xsfbs/xsfbs.sh | 387 ev_calibrate.c | 17 evtouch.c | 118 evtouch.h | 3 install-sh | 514 libtouch.c | 4 ltmain.sh | 7911 +++++--- make_distrib.sh | 2 29 files changed, 15050 insertions(+), 21024 deletions(-)
New commits: commit e77ff9390f8965489e7628b5fb832b1b37372293 Author: Mattia Dongili <[email protected]> Date: Wed Jan 21 21:27:03 2009 +0900 Clean up some gcc warning about unused stuff Signed-off-by: Mattia Dongili <[email protected]> diff --git a/debian/patches/01_fix_warnings.patch b/debian/patches/01_fix_warnings.patch new file mode 100644 index 0000000..a97b5d6 --- /dev/null +++ b/debian/patches/01_fix_warnings.patch @@ -0,0 +1,30 @@ +Index: xserver-xorg-input-evtouch/evtouch.c +=================================================================== +--- xserver-xorg-input-evtouch.orig/evtouch.c 2009-01-21 20:06:50.647249439 +0900 ++++ xserver-xorg-input-evtouch/evtouch.c 2009-01-21 20:07:39.518253785 +0900 +@@ -352,7 +352,6 @@ void EVTouchProcessAbs(EVTouchPrivatePtr + void EVTouchProcessRel(EVTouchPrivatePtr priv) + { + struct input_event *ev; /* packet being/just read */ +- int dummy; + + ev = &priv->ev; + if ( ev->code == REL_X ) { +@@ -745,17 +744,6 @@ EVTouchNewPacket (EVTouchPrivatePtr priv + + + +-static unsigned char +-EVTouchRead(EVTouchPrivatePtr priv) +-{ +- unsigned char c; +- XisbBlockDuration (priv->buffer, EV_TIMEOUT); +- c = XisbRead(priv->buffer); +- return (c); +-} +- +- +- + static Bool + EVTouchGetPacket (EVTouchPrivatePtr priv) + { diff --git a/debian/patches/series b/debian/patches/series index e69de29..3a0786b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -0,0 +1 @@ +01_fix_warnings.patch commit 511b452ec29e1ab9865d89a2dba6103a604e1243 Author: Mattia Dongili <[email protected]> Date: Mon Jan 19 21:13:08 2009 +0900 Remove unused patches from the series file The patches have either been applied upstream or reworked implementing similar functionality Signed-off-by: Mattia Dongili <[email protected]> diff --git a/debian/patches/02-buttonless-device.patch b/debian/patches/02-buttonless-device.patch deleted file mode 100644 index 161d4ae..0000000 --- a/debian/patches/02-buttonless-device.patch +++ /dev/null @@ -1,86 +0,0 @@ -Index: xf86-input-evtouch-0.8.3.dirty/evtouch.c -=================================================================== ---- xf86-input-evtouch-0.8.3.dirty.orig/evtouch.c 2007-02-19 18:28:41.749371445 +0100 -+++ xf86-input-evtouch-0.8.3.dirty/evtouch.c 2007-02-19 20:14:50.612312260 +0100 -@@ -364,9 +364,15 @@ void EVTouchLBRBEvent(EVTouchPrivatePtr - 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) ) { -@@ -688,6 +694,8 @@ static void ReadInput (LocalDevicePtr lo - while (EVTouchGetPacket (priv) == Success) - { - ev = &priv->ev; -+ DBGOUT(2, "EVTouch: %s type:%0.2x code: 0x%0.4x value:%d\n", -+ __FUNCTION__, ev->type, ev->code, ev->value); - - xf86XInputSetScreen(local, - priv->screen_num, -@@ -708,7 +716,8 @@ static void ReadInput (LocalDevicePtr lo - EVTouchProcessRel(priv); - break; - case EV_KEY: -- 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.3.dirty/libtouch.c -=================================================================== ---- xf86-input-evtouch-0.8.3.dirty.orig/libtouch.c 2007-02-19 18:28:41.749371445 +0100 -+++ xf86-input-evtouch-0.8.3.dirty/libtouch.c 2007-02-19 20:02:36.070453105 +0100 -@@ -320,6 +320,14 @@ static int handle_touched(LibTouchRecPtr - 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; -+ } - } - - -@@ -336,13 +344,13 @@ static void enter_longtouched(LibTouchRe - { - disable_timers(priv); - /* FIXME: Make Longtouch-Event configurable*/ -- /* for now issue an LB down */ -- DBG(4, ErrorF("LibTouch: Issuing Button-press 1\n")); -+ /* for now issue an RB down */ -+ DBG(4, ErrorF("LibTouch: Issuing Button-press 3\n")); - xf86PostButtonEvent(priv->local->dev, TRUE, -- 1, 1, 0, 2, -+ 3, 1, 0, 2, - priv->cur_x, - priv->cur_y); -- priv->pressed_btn_stat |= 1 << 1; -+ priv->pressed_btn_stat |= 1 << 3; - } - - -@@ -515,7 +523,7 @@ static int handle_oneandahalftap(LibTouc - - /* FIXME: Make OneAndHalf-Event configurable */ - /* for now RB down */ -- DBG(4, ErrorF("LibTouch: Issuing Button-press 1\n")); -+ DBG(4, ErrorF("LibTouch: Issuing Button-press 3\n")); - xf86PostButtonEvent (priv->local->dev, TRUE, - 3, 1, 0, 2, - priv->cur_x, diff --git a/debian/patches/04_include_xf86_ansic_h.patch b/debian/patches/04_include_xf86_ansic_h.patch deleted file mode 100644 index 009ff7e..0000000 --- a/debian/patches/04_include_xf86_ansic_h.patch +++ /dev/null @@ -1,23 +0,0 @@ -Index: xserver-xorg-input-evtouch/libtouch.c -=================================================================== ---- xserver-xorg-input-evtouch.orig/libtouch.c 2007-09-11 23:00:20.762131559 +0900 -+++ xserver-xorg-input-evtouch/libtouch.c 2007-09-11 23:00:43.263413833 +0900 -@@ -34,7 +34,6 @@ - #ifndef NEED_XF86_TYPES - #define NEED_XF86_TYPES - #endif --#include <xf86_ansic.h> - #include <xf86_OSproc.h> - #include <xf86Xinput.h> - #include <exevents.h> -Index: xserver-xorg-input-evtouch/libtouch.h -=================================================================== ---- xserver-xorg-input-evtouch.orig/libtouch.h 2007-09-11 23:00:20.762131559 +0900 -+++ xserver-xorg-input-evtouch/libtouch.h 2007-09-11 23:00:51.263869754 +0900 -@@ -1,5 +1,6 @@ - #ifndef _libtouch_H_ - #define _libtouch_H_ -+#include <xf86_ansic.h> - #include <os.h> - - #define TOUCHED 0x01 diff --git a/debian/patches/05_build_with_1_4.patch b/debian/patches/05_build_with_1_4.patch deleted file mode 100644 index 3a60d4f..0000000 --- a/debian/patches/05_build_with_1_4.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: xserver-xorg-input-evtouch/evtouch.c -=================================================================== ---- xserver-xorg-input-evtouch.orig/evtouch.c 2007-09-17 17:20:21.736761738 +0900 -+++ xserver-xorg-input-evtouch/evtouch.c 2007-09-17 17:31:22.274403633 +0900 -@@ -492,9 +492,6 @@ DeviceOn (DeviceIntPtr dev) - - priv->buffer = XisbNew(local->fd, 64); - -- DBG (9, XisbTrace (priv->buffer, 1)); -- -- - if (!priv->buffer) - { - xf86CloseSerial(local->fd); -@@ -1207,7 +1204,6 @@ EVTouchPreInit(InputDriverPtr drv, IDevP - priv->diff[i][0], priv->diff[i][1]); - } - -- xf86AlwaysCore(local, TRUE); - priv->touch_flags = 0; - - local->history_size = xf86SetIntOption( local->options, "HistorySize", 0 ); diff --git a/debian/patches/06_xf86-input-evtouch-0.8.7-misc.patch b/debian/patches/06_xf86-input-evtouch-0.8.7-misc.patch deleted file mode 100644 index db90f82..0000000 --- a/debian/patches/06_xf86-input-evtouch-0.8.7-misc.patch +++ /dev/null @@ -1,770 +0,0 @@ -# -# This patch is from http://www.postnuklear.de/xorg-patches/ -# -# Description: This is a patch for the evtouch input driver ( -# http://stz-softwaretechnik.com/~ke/touchscreen/evtouch.html). -# Changes (for full description see ChangeLog file after patching (-: ): -# o Changed code to compile a working driver for both XInput ABI 0.x and 2.0 (Xorg 1.4.0) -# o changed rotation (due to segfault on xorg + fbdev) -# o drag support -# o tap "tolerance" -# o added generic ts-adc touchscreen device to udev rules file -# -# Feel free to send comments, critics, suggestions to [email protected] -# To apply simply change into the toplevel directory of the source to be modified and enter: -# patch -p1 < <PATH_TO_PATCH> -# -# All patches are available under the GNU GPL, I hope they might be useful for you (-: -# - Harald Radke -# -Index: xserver-xorg-input-evtouch/69-touchscreen.rules -=================================================================== ---- xserver-xorg-input-evtouch.orig/69-touchscreen.rules 2008-02-02 21:49:20.783972805 +0900 -+++ xserver-xorg-input-evtouch/69-touchscreen.rules 2008-02-02 21:49:39.730979724 +0900 -@@ -7,8 +7,11 @@ - # Name can be found in /proc/bus/input/devices ('cat /proc/bus/input/devices') - # - --# These are the touchscreens supported by kernel's "usbtouchscreen" module -+# Generic ts-adc touchscreen modules -+KERNEL=="event*", SUBSYSTEM=="input", ATTRS{name}=="ts-adc", SYMLINK+="input/evtouch_event" -+ - -+# These are the touchscreens supported by kernel's "usbtouchscreen" module - # eGalax Inc. USB TouchController) - KERNEL=="event*", SUBSYSTEM=="input", ATTRS{idVendor}=="3823", ATTRS{idProduct}=="0001", SYMLINK+="input/evtouch_event" - # eGalax Inc. USB TouchController) -Index: xserver-xorg-input-evtouch/ChangeLog -=================================================================== ---- xserver-xorg-input-evtouch.orig/ChangeLog 2008-02-02 21:49:20.795972782 +0900 -+++ xserver-xorg-input-evtouch/ChangeLog 2008-02-02 21:49:39.730979724 +0900 -@@ -1,3 +1,61 @@ -+0.8.7-HR *** Note this is not an official release but an "unauthorized -+ *** fix version by me (Harald Radke - [email protected]) -+ -> Changed code to compile a working driver for both -+ XInput ABI 0.x and 2.0 (Xorg 1.4.0) -+ (test compile for 0.x still needs to be done) -+ - evtouch.c: -+ * capsulated xf86Post*Events and xf86InputSetScreen -+ in functions where depending on the XINPUT ABI conversion -+ is done or xf86 functions are directly called -+ * xf86InitValuatorAxisStruct and xf86AlwaysCore() depending -+ on ABI done -+ - libtouch.h: passing xf86PostButtonEvent capsulation function -+ to init function (same as in evtouch.c) to do proper button -+ triggering -+ -> Rotation: -+ - added support for Option "Rotate" "UD" (upside down) -+ in evtouch input section of xorg.conf -+ - due to Segfault with (at least) fbdev video device, only -+ evtouch "Rotate" option is taken into calculations for coords, -+ meaning to get proper touchscreen behaviour on rotated X screens. -+ same Rotate option as in video device section of xorg.conf has -+ to be set in the evtouch section -+ -> Drag support: -+ Option "<STATE>_drag" "<BUTTON_ID>" has been added. When set, -+ the handle_<STATE>() function triggers BUTTON_DOWN for Button <BUTTON_ID> -+ before changing into S_MOVE state. Note that actually only -+ Option "touched_drag" "<BUTTON_ID>" is implemented, rest is dummy -+ (and doesn't make too much sense I guess) (-; -+ -> tap "tolerance": -+ introduce move_limit to evtouch.c as it is in libtouch.c, using it -+ to discard ABS_X/Y position changes if they are inside move_limit -+ around cur_x/y. this way pointer hopping can be avoided as well as -+ proper touched_drag established -+ - changes of cur_x/y are reported on EV_SYN in evtouch.c ReadInput() instead -+ on EV_ABS -+ -> added generic ts-adc touchscreen device to udev rules file -+ -+ => Example for a Loox720 PDA setup in input section of xorg.conf: -+ Section "InputDevice" -+ Identifier "touchscreen" -+ Driver "evtouch" -+ Option "Device" "/dev/input/evtouch_event" -+ Option "MinX" "434" -+ Option "MinY" "333" -+ Option "MaxX" "3643" -+ Option "MaxY" "3804" -+ Option "SwapX" "true" -+ Option "longtouched_action" "down" -+ Option "longtouched_button" "3" -+ Option "maybetapped_action" "click" -+ Option "maybetapped_button" "1" -+ Option "touched_drag" "1" -+ Option "oneandahalftap_button" "0" -+ Option "TapTimer" "30" -+ Option "LongtouchTimer" "500" -+ Option "MoveLimit" "18" -+ EndSection -+ - 0.8.7 - - Added Elo Touchscreen to udev-rules (Stephen Webb) - - Added "fix" for AMD64-crashes on touch (Martin Letenay) -Index: xserver-xorg-input-evtouch/evtouch.c -=================================================================== ---- xserver-xorg-input-evtouch.orig/evtouch.c 2008-02-02 21:49:20.811973497 +0900 -+++ xserver-xorg-input-evtouch/evtouch.c 2008-02-02 21:49:39.734971242 +0900 -@@ -182,6 +182,20 @@ static const char *default_options[] = - static int - ControlProc(LocalDevicePtr device, xDeviceCtl *ctrl); - -+static void -+PostMotionEvent(LocalDevicePtr local); -+ -+static void -+PostProximityEvent(LocalDevicePtr local,int is_in); -+ -+static void -+PostButtonEvent(LocalDevicePtr local, int button, -+ int is_down, int x,int y); -+ -+static void -+InputSetScreen(LocalDevicePtr local); -+ -+ - /***************************************************************************** - * Function Definitions - ****************************************************************************/ -@@ -197,11 +211,10 @@ emulate3Timer(OsTimerPtr timer, CARD32 n - LocalDevicePtr local = (LocalDevicePtr)_local; - EVTouchPrivatePtr priv = (EVTouchPrivatePtr) local->private; - -+ - sigstate = xf86BlockSIGIO(); - -- xf86PostMotionEvent(local->dev, TRUE, 0, 2, -- priv->cur_x, -- priv->cur_y); -+ PostMotionEvent(local); - - /* - * Emit a button press -- release is handled in EVTouchLBRBEvent -@@ -209,31 +222,21 @@ emulate3Timer(OsTimerPtr timer, CARD32 n - if ( ( priv->touch_flags & LB_STAT ) && - !( priv->touch_flags & RB_STAT ) ) { - DBGOUT(2, "EVTouch: Left Press\n"); -- xf86PostButtonEvent (local->dev, TRUE, -- 1, 1, 0, 2, -- priv->cur_x, -- priv->cur_y); -+ PostButtonEvent (local, 1, 1,priv->cur_x,priv->cur_y); - } - - if ( ( priv->touch_flags & RB_STAT ) && - !( priv->touch_flags & LB_STAT ) ) { - DBGOUT(2, "EVTouch: Right Press\n"); -- xf86PostButtonEvent (local->dev, TRUE, -- 3, 1, 0, 2, -- priv->cur_x, -- priv->cur_y); -- } -- -+ PostButtonEvent (local, 3, 1,priv->cur_x,priv->cur_y); -+ } - /* - Handling "middle" button press - */ - if ( ( priv->touch_flags & RB_STAT ) && - ( priv->touch_flags & LB_STAT ) ) { - DBGOUT(2, "EVTouch: Middle Press\n"); -- xf86PostButtonEvent (local->dev, TRUE, -- 2, 1, 0, 2, -- priv->cur_x, -- priv->cur_y); -+ PostButtonEvent (local, 2, 1,priv->cur_x,priv->cur_y); - } - - priv->emulate3_timer_expired = TRUE; -@@ -246,6 +249,7 @@ static void DoBtnAction(EVTouchPrivatePt - { - int btn = 0; - LocalDevicePtr local = priv->local; -+ - DBGOUT(2, "EVTouch: %s btn_count=%d\n", __FUNCTION__, priv->btn_count); - - for (btn = 0; btn < priv->btn_count; btn++) { -@@ -262,12 +266,7 @@ static void DoBtnAction(EVTouchPrivatePt - DBGOUT(2, "EVTouch: %s btn = %d action = %d\n", - __FUNCTION__, btn, - priv->btn_actions[btn].action); -- -- xf86PostButtonEvent (local->dev, TRUE, btn, -- priv->btn_actions[btn].action, -- 0, 2, -- priv->cur_x, -- priv->cur_y); -+ PostButtonEvent (local, btn, priv->btn_actions[btn].action,priv->cur_x,priv->cur_y); - - priv->btn_actions[btn].do_it = 0; - priv->btn_actions[btn].action = 0; -@@ -292,39 +291,32 @@ void EVTouchProcessAbs(EVTouchPrivatePtr - ev = &priv->ev; - - if ( (ev->code == ABS_X) || (ev->code == ABS_Z) ) { -+ if ((priv->cur_x - ev->value < priv->move_limit) -+ && (priv->cur_x - ev->value > -priv->move_limit)) -+ return; - priv->cur_x = ev->value; -- libtouchSetXPos(priv->libtouch, priv->cur_x); -+// libtouchSetXPos(priv->libtouch, priv->cur_x); - } - - if ( (ev->code == ABS_Y) || (ev->code == ABS_RX) ) { -+ if ((priv->cur_y - ev->value < priv->move_limit) -+ && (priv->cur_y - ev->value > -priv->move_limit)) -+ return; - priv->cur_y = ev->value; -- libtouchSetYPos(priv->libtouch, priv->cur_y); -+// libtouchSetYPos(priv->libtouch, priv->cur_y); - } - - if (ev->code == ABS_WHEEL) { - LocalDevicePtr local = priv->local; -- - if (ev->value > 0) { - for (; ev->value > 0; ev->value--) { -- xf86PostButtonEvent (local->dev, TRUE, -- 4, 1, 0, 2, -- priv->cur_x, -- priv->cur_y); -- xf86PostButtonEvent (local->dev, TRUE, -- 4, 0, 0, 2, -- priv->cur_x, -- priv->cur_y); -+ PostButtonEvent (local, 4,1,priv->cur_x,priv->cur_y); -+ PostButtonEvent (local, 4,0,priv->cur_x,priv->cur_y); - } - } else if (ev->value < 0) { - for (ev->value = -ev->value; ev->value > 0; ev->value--) { -- xf86PostButtonEvent (local->dev, TRUE, -- 5, 1, 0, 2, -- priv->cur_x, -- priv->cur_y); -- xf86PostButtonEvent (local->dev, TRUE, -- 5, 0, 0, 2, -- priv->cur_x, -- priv->cur_y); -+ PostButtonEvent (local, 5,1,priv->cur_x,priv->cur_y); -+ PostButtonEvent (local, 5,0,priv->cur_x,priv->cur_y); - } - } - } -@@ -451,10 +443,7 @@ void EVTouchProcessKey(EVTouchPrivatePtr - default: - return; - } -- xf86PostButtonEvent(local->dev, TRUE, -- btn, ev->value, 0, 2, -- priv->cur_x, -- priv->cur_y); -+ PostButtonEvent (local, btn, ev->value,priv->cur_x,priv->cur_y); - #endif - - return; -@@ -492,8 +481,8 @@ DeviceOn (DeviceIntPtr dev) - - priv->buffer = XisbNew(local->fd, 64); - -- DBG (9, XisbTrace (priv->buffer, 1)); -- -+// breaks compilation -+// DBG (9, XisbTrace (priv->buffer, 1)); - - if (!priv->buffer) - { -@@ -637,8 +626,19 @@ DeviceInit (DeviceIntPtr dev) - ErrorF ("Unable to allocate EVTouch touchscreen ValuatorClassDeviceStruct\n"); - return !Success; - } -- -- xf86InitValuatorAxisStruct(dev, 0, priv->min_x, priv->max_x, -+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2 -+ xf86InitValuatorAxisStruct(dev, 0, 0, priv->screen_width, -+ 1024, -+ EV_AXIS_MIN_RES /* min_res */ , -+ EV_AXIS_MAX_RES /* max_res */ ); -+ xf86InitValuatorDefaults(dev, 0); -+ xf86InitValuatorAxisStruct(dev, 1, 0, priv->screen_height, -+ 1024, -+ EV_AXIS_MIN_RES /* min_res */ , -+ EV_AXIS_MAX_RES /* max_res */ ); -+ xf86InitValuatorDefaults(dev, 1); -+#else -+ xf86InitValuatorAxisStruct(dev, 0, priv->min_x, priv->max_x, - 1024, - EV_AXIS_MIN_RES /* min_res */ , - EV_AXIS_MAX_RES /* max_res */ ); -@@ -648,7 +648,7 @@ DeviceInit (DeviceIntPtr dev) - EV_AXIS_MIN_RES /* min_res */ , - EV_AXIS_MAX_RES /* max_res */ ); - xf86InitValuatorDefaults(dev, 1); -- -+#endif - /* Initial position of pointer on screen: Centered */ - priv->cur_x=(priv->max_x - priv->min_x)/2; - priv->cur_y=(priv->max_y - priv->min_y)/2; -@@ -777,14 +777,8 @@ static void ReadInput (LocalDevicePtr lo - DBGOUT(2, "EVTouch: %s type:%0.2x code: 0x%0.4x value:%d\n", - __FUNCTION__, ev->type, ev->code, ev->value); - -- xf86XInputSetScreen(local, -- priv->screen_num, -- priv->cur_x, -- priv->cur_y); -- -- xf86PostProximityEvent(local->dev, 1, 0, 2, -- priv->cur_x, -- priv->cur_y); -+ InputSetScreen(local); -+ PostProximityEvent (local,1); - - switch (ev->type) { - case EV_ABS: -@@ -794,9 +788,7 @@ static void ReadInput (LocalDevicePtr lo - EVTouchProcessRel(priv); - break; - case EV_KEY: -- xf86PostMotionEvent (local->dev, TRUE, 0, 2, -- priv->cur_x, -- priv->cur_y); -+ PostMotionEvent (local); - - if (priv->ev.code == BTN_TOUCH) { - if (priv->ev.value == 1) { -@@ -811,9 +803,8 @@ static void ReadInput (LocalDevicePtr lo - EVTouchProcessKey(priv); - break; - case EV_SYN: -- xf86PostMotionEvent (local->dev, TRUE, 0, 2, -- priv->cur_x, -- priv->cur_y); -+ libtouchSetPos(priv->libtouch, priv->cur_x,priv->cur_y); -+ PostMotionEvent (local); - - if ( priv->touch_flags & TOUCHED ) - libtouchTriggerSM(priv->libtouch, PEN_TOUCHED); -@@ -902,7 +893,9 @@ ConvertProc ( LocalDevicePtr local, - - EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private); - ScrnInfoPtr pScrn = xf86Screens[priv->screen_num]; -- Rotation rotation = RRGetRotation(pScrn->pScreen); -+ -+// X Segfaults -+// Rotation rotation = RRGetRotation(pScrn->pScreen); - - DBGOUT(2, "EVTouch: FIRST: v0=%d v1=%d\n", v0, v1); - -@@ -921,15 +914,17 @@ ConvertProc ( LocalDevicePtr local, - max_x = priv->max_x - priv->min_x; - max_y = priv->max_y - priv->min_y; - -- if (priv->rotate == EV_ROTATE_NONE) { -+ -+// if (priv->rotate == EV_ROTATE_NONE) { - screen_width = pScrn->currentMode->HDisplay; - screen_height = pScrn->currentMode->VDisplay; -+/* Swapping is done below in Coords! Leave those to be able to calc correct mapping - } else { - screen_width = pScrn->currentMode->VDisplay; - screen_height = pScrn->currentMode->HDisplay; - } - -- -+*/ - if (xc < (max_x / 2)) { - /* - left -@@ -1042,45 +1037,57 @@ ConvertProc ( LocalDevicePtr local, - - int tmp = 0; - /* rotation mixes x and y up a bit */ -- if (priv->rotate == EV_ROTATE_CW) { -+ switch(priv->rotate) { -+ case EV_ROTATE_CW: - tmp = xc; - xc = yc; - yc = screen_width - tmp; -- } else if (priv->rotate == EV_ROTATE_CCW) { -+ break; -+ case EV_ROTATE_CCW: - tmp = xc; - xc = screen_height - yc; - yc = tmp; -+ break; -+ case EV_ROTATE_UD: -+ xc = screen_width - xc; -+ yc = screen_height - yc; -+ break; -+ default: -+ break; - } - -- switch (rotation) { -- case RR_Rotate_0: -+/* X Segfaults on rotation setting -+ switch (rotation) { -+ case RR_Rotate_0: - v0 = xc; - v1 = yc; -- break; -- case RR_Rotate_180: -- v0 = screen_width - xc; -- v1 = screen_height - yc; -- break; -- case RR_Rotate_90: -+ break; -+ case RR_Rotate_180: -+ v0 = screen_width - xc; -+ v1 = screen_height - yc; -+ break; -+ case RR_Rotate_90: - tmp = xc; -- v0 = screen_height - yc; -+ v0 = screen_height - yc; - v1 = tmp; -- break; -- case RR_Rotate_270: -+ break; -+ case RR_Rotate_270: - tmp = xc; -- v0 = yc; -- v1 = screen_width - tmp; -- break; -- default: -- break; -- } -+ v0 = yc; -+ v1 = screen_width - tmp; -+ break; -+ default: -+ break; -+ } -+ -+ -+*/ - } - - DBGOUT(2, "EVTouch: FINAL: v0=%d v1=%d\n", v0, v1); - -- *x = v0; -- *y = v1; -- -+ *x = xc; -+ *y = yc; - return (TRUE); - } - -@@ -1133,8 +1140,9 @@ EVTouchPreInit(InputDriverPtr drv, IDevP - - xf86OptionListReport(local->options); - -+ - priv->libtouch = xcalloc(1, sizeof(LibTouchRec)); -- libtouchInit(priv->libtouch, local); -+ libtouchInit(priv->libtouch, local,PostButtonEvent); - - priv->screen_num = xf86SetIntOption(local->options, "ScreenNumber", 0 ); - -@@ -1164,9 +1172,9 @@ EVTouchPreInit(InputDriverPtr drv, IDevP - timeo = xf86SetIntOption(local->options, "LongtouchTimer", 160); - libtouchSetLongtouchTimeo(priv->libtouch, timeo); - -- libtouchSetMoveLimit(priv->libtouch, -- xf86SetIntOption( local->options, -- "MoveLimit", 180 )); -+ priv->move_limit = xf86SetIntOption( local->options, -+ "MoveLimit", 180 ); -+ libtouchSetMoveLimit(priv->libtouch, priv->move_limit); - - priv->rotate = EV_ROTATE_NONE; - s = xf86FindOptionValue(local->options, "Rotate"); -@@ -1175,7 +1183,11 @@ EVTouchPreInit(InputDriverPtr drv, IDevP - priv->rotate = EV_ROTATE_CW; - } else if (xf86NameCmp(s, "CCW") == 0 ) { - priv->rotate = EV_ROTATE_CCW; -- } -+ } else if (xf86NameCmp(s, "UD") == 0 ) { -+ priv->rotate = EV_ROTATE_UD; -+ } -+ -+ - } - - if (priv->rotate == EV_ROTATE_NONE) { -@@ -1207,9 +1219,10 @@ EVTouchPreInit(InputDriverPtr drv, IDevP - priv->diff[i][0], priv->diff[i][1]); - } - -+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 - xf86AlwaysCore(local, TRUE); -+#endif - priv->touch_flags = 0; -- - local->history_size = xf86SetIntOption( local->options, "HistorySize", 0 ); - - /* prepare to process touch packets */ -@@ -1232,6 +1245,7 @@ EVTouchPreInit(InputDriverPtr drv, IDevP - - xf86CloseSerial(local->fd); - local->fd = -1; -+ - return (local); - } - -@@ -1243,3 +1257,58 @@ EVTouchPtrCtrl(DeviceIntPtr device, PtrC - Ho Hum. - */ - } -+ -+ -+static void -+PostMotionEvent(LocalDevicePtr local) { -+int cur_x, cur_y; -+EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private); -+ -+ cur_x = priv->cur_x; -+ cur_y = priv->cur_y; -+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2 -+ ConvertProc(local,0,2,priv->cur_x,priv->cur_y,0,0,0,0,&cur_x,&cur_y); -+#endif -+ -+xf86PostMotionEvent (local->dev, TRUE, 0, 2, cur_x, cur_y); -+} -+ -+static void -+PostProximityEvent(LocalDevicePtr local, int is_in) { -+int cur_x, cur_y; -+EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private); -+ -+ cur_x = priv->cur_x; -+ cur_y = priv->cur_y; -+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2 -+ ConvertProc(local,0,2,priv->cur_x,priv->cur_y,0,0,0,0,&cur_x,&cur_y); -+#endif -+ -+xf86PostProximityEvent(local->dev, is_in, 0, 2, cur_x,cur_y); -+} -+ -+static void -+PostButtonEvent(LocalDevicePtr local, int button, int is_down,int x, int y) { -+EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private); -+ -+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2 -+ ConvertProc(local,0,2,x,y,0,0,0,0,&x,&y); -+#endif -+ -+xf86PostButtonEvent (local->dev, TRUE, button, is_down, 0, 2, x, y); -+} -+ -+ -+static void InputSetScreen(LocalDevicePtr local) { -+int cur_x, cur_y; -+EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private); -+ -+ cur_x = priv->cur_x; -+ cur_y = priv->cur_y; -+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2 -+ ConvertProc(local,0,2,priv->cur_x,priv->cur_y,0,0,0,0,&cur_x,&cur_y); -+#endif -+ -+xf86XInputSetScreen(local,priv->screen_num,cur_x,cur_y); -+} -+ -Index: xserver-xorg-input-evtouch/evtouch.h -=================================================================== ---- xserver-xorg-input-evtouch.orig/evtouch.h 2008-02-02 21:49:20.823984091 +0900 -+++ xserver-xorg-input-evtouch/evtouch.h 2008-02-02 21:49:39.734971242 +0900 -@@ -42,6 +42,7 @@ - #define EV_ROTATE_NONE 0 - #define EV_ROTATE_CW 1 - #define EV_ROTATE_CCW 2 -+#define EV_ROTATE_UD 3 - - #define EV_AXIS_MIN_RES 0 - #define EV_AXIS_MAX_RES 1024 -@@ -80,6 +81,7 @@ typedef struct _EVTouchPrivateRec - int max_rel_y; /* Maximum y */ - - int drag_timer; -+ int move_limit; - Bool emulate3; - int emulate3_timeout; - OsTimerPtr emulate3_timer; -@@ -138,6 +140,7 @@ typedef struct _EVTouchPrivateRec - - LibTouchRecPtr libtouch; - LocalDevicePtr local; -+ - } EVTouchPrivateRec, *EVTouchPrivatePtr; - - -Index: xserver-xorg-input-evtouch/libtouch.c -=================================================================== ---- xserver-xorg-input-evtouch.orig/libtouch.c 2008-02-02 21:49:36.899983517 +0900 -+++ xserver-xorg-input-evtouch/libtouch.c 2008-02-02 21:49:39.734971242 +0900 -@@ -52,6 +52,7 @@ typedef struct state { - int (*handle_state)(LibTouchRecPtr priv); - void (*action)(LibTouchRecPtr priv, int btn, int x, int y); - int btn; -+ int drag_btn; - } state_t; - - -@@ -68,16 +69,14 @@ typedef enum states { - static void btn_down_action(LibTouchRecPtr priv, int btn, int x, int y) - { - DBG(4, ErrorF("LibTouch: Issuing Button %d down\n", btn)); -- xf86PostButtonEvent(priv->local->dev, TRUE, -- btn, 1, 0, 2, x, y); -+ priv->post_button_proc(priv->local,btn, 1,x,y); - priv->pressed_btn_stat |= 1 << btn; - } - - static void btn_up_action(LibTouchRecPtr priv, int btn, int x, int y) - { - DBG(4, ErrorF("LibTouch: Issuing Button %d up\n", btn)); -- xf86PostButtonEvent(priv->local->dev, TRUE, -- btn, 0, 0, 2, x, y); -+ priv->post_button_proc(priv->local,btn, 0,x,y); - priv->pressed_btn_stat &= ~(1 << btn); - } - -@@ -103,13 +102,13 @@ static int handle_oneandahalftap(LibTouc - static void dump_configuration(); - - state_t state_ar[] = { -- {enter_untouched, handle_untouched, NULL, 0}, -- {enter_touched, handle_touched, NULL, 0}, -- {enter_longtouched, handle_longtouched, btn_down_action, 1}, -- {enter_moving, handle_moving, NULL, 0}, -- {enter_maybetap, handle_maybetap, btn_click_action, 1}, -- {enter_oneandahalftap, handle_oneandahalftap, btn_down_action, 3}, -- {NULL, NULL, NULL, -1}, -+ {enter_untouched, handle_untouched, NULL, 0,-1}, -+ {enter_touched, handle_touched, NULL, 0,-1}, -+ {enter_longtouched, handle_longtouched, btn_down_action, 1,-1}, -+ {enter_moving, handle_moving, NULL, 0,-1}, -+ {enter_maybetap, handle_maybetap, btn_click_action, 1,-1}, -+ {enter_oneandahalftap, handle_oneandahalftap, btn_down_action, 3,-1}, -+ {NULL, NULL, NULL, -1,-1}, - }; - - char *state_str[] = { -@@ -142,6 +141,16 @@ char *state_button_str[] = { - NULL, - }; - -+char *state_drag_str[] = { -+ "untouched_drag", -+ "touched_drag", -+ "longtouched_drag", -+ "moving_drag", -+ "maybetapped_drag", -+ "oneandahalftap_drag", -+ NULL, -+}; -+ - char *action_str[] = { - "down", - "up", -@@ -177,13 +186,13 @@ void libtouchSetMoveLimit(LibTouchRecPtr - } - - --void libtouchInit(LibTouchRecPtr libtouch, LocalDevicePtr local) -+void libtouchInit(LibTouchRecPtr libtouch, LocalDevicePtr local,pointer post_button_proc) - { - int state_action_idx = 0; - int state_button_idx = 0; -+ int state_drag_idx = 0; - int action_idx = 0; - int btn; -- - char *str; - - xf86memset(libtouch, 0, sizeof(LibTouchRec)); -@@ -193,6 +202,7 @@ void libtouchInit(LibTouchRecPtr libtouc - libtouch->local = local; - libtouch->move_limit = 30; - -+ libtouch->post_button_proc = post_button_proc; - /* - Actions: up, down, click - -@@ -228,6 +238,11 @@ void libtouchInit(LibTouchRecPtr libtouc - } - } - -+ /* parse dragging for the states, that is which button sent to be as down, when in state and about to change to MOVING state */ -+ for (state_drag_idx = 0; state_drag_str[state_drag_idx] != NULL; state_drag_idx++) { -+ btn = xf86SetIntOption(local->options, state_drag_str[state_drag_idx], -1); -+ if (btn != -1) state_ar[state_drag_idx].drag_btn = btn; -+ } - - dump_configuration(); - } -@@ -359,10 +374,7 @@ static void enter_untouched(LibTouchRecP - for (i = 0; i < bit_size; i++) - if (priv->pressed_btn_stat & (1 << i)) { - DBG(4, ErrorF("LibTouch: Issuing Button-release %d\n", i)); -- xf86PostButtonEvent(priv->local->dev, TRUE, -- i, 0, 0, 2, -- priv->cur_x, -- priv->cur_y); -+ priv->post_button_proc(priv->local,i, 0,priv->cur_x,priv->cur_y); - } - - priv->pressed_btn_stat = 0; -@@ -445,6 +457,10 @@ static int handle_touched(LibTouchRecPtr - if (priv->cur_x != priv->old_x) { - dx = delta(priv->touch_x, priv->cur_x); - if (dx > priv->move_limit) { -+ if((state_ar[S_TOUCHED].drag_btn != -1) && (priv->touch_time != priv->now)){ -+ libtouchSetTime(priv, GetTimeInMillis()); -+ btn_down_action(priv, state_ar[S_TOUCHED].drag_btn, priv->cur_x,priv->cur_y); -+ } - return S_MOVING; - } - } -@@ -454,7 +470,10 @@ static int handle_touched(LibTouchRecPtr - if (priv->cur_y != priv->old_y) { - dy = delta(priv->touch_y, priv->cur_y); - if (dy > priv->move_limit) { -- return S_MOVING; -+ if((state_ar[S_TOUCHED].drag_btn != -1) && (priv->touch_time != priv->now)){ -+ libtouchSetTime(priv, GetTimeInMillis()); -+ btn_down_action(priv, state_ar[S_TOUCHED].drag_btn, priv->cur_x,priv->cur_y); -+} return S_MOVING; - } - } - } -@@ -500,7 +519,7 @@ static int handle_longtouched(LibTouchRe - } else { - if (priv->cur_x != priv->old_x) { - dx = delta(priv->touch_x, priv->cur_x); -- if (dx > priv->move_limit) -+ if (dx > priv->move_limit) - rc = S_MOVING; - } - -Index: xserver-xorg-input-evtouch/libtouch.h -=================================================================== -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

