[PATCH synaptics v5 08/18] Add a BTN_EMULATED_FLAG to mark emulated buttons on clickfingers
Peter Hutterer
peter.hutterer at who-t.net
Mon Mar 12 23:37:35 PDT 2012
And when copying the hardware state, don't copy those buttons that were set
through emulation.
This is a temporary fix only, we should add new fields to the hw struct that
represent the various features as they are enabled/disabled and then treat
them accordingly.
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
src/synaptics.c | 6 +++---
src/synproto.c | 6 +++---
src/synproto.h | 3 +++
3 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/synaptics.c b/src/synaptics.c
index e360238..6143005 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -2399,15 +2399,15 @@ handle_clickfinger(SynapticsParameters *para, struct SynapticsHwState *hw)
}
switch(action){
case 1:
- hw->left = 1;
+ hw->left = 1 | BTN_EMULATED_FLAG;
break;
case 2:
hw->left = 0;
- hw->middle = 1;
+ hw->middle = 1 | BTN_EMULATED_FLAG;
break;
case 3:
hw->left = 0;
- hw->right = 1;
+ hw->right = 1 | BTN_EMULATED_FLAG;
break;
}
}
diff --git a/src/synproto.c b/src/synproto.c
index 0426e8f..21e88c4 100644
--- a/src/synproto.c
+++ b/src/synproto.c
@@ -122,12 +122,12 @@ SynapticsCopyHwState(struct SynapticsHwState *dst,
dst->z = src->z;
dst->numFingers = src->numFingers;
dst->fingerWidth = src->fingerWidth;
- dst->left = src->left;
- dst->right = src->right;
+ dst->left = src->left & BTN_EMULATED_FLAG ? 0 : src->left;
+ dst->right = src->right & BTN_EMULATED_FLAG ? 0 : src->right;
dst->up = src->up;
dst->down = src->down;
memcpy(dst->multi, src->multi, sizeof(dst->multi));
- dst->middle = src->middle;
+ dst->middle = src->middle & BTN_EMULATED_FLAG ? 0 : src->middle;
#ifdef HAVE_MULTITOUCH
for (i = 0; i < dst->num_mt_mask && i < src->num_mt_mask; i++)
valuator_mask_copy(dst->mt_mask[i], src->mt_mask[i]);
diff --git a/src/synproto.h b/src/synproto.h
index 89392ac..5e8a804 100644
--- a/src/synproto.h
+++ b/src/synproto.h
@@ -45,6 +45,9 @@ enum SynapticsSlotState
SLOTSTATE_UPDATE,
};
+/* used to mark emulated hw button state */
+#define BTN_EMULATED_FLAG 0x80
+
/*
* A structure to describe the state of the touchpad hardware (buttons and pad)
*/
--
1.7.7.6
More information about the xorg-devel
mailing list