diff options
author | Alyssa Hung <ahung@isisview.org> | 2012-04-13 01:04:38 -0400 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2012-04-16 11:44:14 +1000 |
commit | 1874094f0e99d8db319f6cf769ce5a25c9bc490c (patch) | |
tree | 6a349556129e3a436aa8bcc86248d389ad4bebd3 | |
parent | 38b93b71c812c6d7b7085f40d049b0a4927e52dd (diff) |
Support inverted scroll direction.
This patch allows scroll direction to be inverted by allowing
VertScrollDelta and HorizScrollDelta to be set to negative values. This
enables behaviour that is consistent with modern touchscreen devices,
where the content scrolls in the same direction as the user's finger
movement.
Signed-off-by: Alyssa Hung <ahung@isisview.org>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | man/synaptics.man | 3 | ||||
-rw-r--r-- | src/synaptics.c | 4 | ||||
-rw-r--r-- | tools/synclient.c | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/man/synaptics.man b/man/synaptics.man index 864a95f..2cbe50e 100644 --- a/man/synaptics.man +++ b/man/synaptics.man @@ -634,6 +634,9 @@ HorizScrollDelta parameters. To disable vertical or horizontal scrolling, set VertScrollDelta or HorizScrollDelta to zero. . +To invert the direction of vertical or horizontal scrolling, set +VertScrollDelta or HorizScrollDelta to a negative value. +. .LP Acceleration is mostly handled outside the driver, thus the driver will translate MinSpeed into constant deceleration and adapt MaxSpeed at diff --git a/src/synaptics.c b/src/synaptics.c index fd6eb73..40478ec 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -2558,14 +2558,14 @@ HandleScrolling(SynapticsPrivate *priv, struct SynapticsHwState *hw, if (priv->vert_scroll_edge_on || priv->vert_scroll_twofinger_on) { /* + = down, - = up */ - if (para->scroll_dist_vert > 0 && hw->y != priv->scroll.last_y) { + if (para->scroll_dist_vert != 0 && hw->y != priv->scroll.last_y) { priv->scroll.delta_y += (hw->y - priv->scroll.last_y); priv->scroll.last_y = hw->y; } } if (priv->horiz_scroll_edge_on || priv->horiz_scroll_twofinger_on) { /* + = right, - = left */ - if (para->scroll_dist_horiz > 0 && hw->x != priv->scroll.last_x) { + if (para->scroll_dist_horiz != 0 && hw->x != priv->scroll.last_x) { priv->scroll.delta_x += (hw->x - priv->scroll.last_x); priv->scroll.last_x = hw->x; } diff --git a/tools/synclient.c b/tools/synclient.c index aef719f..6c8ee7a 100644 --- a/tools/synclient.c +++ b/tools/synclient.c @@ -90,8 +90,8 @@ static struct Parameter params[] = { {"EmulateMidButtonTime", PT_INT, 0, 1000, SYNAPTICS_PROP_MIDDLE_TIMEOUT,32, 0}, {"EmulateTwoFingerMinZ", PT_INT, 0, 1000, SYNAPTICS_PROP_TWOFINGER_PRESSURE, 32, 0}, {"EmulateTwoFingerMinW", PT_INT, 0, 15, SYNAPTICS_PROP_TWOFINGER_WIDTH, 32, 0}, - {"VertScrollDelta", PT_INT, 0, 1000, SYNAPTICS_PROP_SCROLL_DISTANCE, 32, 0}, - {"HorizScrollDelta", PT_INT, 0, 1000, SYNAPTICS_PROP_SCROLL_DISTANCE, 32, 1}, + {"VertScrollDelta", PT_INT, -1000, 1000, SYNAPTICS_PROP_SCROLL_DISTANCE, 32, 0}, + {"HorizScrollDelta", PT_INT, -1000, 1000, SYNAPTICS_PROP_SCROLL_DISTANCE, 32, 1}, {"VertEdgeScroll", PT_BOOL, 0, 1, SYNAPTICS_PROP_SCROLL_EDGE, 8, 0}, {"HorizEdgeScroll", PT_BOOL, 0, 1, SYNAPTICS_PROP_SCROLL_EDGE, 8, 1}, {"CornerCoasting", PT_BOOL, 0, 1, SYNAPTICS_PROP_SCROLL_EDGE, 8, 2}, |