raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=d24370afb672b82d899ab1ecae37f45ab21d3463

commit d24370afb672b82d899ab1ecae37f45ab21d3463
Author: Carsten Haitzler <[email protected]>
Date:   Wed Apr 13 15:21:38 2022 +0100

    touchpad input synaptics - fix tap to click props to work
    
    if the driver if synaptics tap to click didnt work. this fixes that.
    it didn't get the property values right in the "bitmask" enabling
    buttons.
    
    @fix
---
 src/bin/e_comp_x_devices.c | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/bin/e_comp_x_devices.c b/src/bin/e_comp_x_devices.c
index 38174d1da..c84e692c1 100644
--- a/src/bin/e_comp_x_devices.c
+++ b/src/bin/e_comp_x_devices.c
@@ -200,28 +200,35 @@ _handle_dev_prop(int dev_slot, const char *dev, const 
char *prop, Device_Flags d
      {
         // 7 val, 8 bit bit 0 = off, >0 mouse button reported
         // TR, BR, TL, BL, F1, F2, F3
-        // 0, 0, 0, 0, 1, 2, 3 <- tap to click
+        // 1, 1, 1, 0, 1, 3, 2 <- tap to click
         unsigned char *val = ecore_x_input_device_property_get
           (dev_slot, prop, &num, &fmt, &size);
+        const char tapval[7]   =  { 1, 1, 1, 0, 1, 3, 2 };
+        const char notapval[7] =  { 0, 0, 0, 0, 0, 0, 0 };
+        Eina_Bool have_tapval = EINA_FALSE;
+        Eina_Bool have_notapval = EINA_FALSE;
+        int i;
+
+        if (num >= 7)
+          {
+             have_tapval = EINA_TRUE;
+             for (i = 0; i < 7; i++) if (val[i] != tapval[i]) have_tapval = 
EINA_FALSE;
+             have_notapval = EINA_TRUE;
+             for (i = 0; i < 7; i++) if (val[i] != notapval[i]) have_notapval 
= EINA_FALSE;
+          }
         if ((val) && (size == 8) && (num >= 7) &&
-            (((e_config->touch_tap_to_click) &&
-              ((val[4] != 1) || (val[5] != 2) || (val[6] != 3))) ||
-             ((!e_config->touch_tap_to_click) &&
-              ((val[4] != 0) || (val[5] != 0) || (val[6] != 0)))))
+            (((e_config->touch_tap_to_click) && (!have_tapval)) ||
+             ((!e_config->touch_tap_to_click) && (!have_notapval))))
           {
              if (e_config->touch_tap_to_click)
                {
-                  val[4] = 1;
-                  val[5] = 2;
-                  val[6] = 3;
+                  for (i = 0; i < 7; i++) val[i] = tapval[i];
                }
              else
                {
-                  val[4] = 0;
-                  val[5] = 0;
-                  val[6] = 0;
+                  for (i = 0; i < 7; i++) val[i] = notapval[i];
                }
-             printf("DEV: change [%s] [%s] -> %i %i %i\n", dev, prop, val[4], 
val[5], val[6]);
+             printf("DEV: change [%s] [%s] -> %i %i %i %i %i %i %i\n", dev, 
prop, val[0], val[1], val[2], val[3], val[4], val[5], val[6]);
              ecore_x_input_device_property_set
                (dev_slot, prop, val, num, fmt, size);
           }

-- 


Reply via email to