return EINA_TRUE;
}
+
+static E_Input_Evdev *
+_e_input_device_find_by_path_cap(E_Input_Device *dev, const char *path, E_Input_Seat_Capabilities caps)
+{
+ E_Input_Seat *seat;
+ E_Input_Evdev *edev = NULL;
+ Eina_List *l, *ll;
+ Eina_Bool found = EINA_FALSE;
+
+ if (!dev)
+ dev = _e_input_device_default_get();
+
+ EINA_SAFETY_ON_TRUE_RETURN_VAL(!dev, EINA_FALSE);
+ EINA_SAFETY_ON_TRUE_RETURN_VAL(!path, EINA_FALSE);
+ EINA_LIST_FOREACH(dev->seats, l, seat)
+ {
+ EINA_LIST_FOREACH(seat->devices, ll, edev)
+ {
+ if (!e_util_strcmp(edev->path, path) &&
+ (!caps || (caps & edev->caps)))
+ {
+ found = EINA_TRUE;
+ break;
+ }
+ }
+ if (found) break;
+ }
+
+ if (!found || !edev)
+ {
+ ERR("Failed to find input device: %s", path);
+ return NULL;
+ }
+
+ return edev;
+}
+
+E_API Eina_Bool
+e_input_device_keyboard_has_key(E_Input_Device *dev, const char *device_path, uint32_t code)
+{
+ E_Input_Evdev *edev = NULL;
+ Eina_Bool ret = EINA_FALSE;
+
+ edev = _e_input_device_find_by_path_cap(dev, device_path, E_INPUT_SEAT_KEYBOARD);
+ if (edev)
+ ret = (libinput_device_keyboard_has_key(edev->device, code) == 1);
+ INF("device(%s) keyboard_has_key(%d) returns %s", device_path, code, ret ? "True" : "False");
+
+ return ret;
+}
E_API Eina_Bool e_input_device_pointer_warp(E_Input_Device *dev, int x, int y);
E_API Eina_Bool e_input_device_mouse_accel_speed_set(E_Input_Device *dev, double speed);
E_API Eina_Bool e_input_device_mouse_accel_enable_set(const char *device_name, Eina_Bool enable);
+E_API Eina_Bool e_input_device_keyboard_has_key(E_Input_Device *dev, const char *device_path, uint32_t code);
E_API unsigned int e_input_touch_max_count_get();