static void _cb_pointer_frame(void *data, struct wl_callback *callback, unsigned int timestamp EINA_UNUSED);
//
+static int _devicemgr_error = -1;
+
static unsigned int _timestamp_get()
{
struct timespec ts;
}
static void
-_ecore_wl2_input_device_manager_cb_error(void *data EINA_UNUSED, struct tizen_input_device_manager *tizen_input_device_manager EINA_UNUSED, uint32_t errorcode EINA_UNUSED)
+_ecore_wl2_input_device_manager_cb_error(void *data EINA_UNUSED, struct tizen_input_device_manager *tizen_input_device_manager EINA_UNUSED, uint32_t errorcode)
{
- ;
+ _devicemgr_error = errorcode;
}
static void
_ecore_wl2_input_device_manager_setup(Ecore_Wl2_Display *ewd, unsigned int id, unsigned int version EINA_UNUSED)
{
ewd->wl.tz_input_device_manager =
- wl_registry_bind(ewd->wl.registry, id, &tizen_input_device_manager_interface, 4);
+ wl_registry_bind(ewd->wl.registry, id, &tizen_input_device_manager_interface, 6);
tizen_input_device_manager_add_listener(ewd->wl.tz_input_device_manager,
&_tz_input_device_mgr_listener, ewd);
ecore_wl2_input_pointer_set(input, NULL, 0, 0);
}
}
+
+// TIZEN_ONLY(20230823) : add keyboard_grab/ungrab API
+EAPI Eina_Bool
+ecore_wl2_window_keyboard_grab(Ecore_Wl2_Window *win, unsigned int subtype)
+{
+ Ecore_Wl2_Display *ewd;
+ Ecore_Device_Subclass subclas = (Ecore_Device_Subclass)subtype;
+
+ if (!win || !win->surface) return EINA_FALSE;
+ ewd = win->display;
+ if (!ewd || !ewd->wl.tz_input_device_manager) return EINA_FALSE;
+
+ _devicemgr_error = -1;
+ if (subclas == ECORE_DEVICE_SUBCLASS_NONE)
+ {
+ tizen_input_device_manager_keyboard_grab(ewd->wl.tz_input_device_manager,
+ win->surface,
+ TIZEN_INPUT_DEVICE_MANAGER_SUBCLAS_NONE);
+ }
+ else if (subtype == ECORE_DEVICE_SUBCLASS_REMOCON)
+ {
+ tizen_input_device_manager_keyboard_grab(ewd->wl.tz_input_device_manager,
+ win->surface,
+ TIZEN_INPUT_DEVICE_MANAGER_SUBCLAS_REMOCON);
+ }
+ else if (subtype == ECORE_DEVICE_SUBCLASS_VIRTUAL_KEYBOARD)
+ {
+ tizen_input_device_manager_keyboard_grab(ewd->wl.tz_input_device_manager,
+ win->surface,
+ TIZEN_INPUT_DEVICE_MANAGER_SUBCLAS_VIRTUAL_KEYBOARD);
+ }
+ ecore_wl2_display_sync(ewd);
+
+ if (_devicemgr_error != TIZEN_INPUT_DEVICE_MANAGER_ERROR_NONE)
+ {
+ ERR("Keyboard grab failed. subtype: %d", subtype);
+ return EINA_FALSE;
+ }
+
+ INF("Keyboard grab succeeded. subtype: %d", subtype);
+ return EINA_TRUE;
+}
+
+EAPI Eina_Bool
+ecore_wl2_window_keyboard_ungrab(Ecore_Wl2_Window *win)
+{
+ Ecore_Wl2_Display *ewd;
+
+ if (!win || !win->surface) return EINA_FALSE;
+ ewd = win->display;
+ if (!ewd || !ewd->wl.tz_input_device_manager) return EINA_FALSE;
+
+ _devicemgr_error = -1;
+ tizen_input_device_manager_keyboard_ungrab(ewd->wl.tz_input_device_manager,
+ win->surface);
+ ecore_wl2_display_sync(ewd);
+
+ if (_devicemgr_error != TIZEN_INPUT_DEVICE_MANAGER_ERROR_NONE)
+ {
+ ERR("Keyboard ungrab failed.");
+ return EINA_FALSE;
+ }
+
+ INF("Keyboard ungrab succeeded.");
+ return EINA_TRUE;
+}
//