diff options
author | Henrik Rydberg <rydberg@euromail.se> | 2010-04-10 23:18:02 +0200 |
---|---|---|
committer | Henrik Rydberg <rydberg@euromail.se> | 2010-04-15 06:10:07 +0200 |
commit | 030f4fdbe44d1af41c55cdda5baf71ba3225829f (patch) | |
tree | 8e5c28b70fbdd3fe0ce5a3e55a0b4b39ef65de83 /src/gestures.c | |
parent | 32d5f821c5bbefc6eae2319209288ec74079529a (diff) | |
download | xorg-input-kobomultitouch-030f4fdbe44d1af41c55cdda5baf71ba3225829f.tar.gz xorg-input-kobomultitouch-030f4fdbe44d1af41c55cdda5baf71ba3225829f.tar.bz2 xorg-input-kobomultitouch-030f4fdbe44d1af41c55cdda5baf71ba3225829f.zip |
Keep logical buttons separate from the hardware ones
The button extraction currently modifies the MTState buttons,
upsetting the semantics in a bad way. This patch adds the logical
button state to the Memory structure, and uses it to compute the
logical button change.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src/gestures.c')
-rw-r--r-- | src/gestures.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/gestures.c b/src/gestures.c index c837d6c..e032214 100644 --- a/src/gestures.c +++ b/src/gestures.c @@ -50,16 +50,20 @@ static void extract_movement(struct Gestures *gs, struct MTouch* mt) static void extract_buttons(struct Gestures *gs, struct MTouch* mt) { + unsigned btdata = mt->state.button & BITONES(DIM_BUTTON); if (mt->state.button == BITMASK(MT_BUTTON_LEFT)) { if (mt->state.nfinger == 2) - mt->state.button = BITMASK(MT_BUTTON_RIGHT); + btdata = BITMASK(MT_BUTTON_RIGHT); if (mt->state.nfinger == 3) - mt->state.button = BITMASK(MT_BUTTON_MIDDLE); + btdata = BITMASK(MT_BUTTON_MIDDLE); } - gs->btmask = (mt->state.button ^ mt->prev_state.button) & BITONES(DIM_BUTTON); - gs->btdata = mt->state.button & BITONES(DIM_BUTTON); + gs->btmask = (btdata ^ mt->mem.btdata) & BITONES(DIM_BUTTON); + gs->btdata = btdata; + mt->mem.btdata = btdata; } +/******************************************************/ + static void extract_type(struct Gestures *gs, struct MTouch* mt) { if (gs->dx || gs->dy) { |