aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Landau <daniel.landau@helsinki.fi>2011-03-12 20:07:20 +0200
committerHenrik Rydberg <rydberg@euromail.se>2011-03-25 14:34:43 +0100
commit4d87c041f6a232aa30528d70d4b9946d1824b4ed (patch)
treefdf78c5b5294e573000c987528343d8ec20c4524
parentafbbc4b9470869933223e3970c7a63f1c52c1d69 (diff)
downloadxorg-input-kobomultitouch-4d87c041f6a232aa30528d70d4b9946d1824b4ed.tar.gz
xorg-input-kobomultitouch-4d87c041f6a232aa30528d70d4b9946d1824b4ed.tar.bz2
xorg-input-kobomultitouch-4d87c041f6a232aa30528d70d4b9946d1824b4ed.zip
Four finger swipes in multitouch
I think four finger swipes are useful, attached is a very simple patch enabling that. Signed-off-by: Daniel Landau <daniel.landau@helsinki.fi> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
-rw-r--r--driver/multitouch.c8
-rw-r--r--include/gestures.h2
-rw-r--r--src/gestures.c4
3 files changed, 14 insertions, 0 deletions
diff --git a/driver/multitouch.c b/driver/multitouch.c
index 99f1484..a083adc 100644
--- a/driver/multitouch.c
+++ b/driver/multitouch.c
@@ -261,6 +261,14 @@ static void handle_gestures(LocalDevicePtr local,
foreach_bit(i, gs->tapmask)
tickle_button(local, i + 1);
}
+ if (GETBIT(gs->type, GS_VSWIPE4)) {
+ int step = 1 + vswipe_fraction * get_cap_ysize(caps);
+ button_scroll(local, 16, 17, &vswipe, step, gs->dy);
+ }
+ if (GETBIT(gs->type, GS_HSWIPE4)) {
+ int step = 1 + hswipe_fraction * get_cap_xsize(caps);
+ button_scroll(local, 18, 19, &hswipe, step, gs->dx);
+ }
}
/* called for each full received packet from the touchpad */
diff --git a/include/gestures.h b/include/gestures.h
index 6bc92cd..b512121 100644
--- a/include/gestures.h
+++ b/include/gestures.h
@@ -33,6 +33,8 @@
#define GS_SCALE 6
#define GS_ROTATE 7
#define GS_TAP 8
+#define GS_VSWIPE4 9
+#define GS_HSWIPE4 10
struct Gestures {
bitmask_t type, btmask, btdata;
diff --git a/src/gestures.c b/src/gestures.c
index 735e77c..cc95e9b 100644
--- a/src/gestures.c
+++ b/src/gestures.c
@@ -157,12 +157,16 @@ static void extract_movement(struct Gestures *gs, struct MTouch* mt)
SETBIT(gs->type, GS_HSCROLL);
if (nmove == 3)
SETBIT(gs->type, GS_HSWIPE);
+ if (nmove == 4)
+ SETBIT(gs->type, GS_HSWIPE4);
}
if (abs(gs->dy) > abs(gs->dx)) {
if (nmove == 2)
SETBIT(gs->type, GS_VSCROLL);
if (nmove == 3)
SETBIT(gs->type, GS_VSWIPE);
+ if (nmove == 4)
+ SETBIT(gs->type, GS_VSWIPE4);
}
}
}