diff -urNp orig/eventcomm.c muutettu/eventcomm.c --- orig/eventcomm.c 2007-09-17 09:31:24.000000000 +0300 +++ muutettu/eventcomm.c 2008-05-25 16:13:00.000000000 +0300 @@ -151,6 +151,8 @@ EventReadHwState(LocalDevicePtr local, s struct input_event ev; Bool v; struct SynapticsHwState *hw = &(comm->hwState); + SynapticsPrivate *priv = (SynapticsPrivate *) (local->private); + SynapticsSHM *para = priv->synpara; while (SynapticsReadEvent(comm, &ev)) { switch (ev.type) { @@ -231,10 +233,24 @@ EventReadHwState(LocalDevicePtr local, s case EV_ABS: switch (ev.code) { case ABS_X: - hw->x = ev.value; + if (para->xrandr==0) + hw->x = ev.value; + if (para->xrandr==1) + hw->y = -ev.value; + if (para->xrandr==2) + hw->y = ev.value; + if (para->xrandr==3) + hw->x = -ev.value; break; case ABS_Y: - hw->y = ev.value; + if (para->xrandr==0) + hw->y = ev.value; + if (para->xrandr==1) + hw->x = ev.value; + if (para->xrandr==2) + hw->x = -ev.value; + if (para->xrandr==3) + hw->y = -ev.value; break; case ABS_PRESSURE: hw->z = ev.value; diff -urNp orig/synaptics.c muutettu/synaptics.c --- orig/synaptics.c 2007-09-17 09:31:24.000000000 +0300 +++ muutettu/synaptics.c 2008-05-25 14:51:11.000000000 +0300 @@ -373,6 +373,7 @@ SynapticsPreInit(InputDriverPtr drv, IDe /* read the parameters */ pars = &priv->synpara_default; pars->version = VERSION_ID; + pars->xrandr = xf86SetIntOption(opts, "Xrandr", 0); if (priv->maxx && priv->maxy) { int xsize = priv->maxx - priv->minx; diff -urNp orig/synaptics.h muutettu/synaptics.h --- orig/synaptics.h 2007-09-17 09:31:24.000000000 +0300 +++ muutettu/synaptics.h 2008-05-25 15:09:21.000000000 +0300 @@ -34,6 +34,7 @@ typedef struct _SynapticsSHM { int version; /* Driver version */ + int xrandr; /* Current device state */ int x, y; /* actual x, y coordinates */ int z; /* pressure value */ diff -urNp orig/synclient.c muutettu/synclient.c --- orig/synclient.c 2007-09-17 09:31:24.000000000 +0300 +++ muutettu/synclient.c 2008-05-25 14:51:58.000000000 +0300 @@ -49,6 +49,7 @@ struct Parameter { { name, offsetof(SynapticsSHM, memb), (type), (min_val), (max_val) } static struct Parameter params[] = { + DEFINE_PAR("Xrandr", xrandr, PT_INT, 0, 3), DEFINE_PAR("LeftEdge", left_edge, PT_INT, 0, 10000), DEFINE_PAR("RightEdge", right_edge, PT_INT, 0, 10000), DEFINE_PAR("TopEdge", top_edge, PT_INT, 0, 10000),