libei  1.2.0
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 
137 struct ei;
138 
150 struct ei_device;
151 
165 struct ei_seat;
166 
175 struct ei_event;
176 
184 struct ei_keymap;
185 
206 struct ei_region;
207 
233 };
234 
283 };
284 
295 };
296 
307 
321 
332 
344 
355 
367 
379 
395 
405 
429 
438 
447 
455 
486 
494 
521 };
522 
528 const char*
530 
534 struct ei *
535 ei_new(void *user_data);
536 
554 struct ei *
555 ei_new_sender(void *user_data);
556 
574 struct ei *
575 ei_new_receiver(void *user_data);
576 
583 struct ei *
584 ei_ref(struct ei *ei);
585 
593 struct ei *
594 ei_unref(struct ei *ei);
595 
601 void
602 ei_set_user_data(struct ei *ei, void *user_data);
603 
608 void *
609 ei_get_user_data(struct ei *ei);
610 
614 bool
615 ei_is_sender(struct ei *ei);
616 
625 };
626 
627 struct ei_log_context;
628 
633 unsigned int
634 ei_log_context_get_line(struct ei_log_context *ctx);
635 
640 const char *
641 ei_log_context_get_file(struct ei_log_context *ctx);
642 
647 const char *
648 ei_log_context_get_func(struct ei_log_context *ctx);
649 
667 typedef void (*ei_log_handler)(struct ei *ei,
668  enum ei_log_priority priority,
669  const char *message,
670  struct ei_log_context *context);
681 void
682 ei_log_set_handler(struct ei *ei, ei_log_handler log_handler);
683 
687 void
688 ei_log_set_priority(struct ei *ei, enum ei_log_priority priority);
689 
693 enum ei_log_priority
694 ei_log_get_priority(const struct ei *ei);
695 
704 typedef uint64_t (*ei_clock_now_func)(struct ei *ei);
705 
711 void
712 ei_clock_set_now_func(struct ei *, ei_clock_now_func func);
713 
726 void
727 ei_configure_name(struct ei * ei, const char *name);
728 
748 int
749 ei_setup_backend_socket(struct ei *ei, const char *socketpath);
750 
768 int
769 ei_setup_backend_fd(struct ei *ei, int fd);
770 
777 int
778 ei_get_fd(struct ei *ei);
779 
789 void
790 ei_dispatch(struct ei *ei);
791 
797 struct ei_event *
798 ei_get_event(struct ei *ei);
799 
816 struct ei_event *
817 ei_peek_event(struct ei *ei);
818 
826 uint64_t
827 ei_now(struct ei *ei);
828 
836 void
837 ei_seat_set_user_data(struct ei_seat *seat, void *user_data);
838 
845 void *
846 ei_seat_get_user_data(struct ei_seat *seat);
847 
851 const char *
852 ei_seat_get_name(struct ei_seat *seat);
853 
861 bool
862 ei_seat_has_capability(struct ei_seat *seat,
863  enum ei_device_capability cap);
864 
882 void
883 ei_seat_bind_capabilities(struct ei_seat *seat, ...)
884 __attribute__((sentinel));
885 
897 void
898 ei_seat_unbind_capabilities(struct ei_seat *seat, ...)
899 __attribute__((sentinel));
900 
901 
905 struct ei_seat *
906 ei_seat_ref(struct ei_seat *seat);
907 
911 struct ei_seat *
912 ei_seat_unref(struct ei_seat *seat);
913 
919 struct ei *
920 ei_seat_get_context(struct ei_seat *seat);
921 
931 struct ei_event *
932 ei_event_unref(struct ei_event *event);
933 
937 enum ei_event_type
938 ei_event_get_type(struct ei_event *event);
939 
949 struct ei_device *
950 ei_event_get_device(struct ei_event *event);
951 
961 uint64_t
962 ei_event_get_time(struct ei_event *event);
963 
972 struct ei_device *
973 ei_device_ref(struct ei_device *device);
974 
984 struct ei_device *
985 ei_device_unref(struct ei_device *device);
986 
990 struct ei_seat *
991 ei_device_get_seat(struct ei_device *device);
992 
1000 void
1001 ei_device_set_user_data(struct ei_device *device, void *user_data);
1002 
1009 void *
1010 ei_device_get_user_data(struct ei_device *device);
1011 
1018 uint32_t
1019 ei_device_get_width(struct ei_device *device);
1020 
1027 uint32_t
1028 ei_device_get_height(struct ei_device *device);
1029 
1035 size_t
1036 ei_keymap_get_size(struct ei_keymap *keymap);
1037 
1044 enum ei_keymap_type
1045 ei_keymap_get_type(struct ei_keymap *keymap);
1046 
1054 int
1055 ei_keymap_get_fd(struct ei_keymap *keymap);
1056 
1067 struct ei_device *
1068 ei_keymap_get_device(struct ei_keymap *keymap);
1069 
1078 struct ei_keymap *
1079 ei_keymap_ref(struct ei_keymap *keymap);
1080 
1090 struct ei_keymap *
1091 ei_keymap_unref(struct ei_keymap *keymap);
1092 
1096 void
1097 ei_keymap_set_user_data(struct ei_keymap *keymap, void *user_data);
1098 
1102 void *
1103 ei_keymap_get_user_data(struct ei_keymap *keymap);
1104 
1124 void
1125 ei_device_close(struct ei_device *device);
1126 
1132 const char *
1133 ei_device_get_name(struct ei_device *device);
1134 
1140 enum ei_device_type
1141 ei_device_get_type(struct ei_device *device);
1142 
1150 bool
1151 ei_device_has_capability(struct ei_device *device,
1152  enum ei_device_capability cap);
1153 
1154 
1176 struct ei_region *
1177 ei_device_get_region(struct ei_device *device, size_t index);
1178 
1187 struct ei_region *
1188 ei_device_get_region_at(struct ei_device *device, double x, double y);
1189 
1193 struct ei_region *
1194 ei_region_ref(struct ei_region *region);
1195 
1199 struct ei_region *
1200 ei_region_unref(struct ei_region *region);
1201 
1205 void
1206 ei_region_set_user_data(struct ei_region *region, void *user_data);
1207 
1211 void *
1212 ei_region_get_user_data(struct ei_region *region);
1213 
1217 uint32_t
1218 ei_region_get_x(struct ei_region *region);
1219 
1223 uint32_t
1224 ei_region_get_y(struct ei_region *region);
1225 
1229 uint32_t
1230 ei_region_get_width(struct ei_region *region);
1231 
1235 uint32_t
1236 ei_region_get_height(struct ei_region *region);
1237 
1265 const char *
1266 ei_region_get_mapping_id(struct ei_region *region);
1267 
1274 bool
1275 ei_region_contains(struct ei_region *region, double x, double y);
1276 
1287 bool
1288 ei_region_convert_point(struct ei_region *region, double *x, double *y);
1289 
1359 double
1360 ei_region_get_physical_scale(struct ei_region *region);
1361 
1376 /* FIXME: the current API makes it impossible to know when the keymap has
1377  * been consumed so the file stays open forever.
1378  */
1379 struct ei_keymap *
1381 
1387 struct ei_device *
1388 ei_keymap_get_context(struct ei_keymap *keymap);
1389 
1395 struct ei *
1396 ei_device_get_context(struct ei_device *device);
1397 
1427 void
1428 ei_device_start_emulating(struct ei_device *device, uint32_t sequence);
1429 
1438 void
1439 ei_device_stop_emulating(struct ei_device *device);
1440 
1457 void
1458 ei_device_frame(struct ei_device *device, uint64_t time);
1459 
1472 void
1473 ei_device_pointer_motion(struct ei_device *device, double x, double y);
1474 
1490 void
1492  double x, double y);
1493 
1508 void
1509 ei_device_button_button(struct ei_device *device,
1510  uint32_t button, bool is_press);
1511 
1530 void
1531 ei_device_scroll_delta(struct ei_device *device, double x, double y);
1532 
1555 void
1556 ei_device_scroll_discrete(struct ei_device *device, int32_t x, int32_t y);
1557 
1587 void
1588 ei_device_scroll_stop(struct ei_device *device, bool stop_x, bool stop_y);
1589 
1618 void
1619 ei_device_scroll_cancel(struct ei_device *device, bool cancel_x, bool cancel_y);
1620 
1641 void
1642 ei_device_keyboard_key(struct ei_device *device, uint32_t keycode, bool is_press);
1643 
1656 struct ei_touch *
1657 ei_device_touch_new(struct ei_device *device);
1658 
1672 void
1673 ei_touch_down(struct ei_touch *touch, double x, double y);
1674 
1680 void
1681 ei_touch_motion(struct ei_touch *touch, double x, double y);
1682 
1690 void
1691 ei_touch_up(struct ei_touch *touch);
1692 
1701 struct ei_touch *
1702 ei_touch_ref(struct ei_touch *touch);
1703 
1713 struct ei_touch *
1714 ei_touch_unref(struct ei_touch *touch);
1715 
1723 void
1724 ei_touch_set_user_data(struct ei_touch *touch, void *user_data);
1725 
1732 void *
1733 ei_touch_get_user_data(struct ei_touch *touch);
1734 
1740 struct ei_device *
1741 ei_touch_get_device(struct ei_touch *touch);
1742 
1752 struct ei_seat *
1753 ei_event_get_seat(struct ei_event *event);
1754 
1763 uint32_t
1765 
1773 uint32_t
1775 
1783 uint32_t
1785 
1793 uint32_t
1795 
1803 uint32_t
1805 
1806 
1813 double
1814 ei_event_pointer_get_dx(struct ei_event *event);
1815 
1822 double
1823 ei_event_pointer_get_dy(struct ei_event *event);
1824 
1831 double
1833 
1840 double
1842 
1849 uint32_t
1850 ei_event_button_get_button(struct ei_event *event);
1851 
1858 bool
1859 ei_event_button_get_is_press(struct ei_event *event);
1860 
1867 double
1868 ei_event_scroll_get_dx(struct ei_event *event);
1869 
1876 double
1877 ei_event_scroll_get_dy(struct ei_event *event);
1878 
1885 bool
1886 ei_event_scroll_get_stop_x(struct ei_event *event);
1887 
1894 bool
1895 ei_event_scroll_get_stop_y(struct ei_event *event);
1896 
1903 int32_t
1905 
1912 int32_t
1914 
1921 uint32_t
1922 ei_event_keyboard_get_key(struct ei_event *event);
1923 
1930 bool
1932 
1945 uint32_t
1946 ei_event_touch_get_id(struct ei_event *event);
1947 
1955 double
1956 ei_event_touch_get_x(struct ei_event *event);
1957 
1965 double
1966 ei_event_touch_get_y(struct ei_event *event);
1967 
1972 #ifdef __cplusplus
1973 }
1974 #endif
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.
void ei_region_set_user_data(struct ei_region *region, void *user_data)
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_device_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_SCROLL capability.
struct ei_touch * ei_touch_ref(struct ei_touch *touch)
Increase the refcount of this struct by one.
size_t ei_keymap_get_size(struct ei_keymap *keymap)
struct ei_keymap * ei_keymap_ref(struct ei_keymap *keymap)
Increase the refcount of this struct by one.
void * ei_device_get_user_data(struct ei_device *device)
Return the custom data pointer for this context.
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...
int ei_keymap_get_fd(struct ei_keymap *keymap)
Return a memmap-able file descriptor pointing to the keymap used by the device.
A rectangular region, defined by an x/y offset and a width and a height.
Definition: libei.h:184
double ei_event_scroll_get_dx(struct ei_event *event)
For an event of type EI_EVENT_SCROLL_DELTA return the x scroll distance in logical pixels or mm...
struct ei_device * ei_device_unref(struct ei_device *device)
Decrease the refcount of this struct by one.
void ei_device_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_SCROLL capability.
enum ei_keymap_type ei_keymap_get_type(struct ei_keymap *keymap)
Returns the type for this keymap.
"Hardware" frame event.
Definition: libei.h:404
void ei_device_close(struct ei_device *device)
Notify the server that the client is no longer interested in this device.
int ei_setup_backend_socket(struct ei *ei, const char *socketpath)
Set this ei context to use the socket backend.
A vertical and/or horizontal scroll event with a discrete range in logical scroll steps...
Definition: libei.h:485
ei_log_priority
Definition: libei.h:620
void ei_touch_up(struct ei_touch *touch)
Release this touch.
bool ei_event_button_get_is_press(struct ei_event *event)
For an event of type EI_EVENT_BUTTON_BUTTON return true if the event is a button press, false for a release.
struct ei_seat * ei_event_get_seat(struct ei_event *event)
Return the seat from this event.
struct ei_region * ei_region_unref(struct ei_region *region)
void ei_log_set_handler(struct ei *ei, ei_log_handler log_handler)
Change the log handler for this context.
const char * ei_log_context_get_func(struct ei_log_context *ctx)
struct ei * ei_new_sender(void *user_data)
Create a new sender ei context.
The server has removed a seat previously available to this client.
Definition: libei.h:343
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...
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, false for a release.
uint32_t ei_event_emulating_get_sequence(struct ei_event *event)
For an event of type EI_EVENT_DEVICE_START_EMULATING, return the sequence number set by the EIS imple...
struct ei_seat * ei_device_get_seat(struct ei_device *device)
Event for a single touch released from the device's logical surface.
Definition: libei.h:512
bool ei_device_has_capability(struct ei_device *device, enum ei_device_capability cap)
Return true if the device has the requested capability.
uint64_t ei_now(struct ei *ei)
double ei_event_scroll_get_dy(struct ei_event *event)
For an event of type EI_EVENT_SCROLL_DELTA return the y scroll distance in logical pixels or mm...
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...
A button press or release event.
Definition: libei.h:454
uint64_t(* ei_clock_now_func)(struct ei *ei)
Optional override function for ei_now().
Definition: libei.h:704
struct ei_seat * ei_seat_unref(struct ei_seat *seat)
The device can send relative motion events.
Definition: libei.h:262
int ei_setup_backend_fd(struct ei *ei, int fd)
Initialize the ei context on the given socket.
void ei_touch_set_user_data(struct ei_touch *touch, void *user_data)
Set a custom data pointer for this context.
uint32_t ei_event_button_get_button(struct ei_event *event)
For an event of type EI_EVENT_BUTTON_BUTTON return the button code as defined in linux/input-event-co...
Event for a single touch set down on the device's logical surface.
Definition: libei.h:504
struct ei_region * ei_device_get_region_at(struct ei_device *device, double x, double y)
Return the region that contains the given point x/y (in desktop-wide coordinates) or NULL if the coor...
The server stopped emulating events on this device, see EIS_EVENT_DEVICE_START_EMULATING.
Definition: libei.h:428
void ei_device_set_user_data(struct ei_device *device, void *user_data)
Set a custom data pointer for this context.
enum ei_event_type ei_event_get_type(struct ei_event *event)
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...
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.
void ei_touch_motion(struct ei_touch *touch, double x, double y)
Move this touch to the new coordinates.
Definition: libei.h:231
The device can send scroll events.
Definition: libei.h:278
void * ei_get_user_data(struct ei *ei)
Return the custom data pointer for this context.
struct ei * ei_unref(struct ei *ei)
Decrease the refcount of this struct by one.
const char * ei_event_type_to_string(enum ei_event_type)
This is a debugging helper to return a string of the name of the event type, or NULL if the event typ...
void ei_device_start_emulating(struct ei_device *device, uint32_t sequence)
Notify the EIS implementation that the given device is about to start sending events.
void * ei_touch_get_user_data(struct ei_touch *touch)
Return the custom data pointer for this context.
Definition: libei.h:623
struct ei * ei_new(void *user_data)
This is an alias for ei_new_sender.
uint32_t ei_device_get_height(struct ei_device *device)
Return the height of the device in mm if the device is of type EI_DEVICE_TYPE_PHYSICAL, otherwise zero.
void ei_clock_set_now_func(struct ei *, ei_clock_now_func func)
Override the function that returns the current time ei_now().
Definition: libei.h:621
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.
The device can send button events.
Definition: libei.h:282
struct ei_event * ei_get_event(struct ei *ei)
Return the next event from the event queue, removing it from the queue.
The server has added a device for this client.
Definition: libei.h:354
A libxkbcommon-compatible XKB keymap.
Definition: libei.h:294
The server has removed a device belonging to this client.
Definition: libei.h:366
uint32_t ei_region_get_y(struct ei_region *region)
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_event_get_device(struct ei_event *event)
Return the device from this event.
bool ei_is_sender(struct ei *ei)
Returns true if the context is was created with ei_new_sender() or false otherwise.
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.
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...
void * ei_region_get_user_data(struct ei_region *region)
const char * ei_device_get_name(struct ei_device *device)
A single device to generate input events from.
Definition: libei.h:137
The device can send absolute motion events.
Definition: libei.h:266
ei_device_type
The device type determines what the device represents.
Definition: libei.h:230
enum ei_log_priority ei_log_get_priority(const struct ei *ei)
void(* ei_log_handler)(struct ei *ei, enum ei_log_priority priority, const char *message, struct ei_log_context *context)
The log handler for library logging.
Definition: libei.h:667
The server has changed the modifier state on the device's keymap.
Definition: libei.h:394
The device can send touch events.
Definition: libei.h:274
void ei_device_button_button(struct ei_device *device, uint32_t button, bool is_press)
Generate a button event on a device with the EI_DEVICE_CAP_BUTTON capability.
void ei_log_set_priority(struct ei *ei, enum ei_log_priority priority)
An keymap for a device with the EI_DEVICE_CAP_KEYBOARD capability.
Definition: libei.h:175
The server has added a seat available to this client.
Definition: libei.h:331
struct ei * ei_device_get_context(struct ei_device *device)
Return the struct ei context this device is associated with.
The main context to interact with libei.
Definition: libei.h:624
uint32_t ei_region_get_x(struct ei_region *region)
struct ei_seat * ei_seat_ref(struct ei_seat *seat)
const char * ei_log_context_get_file(struct ei_log_context *ctx)
uint64_t ei_event_get_time(struct ei_event *event)
Return the time for the event of type EI_EVENT_FRAME in microseconds.
ei_event_type
Definition: libei.h:297
double ei_region_get_physical_scale(struct ei_region *region)
Return the physical scale for this region.
struct ei_keymap * ei_device_keyboard_get_keymap(struct ei_device *device)
Return the keymap for this device or NULL.
int32_t ei_event_scroll_get_discrete_dy(struct ei_event *event)
For an event of type EI_EVENT_SCROLL_DISCRETE return the y scroll distance in fractions or multiples ...
A logical seat for a group of devices.
Definition: libei.h:150
struct ei_event * ei_event_unref(struct ei_event *event)
Release resources associated with this event.
struct ei * ei_ref(struct ei *ei)
Increase the refcount of this struct by one.
void * ei_keymap_get_user_data(struct ei_keymap *keymap)
An ongoing scroll sequence stopped.
Definition: libei.h:470
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...
void ei_device_frame(struct ei_device *device, uint64_t time)
Generate a frame event to group the current set of events into a logical hardware event...
struct ei_device * ei_touch_get_device(struct ei_touch *touch)
A vertical and/or horizontal scroll event with logical-pixels or mm precision, depending on the devic...
Definition: libei.h:463
struct ei_region * ei_region_ref(struct ei_region *region)
void ei_device_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_SCROLL capability.
void ei_dispatch(struct ei *ei)
Main event dispatching function.
The server has disconnected this client - all resources left to reference this server are now obsolet...
Definition: libei.h:320
ei_device_capability
The set of supported capabilities.
Definition: libei.h:258
uint32_t ei_region_get_height(struct ei_region *region)
bool ei_event_scroll_get_stop_y(struct ei_event *event)
For an event of type EI_EVENT_SCROLL_STOP return whether the y axis has stopped scrolling.
The server has approved the connection to this client.
Definition: libei.h:306
unsigned int ei_log_context_get_line(struct ei_log_context *ctx)
bool ei_event_scroll_get_stop_x(struct ei_event *event)
For an event of type EI_EVENT_SCROLL_CANCEL return whether the x axis has cancelled scrolling...
struct ei_keymap * ei_keymap_unref(struct ei_keymap *keymap)
Decrease the refcount of this struct by one.
Any events sent from this device will be discarded until the next resume.
Definition: libei.h:374
The server is about to send events for a device.
Definition: libei.h:420
Event for a single currently-down touch changing position (or other properties).
Definition: libei.h:520
An ongoing scroll sequence was cancelled.
Definition: libei.h:477
void ei_set_user_data(struct ei *ei, void *user_data)
Set a custom data pointer for this context.
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...
int32_t ei_event_scroll_get_discrete_dx(struct ei_event *event)
For an event of type EI_EVENT_SCROLL_DISCRETE return the x scroll distance in fractions or multiples ...
const char * ei_region_get_mapping_id(struct ei_region *region)
Get the unique identifier (representing an external resource) that is attached to this region...
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...
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.
int ei_get_fd(struct ei *ei)
libei keeps a single file descriptor for all events.
uint32_t ei_region_get_width(struct ei_region *region)
struct ei * ei_new_receiver(void *user_data)
Create a new receiver ei context.
void ei_keymap_set_user_data(struct ei_keymap *keymap, void *user_data)
Definition: libei.h:622
struct ei_device * ei_device_ref(struct ei_device *device)
Increase the refcount of this struct by one.
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.
void ei_seat_bind_capabilities(struct ei_seat *seat,...) __attribute__((sentinel))
Bind this client to the given seat capabilities, terminated by NULL.
An absolute motion event with absolute position within the device's regions or size, depending on the device type.
Definition: libei.h:446
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...
The client may send events.
Definition: libei.h:378
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.
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, return the tracking ID of the touch.
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...
struct ei_touch * ei_touch_unref(struct ei_touch *touch)
Decrease the refcount of this struct by one.
void ei_seat_set_user_data(struct ei_seat *seat, void *user_data)
Set a custom data pointer for this context.
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.
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...
const char * ei_seat_get_name(struct ei_seat *seat)
A key press or release event.
Definition: libei.h:493
void ei_device_scroll_delta(struct ei_device *device, double x, double y)
Generate a smooth (pixel-precise) scroll event on a device with the EI_DEVICE_CAP_SCROLL capability...
Definition: libei.h:232
void * ei_seat_get_user_data(struct ei_seat *seat)
Return the custom data pointer for this context.
The device can send keyboard events.
Definition: libei.h:270
uint32_t ei_device_get_width(struct ei_device *device)
Return the width of the device in mm if the device is of type EI_DEVICE_TYPE_PHYSICAL, otherwise zero.
A relative motion event with delta coordinates in logical pixels or mm, depending on the device type...
Definition: libei.h:437
void ei_seat_unbind_capabilities(struct ei_seat *seat,...) __attribute__((sentinel))
Unbind a seat's capabilities, terminatd by NULL.
void ei_configure_name(struct ei *ei, const char *name)
Set the name for this client.
An event received from the EIS implementation.
Definition: libei.h:165
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...
enum ei_device_type ei_device_get_type(struct ei_device *device)
struct ei * ei_seat_get_context(struct ei_seat *seat)
Return the struct ei context this seat is associated with.
struct ei_device * ei_keymap_get_context(struct ei_keymap *keymap)
Return the struct ei_device this keymap is associated with.
ei_keymap_type
The set of supported keymap types for a struct ei_keymap.
Definition: libei.h:290