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>
This commit is contained in:
Alyssa Hung
2012-04-13 01:04:38 -04:00
committed by Peter Hutterer
parent 38b93b71c8
commit 1874094f0e
3 changed files with 7 additions and 4 deletions

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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},