devilhorns pushed a commit to branch master.

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

commit d798eca247b6b2bca5cf83b9a72bc132d35dc1bc
Author: Chris Michael <[email protected]>
Date:   Thu Aug 24 11:24:54 2017 -0400

    elput: Add API to set pointer acceleration speed
    
    Small patch to add an API which can be called to set pointer
    acceleration speed under Wayland.
    
    ref T4736
    
    @feature
    
    Signed-off-by: Chris Michael <[email protected]>
---
 src/lib/elput/Elput.h       | 12 ++++++++++++
 src/lib/elput/elput_input.c | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+)

diff --git a/src/lib/elput/Elput.h b/src/lib/elput/Elput.h
index 5636c71204..b05536130b 100644
--- a/src/lib/elput/Elput.h
+++ b/src/lib/elput/Elput.h
@@ -435,6 +435,18 @@ EAPI void elput_input_keyboard_group_set(Elput_Manager 
*manager, int group);
 EAPI void elput_input_pointer_accel_profile_set(Elput_Manager *manager, const 
char *seat, uint32_t profile);
 
 /**
+ * Set the pointer acceleration speed
+ *
+ * @param manager
+ * @param seat
+ * @param speed
+ *
+ * @ingroup Elput_Input_Group
+ * @since 1.21
+ */
+EAPI void elput_input_pointer_accel_speed_set(Elput_Manager *manager, const 
char *seat, double speed);
+
+/**
  * @defgroup Elput_Touch_Group Configuration of touch devices
  *
  * Functions related to configuration of touch devices
diff --git a/src/lib/elput/elput_input.c b/src/lib/elput/elput_input.c
index 5134a67635..d219eff9ff 100644
--- a/src/lib/elput/elput_input.c
+++ b/src/lib/elput/elput_input.c
@@ -775,6 +775,41 @@ elput_input_pointer_accel_profile_set(Elput_Manager 
*manager, const char *seat,
      }
 }
 
+EAPI void
+elput_input_pointer_accel_speed_set(Elput_Manager *manager, const char *seat, 
double speed)
+{
+   Elput_Seat *eseat;
+   Elput_Device *edev;
+   Eina_List *l, *ll;
+
+   EINA_SAFETY_ON_NULL_RETURN(manager);
+
+   /* if no seat name is passed in, just use default seat name */
+   if (!seat) seat = "seat0";
+
+   EINA_LIST_FOREACH(manager->input.seats, l, eseat)
+     {
+        if ((eseat->name) && (strcmp(eseat->name, seat)))
+          continue;
+
+        EINA_LIST_FOREACH(eseat->devices, ll, edev)
+          {
+             if (!libinput_device_has_capability(edev->device,
+                                                 LIBINPUT_DEVICE_CAP_POINTER))
+               continue;
+
+             if (libinput_device_config_accel_set_speed(edev->device,
+                                                        speed) !=
+                 LIBINPUT_CONFIG_STATUS_SUCCESS)
+               {
+                  WRN("Failed to set acceleration speed for device: %s",
+                      libinput_device_get_name(edev->device));
+                  continue;
+               }
+          }
+     }
+}
+
 EAPI Elput_Seat *
 elput_device_seat_get(const Elput_Device *dev)
 {

-- 


Reply via email to