e_info_server_input: add e_info_server_input_mouse_accel_set api 60/275560/1
authorJunkyeong, Kim <jk0430.kim@samsung.com>
Thu, 26 May 2022 06:51:57 +0000 (15:51 +0900)
committerJunseok Kim <juns.kim@samsung.com>
Thu, 26 May 2022 08:12:09 +0000 (17:12 +0900)
can set pointer acceleration on, off of virtual input device.
acceleration on : 1, off : 0 (default : on)

Change-Id: I458c71a5f3f7d15b48f36399f1c0b35c6e0f1b5f
Signed-off-by: Junkyeong, Kim <jk0430.kim@samsung.com>
src/bin/e_info_server_input.c
src/bin/e_info_server_input.h

index 4d99a19..021ab71 100644 (file)
@@ -1,6 +1,7 @@
 #include "e.h"
 #include "e_info_server_input.h"
 #include "e_info_shared_types.h"
+#include "e_input_private.h"
 
 #include <linux/uinput.h>
 
@@ -20,6 +21,7 @@ typedef struct _E_Info_Server_Input
      {
         Eina_Bool virtual_dev;
         int fd;
+        Eina_Stringshare *name;
      } gen;
 } E_Info_Server_Input;
 
@@ -27,11 +29,11 @@ static E_Info_Server_Input _e_info_input =
 {
   {
      EINA_FALSE, /* virtual_dev */
-     -1          /* fd */
+     -1,         /* fd */
+     NULL        /* dev_name */
   }
 };
 
-
 static void
 _e_info_input_set_keyboard(struct uinput_user_dev *uinput_dev, int uinput_fd)
 {
@@ -475,6 +477,9 @@ e_info_server_input_init_device(unsigned int type, char *name)
         fd = _e_info_input_create_device(name, type);
         _e_info_input.gen.virtual_dev = EINA_TRUE;
         _e_info_input.gen.fd = fd;
+        if (_e_info_input.gen.name)
+          eina_stringshare_del(_e_info_input.gen.name);
+        _e_info_input.gen.name = eina_stringshare_add(name);
      }
    else
      {
@@ -488,6 +493,9 @@ e_info_server_input_init_device(unsigned int type, char *name)
                   fd = _e_info_input_open_device(name);
                   _e_info_input.gen.virtual_dev = EINA_FALSE;
                   _e_info_input.gen.fd = fd;
+                  if (_e_info_input.gen.name)
+                    eina_stringshare_del(_e_info_input.gen.name);
+                  _e_info_input.gen.name = eina_stringshare_add(name);
                }
           }
      }
@@ -496,6 +504,9 @@ e_info_server_input_init_device(unsigned int type, char *name)
      {
         _e_info_input.gen.virtual_dev = EINA_FALSE;
         _e_info_input.gen.fd = -1;
+        if (_e_info_input.gen.name)
+          eina_stringshare_del(_e_info_input.gen.name);
+        _e_info_input.gen.name = NULL;
         return "Failed to open event node or uinput node";
      }
 
@@ -516,6 +527,9 @@ e_info_server_input_deinit_device(void)
         _e_info_input.gen.fd = -1;
         _e_info_input.gen.virtual_dev = EINA_FALSE;
      }
+   if (_e_info_input.gen.name)
+     eina_stringshare_del(_e_info_input.gen.name);
+   _e_info_input.gen.name = NULL;
 
    return;
 }
@@ -556,3 +570,34 @@ e_info_server_input_mousegen(int button, int x, int y, int state)
 
    return E_INFO_INPUT_RESULT_NONE;
 }
+
+char *
+e_info_server_input_mouse_accel_set(int state)
+{
+   const Eina_List *l, *ll, *lll;
+   E_Input_Device *dev;
+   E_Input_Seat *seat;
+   E_Input_Evdev *edev;
+
+   if (_e_info_input.gen.fd < 0) return "Initialize device first";
+
+   EINA_LIST_FOREACH(e_input_devices_get(), l, dev)
+     {
+        EINA_LIST_FOREACH(dev->seats, ll, seat)
+          {
+             EINA_LIST_FOREACH(seat->devices, lll, edev)
+               {
+                  if (!e_util_strcmp(_e_info_input.gen.name, libinput_device_get_name(edev->device)))
+                    {
+                       if (state == 1)
+                         e_input_evdev_mouse_accel_enable(edev, EINA_TRUE);
+                       else
+                         e_input_evdev_mouse_accel_enable(edev, EINA_FALSE);
+                       break;
+                    }
+               }
+          }
+     }
+
+   return E_INFO_INPUT_RESULT_NONE;
+}
index 5fffce4..f224d7f 100644 (file)
@@ -8,5 +8,6 @@ void e_info_server_input_deinit_device(void);
 char *e_info_server_input_keygen(char *name, int code, int state);
 char *e_info_server_input_touchgen(int idx, int x, int y, int state);
 char *e_info_server_input_mousegen(int button, int x, int y, int state);
+char *e_info_server_input_mouse_accel_set(int state);
 
 #endif