#include "e.h"
#include "e_info_server_input.h"
#include "e_info_shared_types.h"
+#include "e_input_private.h"
#include <linux/uinput.h>
{
Eina_Bool virtual_dev;
int fd;
+ Eina_Stringshare *name;
} gen;
} E_Info_Server_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)
{
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
{
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);
}
}
}
{
_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";
}
_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;
}
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;
+}