return EINA_TRUE;
}
+EINTERN Eina_Bool
+e_devicemgr_block_internal_add(Ecore_Device_Class clas, Eina_Bool all_class, uint32_t duration, E_Devicemgr_Block_Expire_Cb cb_func, void *cb_data)
+{
+ unsigned int dev_clas = 0x0;
+
+ if (all_class)
+ dev_clas = TIZEN_INPUT_DEVICE_MANAGER_CLAS_KEYBOARD |
+ TIZEN_INPUT_DEVICE_MANAGER_CLAS_MOUSE |
+ TIZEN_INPUT_DEVICE_MANAGER_CLAS_TOUCHSCREEN;
+ else
+ {
+ switch (clas)
+ {
+ case ECORE_DEVICE_CLASS_KEYBOARD:
+ dev_clas = TIZEN_INPUT_DEVICE_MANAGER_CLAS_KEYBOARD;
+ break;
+ case ECORE_DEVICE_CLASS_MOUSE:
+ dev_clas = TIZEN_INPUT_DEVICE_MANAGER_CLAS_MOUSE;
+ break;
+ case ECORE_DEVICE_CLASS_TOUCH:
+ dev_clas = TIZEN_INPUT_DEVICE_MANAGER_CLAS_TOUCHSCREEN;
+ break;
+ default:
+ return EINA_FALSE;
+ }
+ }
+
+ return e_devicemgr_block_add_internal(dev_clas, duration, cb_func, cb_data);
+}
+
+EINTERN Eina_Bool
+e_devicemgr_block_internal_remove(E_Devicemgr_Block_Expire_Cb cb_func, void *cb_data)
+{
+ return e_devicemgr_block_remove_internal(cb_func, cb_data);
+}
+
typedef struct _E_Devicemgr E_Devicemgr;
+typedef void (*E_Devicemgr_Block_Expire_Cb) (void *data);
+
#else
#ifndef E_DEVICEMGR_H
#define E_DEVICEMGR_H
unsigned int devtype;
struct wl_client *client;
Ecore_Timer *duration_timer;
+
+ unsigned int internal_devtype;
+ Ecore_Timer *internal_duration_timer;
+ E_Devicemgr_Block_Expire_Cb internal_cb_func;
+ void *internal_cb_data;
} block;
Eina_List *pressed_keys;
Eina_Bool e_devicemgr_detent_is_detent(const char *name);
+EINTERN Eina_Bool e_devicemgr_block_internal_add(Ecore_Device_Class clas, Eina_Bool all_clas, uint32_t duration, E_Devicemgr_Block_Expire_Cb cb_func, void *cb_data);
+EINTERN Eina_Bool e_devicemgr_block_internal_remove(E_Devicemgr_Block_Expire_Cb cb_func, void *cb_data);
#endif
#endif
EINA_SAFETY_ON_NULL_RETURN_VAL(ev, ECORE_CALLBACK_PASS_ON);
- if (e_devicemgr->block.devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_KEYBOARD)
+ if ((e_devicemgr->block.devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_KEYBOARD) ||
+ (e_devicemgr->block.internal_devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_KEYBOARD))
{
if (!pressed)
{
if (ecore_device_class_get(dev) == ECORE_DEVICE_CLASS_MOUSE)
{
- if (e_devicemgr->block.devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_MOUSE)
+ if ((e_devicemgr->block.devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_MOUSE) ||
+ (e_devicemgr->block.internal_devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_MOUSE))
{
if (!pressed)
{
}
else if (ecore_device_class_get(dev) == ECORE_DEVICE_CLASS_TOUCH)
{
- if (e_devicemgr->block.devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_TOUCHSCREEN)
+ if ((e_devicemgr->block.devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_TOUCHSCREEN) ||
+ (e_devicemgr->block.internal_devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_TOUCHSCREEN))
{
if (!pressed)
{
if (ecore_device_class_get(dev) == ECORE_DEVICE_CLASS_MOUSE)
{
- if (e_devicemgr->block.devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_MOUSE)
+ if ((e_devicemgr->block.devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_MOUSE) ||
+ (e_devicemgr->block.internal_devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_MOUSE))
{
return ECORE_CALLBACK_DONE;
}
}
else if (ecore_device_class_get(dev) == ECORE_DEVICE_CLASS_TOUCH)
{
- if (e_devicemgr->block.devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_TOUCHSCREEN)
+ if ((e_devicemgr->block.devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_TOUCHSCREEN) ||
+ (e_devicemgr->block.internal_devtype & TIZEN_INPUT_DEVICE_MANAGER_CLAS_TOUCHSCREEN))
{
return ECORE_CALLBACK_DONE;
}
return TIZEN_INPUT_DEVICE_MANAGER_ERROR_NONE;
}
+
+static Eina_Bool
+_e_devicemgr_block_timer_internal(void *data)
+{
+ e_devicemgr->block.internal_devtype = 0x0;
+ e_devicemgr->block.internal_duration_timer = NULL;
+
+ if (!e_devicemgr->block.internal_cb_func) return ECORE_CALLBACK_CANCEL;
+
+ //Call expiration cb for internal block
+ e_devicemgr->block.internal_cb_func(e_devicemgr->block.internal_cb_data);
+
+ e_devicemgr->block.internal_cb_func = NULL;
+ e_devicemgr->block.internal_cb_data = NULL;
+
+ return ECORE_CALLBACK_DONE;
+}
+
+
+
+Eina_Bool
+e_devicemgr_block_add_internal(uint32_t clas, uint32_t duration, E_Devicemgr_Block_Expire_Cb cb_func, void *cb_data)
+{
+ uint32_t all_class = TIZEN_INPUT_DEVICE_MANAGER_CLAS_MOUSE |
+ TIZEN_INPUT_DEVICE_MANAGER_CLAS_KEYBOARD |
+ TIZEN_INPUT_DEVICE_MANAGER_CLAS_TOUCHSCREEN;
+
+ if (!(clas & all_class)) return EINA_FALSE;
+
+ if (e_devicemgr->block.internal_duration_timer)
+ ecore_timer_del(e_devicemgr->block.internal_duration_timer);
+ e_devicemgr->block.internal_duration_timer = ecore_timer_add(duration / 1000.0, _e_devicemgr_block_timer_internal, NULL);
+
+ e_devicemgr->block.internal_devtype |= clas;
+
+ e_devicemgr->block.internal_cb_func = cb_func;
+ e_devicemgr->block.internal_cb_data = cb_data;
+
+ return EINA_TRUE;
+}
+
+Eina_Bool
+e_devicemgr_block_remove_internal(E_Devicemgr_Block_Expire_Cb cb_func, void *cb_data)
+{
+ if ((e_devicemgr->block.internal_cb_func != cb_func) ||
+ (e_devicemgr->block.internal_cb_data != cb_data)) return EINA_FALSE;
+
+ e_devicemgr->block.internal_devtype = 0x0;
+ if (e_devicemgr->block.internal_duration_timer)
+ {
+ ecore_timer_del(e_devicemgr->block.internal_duration_timer);
+ e_devicemgr->block.internal_duration_timer = NULL;
+ }
+
+ e_devicemgr->block.internal_cb_func = NULL;
+ e_devicemgr->block.internal_cb_data = NULL;
+
+ return EINA_TRUE;
+}
int e_devicemgr_block_add(struct wl_client *client, struct wl_resource *resource, uint32_t clas, uint32_t duration);
int e_devicemgr_block_remove(struct wl_client *client);
+Eina_Bool e_devicemgr_block_add_internal(uint32_t clas, uint32_t duration, E_Devicemgr_Block_Expire_Cb cb_func, void *cb_data);
+Eina_Bool e_devicemgr_block_remove_internal(E_Devicemgr_Block_Expire_Cb cb_func, void *cb_data);
+
int e_devicemgr_inputgen_add(struct wl_client *client, struct wl_resource *resource, uint32_t clas, const char *name);
void e_devicemgr_inputgen_remove(struct wl_client *client, struct wl_resource *resource, uint32_t clas);
int e_devicemgr_inputgen_generate_key(struct wl_client *client, struct wl_resource *resource, const char *keyname, Eina_Bool pressed);