1
#include "elput_private.h"
3
static Elput_Interface *_ifaces[] =
13
_cb_key_down(void *data, int type EINA_UNUSED, void *event)
21
code = (ev->keycode - 8);
23
if ((ev->modifiers & ECORE_EVENT_MODIFIER_CTRL) &&
24
(ev->modifiers & ECORE_EVENT_MODIFIER_ALT) &&
25
(code >= KEY_F1) && (code <= KEY_F8))
27
vt = (code - KEY_F1 + 1);
28
if (em->interface->vt_set)
30
if (!em->interface->vt_set(em, vt))
31
ERR("Failed to switch to virtual terminal %d", vt);
35
return ECORE_CALLBACK_RENEW;
39
elput_manager_connect(const char *seat, unsigned int tty)
43
for (it = _ifaces; *it != NULL; it++)
45
Elput_Interface *iface;
49
if (iface->connect(&em, seat, tty))
57
elput_manager_disconnect(Elput_Manager *manager)
59
EINA_SAFETY_ON_NULL_RETURN(manager);
60
EINA_SAFETY_ON_NULL_RETURN(manager->interface);
62
if (manager->input.thread)
64
ecore_thread_cancel(manager->input.thread);
69
if (manager->interface->disconnect)
70
manager->interface->disconnect(manager);
74
elput_manager_open(Elput_Manager *manager, const char *path, int flags)
78
EINA_SAFETY_ON_NULL_RETURN_VAL(manager, -1);
79
EINA_SAFETY_ON_NULL_RETURN_VAL(manager->interface, -1);
80
EINA_SAFETY_ON_NULL_RETURN_VAL(path, -1);
82
if (flags < 0) flags = O_RDWR;
84
if (manager->interface->open)
86
ret = manager->interface->open(manager, path, flags);
90
ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
91
_cb_key_down, manager);
100
elput_manager_close(Elput_Manager *manager, int fd)
102
EINA_SAFETY_ON_NULL_RETURN(manager);
103
EINA_SAFETY_ON_NULL_RETURN(manager->interface);
105
if (fd == manager->vt_fd)
107
if (manager->vt_hdlr) ecore_event_handler_del(manager->vt_hdlr);
108
manager->vt_hdlr = NULL;
111
if (manager->interface->close)
112
manager->interface->close(manager, fd);
116
elput_manager_vt_set(Elput_Manager *manager, int vt)
118
EINA_SAFETY_ON_NULL_RETURN_VAL(manager, EINA_FALSE);
119
EINA_SAFETY_ON_NULL_RETURN_VAL(manager->interface, EINA_FALSE);
120
EINA_SAFETY_ON_TRUE_RETURN_VAL((vt < 0), EINA_FALSE);
122
if (manager->interface->vt_set)
123
return manager->interface->vt_set(manager, vt);
129
elput_manager_window_set(Elput_Manager *manager, unsigned int window)
131
EINA_SAFETY_ON_NULL_RETURN(manager);
133
manager->window = window;
136
EAPI const Eina_List *
137
elput_manager_seats_get(Elput_Manager *manager)
139
EINA_SAFETY_ON_NULL_RETURN_VAL(manager, NULL);
140
return manager->input.seats;