libei  0.2
A library for Emulated Input
libei.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2020 Red Hat, Inc.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 
25 #pragma once
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 #include <stdbool.h>
32 #include <stdint.h>
33 #include <stddef.h>
34 
60 struct ei;
61 
73 struct ei_device;
74 
88 struct ei_seat;
89 
98 struct ei_event;
99 
107 struct ei_keymap;
108 
128 struct ei_region;
129 
154 };
155 
178 };
179 
192 
194 };
195 
206 };
207 
218 
232 
240 
251 
263 
274 
286 
298 
314 
326 
342 
343  /* These events are only generated on a receiver ei context. */
351 
353 
357 };
358 
362 struct ei *
363 ei_new(void *user_data);
364 
382 struct ei *
383 ei_new_sender(void *user_data);
384 
402 struct ei *
403 ei_new_receiver(void *user_data);
404 
405 bool
406 ei_is_sender(struct ei *ei);
407 
413 };
414 
429 typedef void (*ei_log_handler)(struct ei *ei,
430  enum ei_log_priority priority,
431  const char *file, int lineno, const char *func,
432  const char *message,
433  bool is_continuation);
442 void
443 ei_log_set_handler(struct ei *ei, ei_log_handler log_handler);
444 
445 void
446 ei_log_set_priority(struct ei *ei, enum ei_log_priority priority);
447 
448 enum ei_log_priority
449 ei_log_get_priority(const struct ei *ei);
450 
463 void
464 ei_configure_name(struct ei * ei, const char *name);
465 
471 int
472 ei_property_set(struct ei *ei, const char *property, const char *value);
473 
500 int
501 ei_property_set_with_permissions(struct ei *ei, const char *property,
502  const char *value, uint32_t permission);
503 
509 uint32_t
510 ei_property_get_permissions(struct ei *ei, const char *property);
511 
516 const char *
517 ei_property_get(struct ei *ei, const char *property);
518 
538 int
539 ei_setup_backend_socket(struct ei *ei, const char *socketpath);
540 
558 int
559 ei_setup_backend_fd(struct ei *ei, int fd);
560 
566 int
568 
578 int
579 ei_setup_backend_portal_busname(struct ei *ei, const char *busname);
580 
587 struct ei *
588 ei_ref(struct ei *ei);
589 
597 struct ei *
598 ei_unref(struct ei *ei);
599 
605 void
606 ei_set_user_data(struct ei *ei, void *user_data);
607 
612 void *
614 
621 int
622 ei_get_fd(struct ei *ei);
623 
633 void
634 ei_dispatch(struct ei *ei);
635 
641 struct ei_event *
642 ei_get_event(struct ei *ei);
643 
660 struct ei_event *
661 ei_peek_event(struct ei *ei);
662 
672 struct ei_event *
673 ei_event_unref(struct ei_event *event);
674 
675 const char *
676 ei_seat_get_name(struct ei_seat *seat);
677 
683 bool
685  enum ei_device_capability cap);
686 
701 void
703  enum ei_device_capability cap);
704 
709 __attribute__((sentinel))
710 void
711 ei_seat_bind_capabilities(struct ei_seat *seat, ...);
712 
721 void
723  enum ei_device_capability cap);
724 
729 __attribute__((sentinel))
730 void
731 ei_seat_unbind_capabilities(struct ei_seat *seat, ...);
732 
733 
734 struct ei_seat *
735 ei_seat_ref(struct ei_seat *seat);
736 
737 struct ei_seat *
738 ei_seat_unref(struct ei_seat *seat);
739 
743 struct ei *
745 
749 enum ei_event_type
750 ei_event_get_type(struct ei_event *event);
751 
761 struct ei_device *
763 
767 uint64_t
769 
775 uint32_t
777 
783 uint32_t
785 
791 uint32_t
793 
799 uint32_t
801 
808 struct ei_device *
809 ei_device_ref(struct ei_device *device);
810 
818 struct ei_device *
819 ei_device_unref(struct ei_device *device);
820 
821 struct ei_seat *
823 
829 void
830 ei_seat_set_user_data(struct ei_seat *seat, void *user_data);
831 
836 void *
838 
844 void
845 ei_device_set_user_data(struct ei_device *device, void *user_data);
846 
851 void *
853 
854 
855 struct ei_keymap *
857 
861 size_t
863 
868 enum ei_keymap_type
869 ei_keymap_get_type(struct ei_keymap *keymap);
870 
876 int
877 ei_keymap_get_fd(struct ei_keymap *keymap);
878 
887 struct ei_device *
889 
896 struct ei_keymap *
897 ei_keymap_ref(struct ei_keymap *keymap);
898 
906 struct ei_keymap *
907 ei_keymap_unref(struct ei_keymap *keymap);
908 
909 void
910 ei_keymap_set_user_data(struct ei_keymap *keymap, void *user_data);
911 
912 void *
914 
932 void
933 ei_device_close(struct ei_device *device);
934 
938 const char *
940 
948 enum ei_device_type
949 ei_device_get_type(struct ei_device *device);
950 
955 bool
957  enum ei_device_capability cap);
958 
959 
979 struct ei_region *
980 ei_device_get_region(struct ei_device *device, size_t index);
981 
982 struct ei_region *
983 ei_region_ref(struct ei_region *region);
984 
985 struct ei_region *
986 ei_region_unref(struct ei_region *region);
987 
988 void
989 ei_region_set_user_data(struct ei_region *region, void *user_data);
990 
991 void *
993 
994 uint32_t
995 ei_region_get_x(struct ei_region *region);
996 
997 uint32_t
998 ei_region_get_y(struct ei_region *region);
999 
1000 uint32_t
1002 
1003 uint32_t
1005 
1010 bool
1011 ei_region_contains(struct ei_region *region, double x, double y);
1012 
1021 bool
1022 ei_region_convert_point(struct ei_region *region, double *x, double *y);
1023 
1091 double
1093 
1106 /* FIXME: the current API makes it impossible to know when the keymap has
1107  * been consumed so the file stays open forever.
1108  */
1109 struct ei_keymap *
1111 
1115 struct ei_device *
1117 
1121 struct ei *
1123 
1142 void
1144 
1149 void
1151 
1157 void
1158 ei_device_frame(struct ei_device *device);
1159 
1168 void
1169 ei_device_pointer_motion(struct ei_device *device, double x, double y);
1170 
1182 void
1184  double x, double y);
1185 
1197 void
1199  uint32_t button, bool is_press);
1200 
1216 void
1217 ei_device_pointer_scroll(struct ei_device *device, double x, double y);
1218 
1238 void
1239 ei_device_pointer_scroll_discrete(struct ei_device *device, int32_t x, int32_t y);
1240 
1266 void
1267 ei_device_pointer_scroll_stop(struct ei_device *device, bool stop_x, bool stop_y);
1268 
1293 void
1294 ei_device_pointer_scroll_cancel(struct ei_device *device, bool cancel_x, bool cancel_y);
1295 
1312 void
1313 ei_device_keyboard_key(struct ei_device *device, uint32_t keycode, bool is_press);
1314 
1323 struct ei_touch *
1325 
1337 void
1338 ei_touch_down(struct ei_touch *touch, double x, double y);
1339 
1343 void
1344 ei_touch_motion(struct ei_touch *touch, double x, double y);
1345 
1351 void
1352 ei_touch_up(struct ei_touch *touch);
1353 
1360 struct ei_touch *
1361 ei_touch_ref(struct ei_touch *touch);
1362 
1370 struct ei_touch *
1371 ei_touch_unref(struct ei_touch *touch);
1372 
1377 void
1378 ei_touch_set_user_data(struct ei_touch *touch, void *user_data);
1379 
1385 void *
1386 ei_touch_get_user_data(struct ei_touch *touch);
1387 
1391 struct ei_device *
1392 ei_touch_get_device(struct ei_touch *touch);
1393 
1403 struct ei_seat *
1405 
1410 const char *
1412 
1424 const char *
1426 
1437 uint32_t
1439 
1444 double
1446 
1451 double
1453 
1458 double
1460 
1465 double
1467 
1472 uint32_t
1474 
1479 bool
1481 
1486 double
1488 
1493 double
1495 
1500 bool
1502 
1507 bool
1509 
1514 int32_t
1516 
1521 int32_t
1523 
1528 uint32_t
1530 
1535 bool
1537 
1548 uint32_t
1550 
1556 double
1558 
1564 double
1566 
1571 #ifdef __cplusplus
1572 }
1573 #endif
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.