From 730ed17017a325be742523bee2bc80cd3b201534 Mon Sep 17 00:00:00 2001 From: "Junkyeong, Kim" Date: Thu, 26 May 2022 15:51:57 +0900 Subject: [PATCH] e_info_server_input: add e_info_server_input_mouse_accel_set api 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 --- src/bin/e_info_server_input.c | 49 +++++++++++++++++++++++++++++++++++++++++-- src/bin/e_info_server_input.h | 1 + 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/bin/e_info_server_input.c b/src/bin/e_info_server_input.c index 4d99a19..021ab71 100644 --- a/src/bin/e_info_server_input.c +++ b/src/bin/e_info_server_input.c @@ -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 @@ -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; +} diff --git a/src/bin/e_info_server_input.h b/src/bin/e_info_server_input.h index 5fffce4..f224d7f 100644 --- a/src/bin/e_info_server_input.h +++ b/src/bin/e_info_server_input.h @@ -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 -- 2.7.4