431 const char *file,
int lineno,
const char *func,
433 bool is_continuation);
502 const char *value, uint32_t permission);
711 ei_seat_bind_capabilities(
struct ei_seat *seat, ...);
731 ei_seat_unbind_capabilities(
struct ei_seat *seat, ...);
1184 double x,
double y);
1199 uint32_t button,
bool is_press);
struct ei_event * ei_peek_event(struct ei *ei)
Returns the next event in the internal event queue (or NULL) without removing that event from the que...
void ei_device_stop_emulating(struct ei_device *device)
Notify the EIS implementation that the given device is no longer sending events.
uint32_t ei_event_touch_get_id(struct ei_event *event)
For an event of type EI_EVENT_TOUCH_DOWN, EI_EVENT_TOUCH_MOTION, or EI_EVENT_TOUCH_UP,...
void ei_seat_set_user_data(struct ei_seat *seat, void *user_data)
Set a custom data pointer for this context.
int ei_setup_backend_socket(struct ei *ei, const char *socketpath)
Set this ei context to use the socket backend.
struct ei_seat * ei_event_get_seat(struct ei_event *event)
Return the seat from this event.
void ei_region_set_user_data(struct ei_region *region, void *user_data)
int ei_keymap_get_fd(struct ei_keymap *keymap)
Return a memmap-able file descriptor pointing to the keymap used by the device.
struct ei_device * ei_device_unref(struct ei_device *device)
Decrease the refcount of this struct by one.
struct ei * ei_seat_get_context(struct ei_seat *seat)
Return the struct EI - the client implementation context this seat is associated with.
bool ei_is_sender(struct ei *ei)
struct ei_event * ei_get_event(struct ei *ei)
Return the next event from the event queue, removing it from the queue.
struct ei_region * ei_region_unref(struct ei_region *region)
bool ei_event_pointer_get_scroll_stop_y(struct ei_event *event)
For an event of type EI_EVENT_POINTER_SCROLL_STOP return whether the y axis has stopped scrolling.
void ei_device_set_user_data(struct ei_device *device, void *user_data)
Set a custom data pointer for this context.
void ei_touch_down(struct ei_touch *touch, double x, double y)
This function can only be called once on an ei_touch object.
void * ei_keymap_get_user_data(struct ei_keymap *keymap)
int ei_property_set(struct ei *ei, const char *property, const char *value)
See ei_property_set_with_permissions(), but the permissions are left as-is.
uint32_t ei_event_pointer_get_button(struct ei_event *event)
For an event of type EI_EVENT_POINTER_BUTTON return the button code as defined in linux/input-event-c...
enum ei_device_type ei_device_get_type(struct ei_device *device)
The device type of the device is determined by the type of the ei context.
double ei_region_get_physical_scale(struct ei_region *region)
Return the physical scale for this region.
struct ei * ei_new_sender(void *user_data)
Create a new sender ei context.
int ei_property_set_with_permissions(struct ei *ei, const char *property, const char *value, uint32_t permission)
Change, create or delete a property.
void ei_seat_unbind_capability(struct ei_seat *seat, enum ei_device_capability cap)
Unbind a seat's capability.
size_t ei_keymap_get_size(struct ei_keymap *keymap)
struct ei_touch * ei_touch_unref(struct ei_touch *touch)
Decrease the refcount of this struct by one.
enum ei_log_priority ei_log_get_priority(const struct ei *ei)
void ei_device_pointer_motion_absolute(struct ei_device *device, double x, double y)
Generate an absolute motion event on a device with the EI_DEVICE_CAP_POINTER_ABSOLUTE capability.
bool ei_event_pointer_get_button_is_press(struct ei_event *event)
For an event of type EI_EVENT_POINTER_BUTTON return true if the event is a button press,...
void ei_touch_up(struct ei_touch *touch)
Release this touch.
struct ei_touch * ei_device_touch_new(struct ei_device *device)
Initiate a new touch on a device with the EI_DEVICE_CAP_TOUCH capability.
void ei_device_close(struct ei_device *device)
Notify the server that the client is no longer interested in this device.
double ei_event_pointer_get_absolute_x(struct ei_event *event)
For an event of type EI_EVENT_POINTER_MOTION_ABSOLUTE return the x position in logical pixels or mm,...
uint32_t ei_region_get_width(struct ei_region *region)
void ei_dispatch(struct ei *ei)
Main event dispatching function.
enum ei_keymap_type ei_keymap_get_type(struct ei_keymap *keymap)
Returns the type for this keymap.
void ei_device_pointer_scroll_stop(struct ei_device *device, bool stop_x, bool stop_y)
Generate a scroll stop event on a device with the EI_DEVICE_CAP_POINTER_ABSOLUTE or EI_DEVICE_CAP_POI...
double ei_event_pointer_get_scroll_y(struct ei_event *event)
For an event of type EI_EVENT_POINTER_SCROLL return the y scroll distance in logical pixels or mm,...
void(* ei_log_handler)(struct ei *ei, enum ei_log_priority priority, const char *file, int lineno, const char *func, const char *message, bool is_continuation)
The log handler for library logging.
Definition: libei.h:429
struct ei_device * ei_keymap_get_device(struct ei_keymap *keymap)
Return the device this keymap belongs to, or NULL if it has not yet been assigned to a device.
ei_property_permission
A set of masks for operations permitted on properties.
Definition: libei.h:187
void ei_seat_bind_capability(struct ei_seat *seat, enum ei_device_capability cap)
Bind this client to the given seat capability.
void * ei_get_user_data(struct ei *ei)
Return the custom data pointer for this context.
int ei_get_fd(struct ei *ei)
libei keeps a single file descriptor for all events.
void * ei_touch_get_user_data(struct ei_touch *touch)
Set a custom data pointer for this context.
bool ei_event_pointer_get_scroll_stop_x(struct ei_event *event)
For an event of type EI_EVENT_POINTER_SCROLL_CANCEL return whether the x axis has cancelled scrolling...
void * ei_device_get_user_data(struct ei_device *device)
Return the custom data pointer for this context.
void ei_set_user_data(struct ei *ei, void *user_data)
Set a custom data pointer for this context.
__attribute__((sentinel)) void ei_seat_bind_capabilities(struct ei_seat *seat
Same as ei_seat_bind_capability() but takes multiple capabilities, terminated by NULL.
struct ei_region * ei_region_ref(struct ei_region *region)
const char * ei_seat_get_name(struct ei_seat *seat)
bool ei_seat_has_capability(struct ei_seat *seat, enum ei_device_capability cap)
Return true if the capabilitiy is available on this seat or false otherwise.
struct ei * ei_new(void *user_data)
This is an alias for ei_new_sender.
ei_device_type
The device type determines what the device represents.
Definition: libei.h:151
void ei_device_pointer_scroll(struct ei_device *device, double x, double y)
Generate a smooth (pixel-precise) scroll event on a device with the EI_DEVICE_CAP_POINTER_ABSOLUTE or...
ei_log_priority
Definition: libei.h:408
const char * ei_property_get(struct ei *ei, const char *property)
Return the value of the given property or NULL if the property is not set or does not have the EI_PRO...
struct ei * ei_new_receiver(void *user_data)
Create a new receiver ei context.
struct ei * ei_ref(struct ei *ei)
Increase the refcount of this struct by one.
double ei_event_pointer_get_scroll_x(struct ei_event *event)
For an event of type EI_EVENT_POINTER_SCROLL return the x scroll distance in logical pixels or mm,...
uint32_t ei_event_property_get_permissions(struct ei_event *event)
For an event of type EI_EVENT_PROPERTY, get the permissions of the property (at the time of the event...
uint32_t ei_region_get_y(struct ei_region *region)
uint32_t ei_event_keyboard_get_xkb_mods_locked(struct ei_event *event)
For an event of type EI_EVENT_KEYBOARD_MODIFIERS, get the mask of currently logically locked modifier...
bool ei_region_contains(struct ei_region *region, double x, double y)
Return true if the point x/y (in desktop-wide coordinates) is within region.
int32_t ei_event_pointer_get_scroll_discrete_x(struct ei_event *event)
For an event of type EI_EVENT_POINTER_SCROLL_DISCRETE return the x scroll distance in fractions or mu...
uint32_t ei_event_keyboard_get_key(struct ei_event *event)
For an event of type EI_EVENT_KEYBOARD_KEY return the key code (as defined in include/linux/input-eve...
struct ei_device * ei_touch_get_device(struct ei_touch *touch)
double ei_event_touch_get_x(struct ei_event *event)
For an event of type EI_EVENT_TOUCH_DOWN, or EI_EVENT_TOUCH_MOTION, return the x coordinate of the to...
struct ei_seat * ei_seat_ref(struct ei_seat *seat)
void ei_device_pointer_button(struct ei_device *device, uint32_t button, bool is_press)
Generate a button event on a device with the EI_DEVICE_CAP_POINTER_ABSOLUTE or EI_DEVICE_CAP_POINTER ...
uint32_t ei_region_get_x(struct ei_region *region)
int ei_setup_backend_fd(struct ei *ei, int fd)
Initialize the ei context on the given socket.
uint32_t ei_event_keyboard_get_xkb_mods_depressed(struct ei_event *event)
For an event of type EI_EVENT_KEYBOARD_MODIFIERS, get the mask of currently logically pressed-down mo...
ei_keymap_type
The set of supported keymap types for a struct ei_keymap.
Definition: libei.h:201
void ei_device_frame(struct ei_device *device)
Generate a frame event to group the current set of events into a logical hardware event.
const char * ei_event_property_get_value(struct ei_event *event)
For an event of type EI_EVENT_PROPERTY, get the new property value (at the time of the event).
void ei_touch_motion(struct ei_touch *touch, double x, double y)
Move this touch to the new coordinates.
int ei_setup_backend_portal(struct ei *ei)
Connect to the org.freedesktop.portal.Desktop portal.
void ei_device_keyboard_key(struct ei_device *device, uint32_t keycode, bool is_press)
Generate a key event on a device with the EI_DEVICE_CAP_KEYBOARD capability.
void ei_device_start_emulating(struct ei_device *device)
Notify the EIS implementation that the given device is about to start sending events.
double ei_event_touch_get_y(struct ei_event *event)
For an event of type EI_EVENT_TOUCH_DOWN, or EI_EVENT_TOUCH_MOTION, return the y coordinate of the to...
struct ei_seat * ei_device_get_seat(struct ei_device *device)
double ei_event_pointer_get_dy(struct ei_event *event)
For an event of type EI_EVENT_POINTER_MOTION return the relative y movement in logical pixels or mm,...
struct ei_touch * ei_touch_ref(struct ei_touch *touch)
Increase the refcount of this struct by one.
struct ei_keymap * ei_keymap_unref(struct ei_keymap *keymap)
Decrease the refcount of this struct by one.
uint64_t ei_event_get_time(struct ei_event *event)
void * ei_region_get_user_data(struct ei_region *region)
ei_device_capability
The set of supported capabilities.
Definition: libei.h:173
void ei_device_pointer_scroll_cancel(struct ei_device *device, bool cancel_x, bool cancel_y)
Generate a scroll cancel event on a device with the EI_DEVICE_CAP_POINTER_ABSOLUTE or EI_DEVICE_CAP_P...
bool ei_device_has_capability(struct ei_device *device, enum ei_device_capability cap)
Return true if the device has the requested capability.
struct ei * ei_unref(struct ei *ei)
Decrease the refcount of this struct by one.
struct ei_device * ei_device_ref(struct ei_device *device)
Increase the refcount of this struct by one.
struct ei_device * ei_event_get_device(struct ei_event *event)
Return the device from this event.
void * ei_seat_get_user_data(struct ei_seat *seat)
Return the custom data pointer for this context.
bool ei_region_convert_point(struct ei_region *region, double *x, double *y)
Convert the point x/y in a desktop-wide coordinate system into the corresponding point relative to th...
enum ei_event_type ei_event_get_type(struct ei_event *event)
const char * ei_device_get_name(struct ei_device *device)
struct ei_seat * ei_seat_unref(struct ei_seat *seat)
struct ei_keymap * ei_device_keyboard_get_keymap(struct ei_device *device)
Return the keymap for this device or NULL.
void ei_log_set_priority(struct ei *ei, enum ei_log_priority priority)
int ei_setup_backend_portal_busname(struct ei *ei, const char *busname)
Connect to an org.freedesktop.portal.Desktop implementation on the given busname.
ei_event_type
Definition: libei.h:208
void ei_keymap_set_user_data(struct ei_keymap *keymap, void *user_data)
struct ei * ei_device_get_context(struct ei_device *device)
Return the struct EI - the client implementation context this device is associated with.
uint32_t ei_property_get_permissions(struct ei *ei, const char *property)
Return the permissions mask for the given property.
struct ei_device * ei_keymap_get_context(struct ei_keymap *keymap)
Return the struct ei_device this keymap is associated with.
uint32_t ei_event_keyboard_get_xkb_mods_latched(struct ei_event *event)
For an event of type EI_EVENT_KEYBOARD_MODIFIERS, get the mask of currently logically latched modifie...
int32_t ei_event_pointer_get_scroll_discrete_y(struct ei_event *event)
For an event of type EI_EVENT_POINTER_SCROLL_DISCRETE return the y scroll distance in fractions or mu...
uint32_t ei_region_get_height(struct ei_region *region)
struct ei_region * ei_device_get_region(struct ei_device *device, size_t index)
Obtain a region from a device of type EI_DEVICE_TYPE_VIRTUAL.
double ei_event_pointer_get_dx(struct ei_event *event)
For an event of type EI_EVENT_POINTER_MOTION return the relative x movement in logical pixels or mm,...
const char * ei_event_property_get_name(struct ei_event *event)
For an event of type EI_EVENT_PROPERTY, get the property name that has changed.
struct ei_keymap * ei_keymap_ref(struct ei_keymap *keymap)
Increase the refcount of this struct by one.
void ei_device_pointer_motion(struct ei_device *device, double x, double y)
Generate a relative motion event on a device with the EI_DEVICE_CAP_POINTER capability.
void ei_configure_name(struct ei *ei, const char *name)
Set the name for this client.
struct ei_event * ei_event_unref(struct ei_event *event)
Release resources associated with this event.
void ei_device_pointer_scroll_discrete(struct ei_device *device, int32_t x, int32_t y)
Generate a discrete scroll event on a device with the EI_DEVICE_CAP_POINTER_ABSOLUTE or EI_DEVICE_CAP...
void ei_touch_set_user_data(struct ei_touch *touch, void *user_data)
Return the custom data pointer for this context.
uint32_t ei_event_keyboard_get_xkb_group(struct ei_event *event)
For an event of type EI_EVENT_KEYBOARD_MODIFIERS, get the logical group state.
double ei_event_pointer_get_absolute_y(struct ei_event *event)
For an event of type EI_EVENT_POINTER_MOTION_ABSOLUTE return the y position in logical pixels or mm,...
struct ei_keymap * ei_device_get_keymap(struct ei_device *device)
bool ei_event_keyboard_get_key_is_press(struct ei_event *event)
For an event of type EI_EVENT_KEYBOARD_KEY return true if the event is a key down,...
void ei_log_set_handler(struct ei *ei, ei_log_handler log_handler)
Change the log handler for this context.
@ EI_PROPERTY_PERM_ALL
Definition: libei.h:193
@ EI_PROPERTY_PERM_DELETE
Definition: libei.h:191
@ EI_PROPERTY_PERM_WRITE
Definition: libei.h:190
@ EI_PROPERTY_PERM_READ
Definition: libei.h:189
@ EI_PROPERTY_PERM_NONE
Definition: libei.h:188
@ EI_DEVICE_TYPE_PHYSICAL
Definition: libei.h:153
@ EI_DEVICE_TYPE_VIRTUAL
Definition: libei.h:152
@ EI_LOG_PRIORITY_INFO
Definition: libei.h:410
@ EI_LOG_PRIORITY_DEBUG
Definition: libei.h:409
@ EI_LOG_PRIORITY_WARNING
Definition: libei.h:411
@ EI_LOG_PRIORITY_ERROR
Definition: libei.h:412
@ EI_KEYMAP_TYPE_XKB
A libxkbcommon-compatible XKB keymap.
Definition: libei.h:205
@ EI_DEVICE_CAP_POINTER
Definition: libei.h:174
@ EI_DEVICE_CAP_POINTER_ABSOLUTE
Definition: libei.h:175
@ EI_DEVICE_CAP_TOUCH
Definition: libei.h:177
@ EI_DEVICE_CAP_KEYBOARD
Definition: libei.h:176
@ EI_EVENT_SEAT_REMOVED
The server has removed a seat previously available to this client.
Definition: libei.h:262
@ EI_EVENT_POINTER_MOTION_ABSOLUTE
Definition: libei.h:345
@ EI_EVENT_POINTER_MOTION
Definition: libei.h:344
@ EI_EVENT_DEVICE_START_EMULATING
The server is about to send events for a device.
Definition: libei.h:340
@ EI_EVENT_SEAT_ADDED
The server has added a seat available to this client.
Definition: libei.h:250
@ EI_EVENT_POINTER_SCROLL
Definition: libei.h:347
@ EI_EVENT_FRAME
"Hardware" frame event.
Definition: libei.h:325
@ EI_EVENT_PROPERTY
The server has added, removed, or changed a property.
Definition: libei.h:239
@ EI_EVENT_POINTER_BUTTON
Definition: libei.h:346
@ EI_EVENT_POINTER_SCROLL_STOP
Definition: libei.h:348
@ EI_EVENT_DEVICE_REMOVED
The server has removed a device belonging to this client.
Definition: libei.h:285
@ EI_EVENT_DEVICE_RESUMED
The client may send events.
Definition: libei.h:297
@ EI_EVENT_DEVICE_ADDED
The server has added a device for this client.
Definition: libei.h:273
@ EI_EVENT_TOUCH_DOWN
Definition: libei.h:354
@ EI_EVENT_DEVICE_PAUSED
Any events sent from this device will be discarded until the next resume.
Definition: libei.h:293
@ EI_EVENT_POINTER_SCROLL_DISCRETE
Definition: libei.h:350
@ EI_EVENT_CONNECT
The server has approved the connection to this client.
Definition: libei.h:217
@ EI_EVENT_DEVICE_STOP_EMULATING
Definition: libei.h:341
@ EI_EVENT_TOUCH_UP
Definition: libei.h:355
@ EI_EVENT_KEYBOARD_KEY
Definition: libei.h:352
@ EI_EVENT_TOUCH_MOTION
Definition: libei.h:356
@ EI_EVENT_DISCONNECT
The server has disconnected this client - all resources left to reference this server are now obsolet...
Definition: libei.h:231
@ EI_EVENT_POINTER_SCROLL_CANCEL
Definition: libei.h:349
@ EI_EVENT_KEYBOARD_MODIFIERS
The server has changed the modifier state on the device's keymap.
Definition: libei.h:313
A single device to generate input events from.
Definition: libei.h:60
An event received from the EIS implementation.
Definition: libei.h:88
An keymap for a device with the EI_DEVICE_CAP_KEYBOARD capability.
Definition: libei.h:98
A rectangular region, defined by an x/y offset and a width and a height.
Definition: libei.h:107
A logical seat for a group of devices.
Definition: libei.h:73
The main context to interact with libei.