libei  1.6.0
A library for Emulated Input
libeis.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 <stddef.h>
33 #include <stdint.h>
34 #include <sys/types.h>
35 
124 struct eis;
128 struct eis_client;
132 struct eis_device;
136 struct eis_seat;
140 struct eis_event;
144 struct eis_keymap;
148 struct eis_touch;
149 
158 struct eis_ping;
159 
188 struct eis_region;
189 
213 
229 };
230 
237 };
238 
261 
268 
274 
288 
296 
301 
315 
327 
349 
350  /* These events are only generated on a receiving EIS context */
351 
384 
389 
407 
414 
421 };
422 
428 const char *eis_event_type_to_string(enum eis_event_type);
429 
433 struct eis *
434 eis_new(void *user_data);
435 
447 enum eis_flag {
459 };
460 
480 int
481 eis_set_flag(struct eis *eis, enum eis_flag flag);
482 
491 };
492 
496 struct eis_log_context;
497 
502 unsigned int
503 eis_log_context_get_line(struct eis_log_context *ctx);
504 
509 const char *
510 eis_log_context_get_file(struct eis_log_context *ctx);
511 
516 const char *
517 eis_log_context_get_func(struct eis_log_context *ctx);
518 
531 typedef void (*eis_log_handler)(struct eis *eis,
532  enum eis_log_priority priority,
533  const char *message,
534  struct eis_log_context *ctx);
545 void
546 eis_log_set_handler(struct eis *eis, eis_log_handler log_handler);
547 
551 void
552 eis_log_set_priority(struct eis *eis, enum eis_log_priority priority);
553 
557 enum eis_log_priority
558 eis_log_get_priority(const struct eis *eis);
559 
568 typedef uint64_t (*eis_clock_now_func)(struct eis *eis);
569 
575 void
576 eis_clock_set_now_func(struct eis *, eis_clock_now_func func);
577 
578 struct eis *
579 eis_ref(struct eis *eis);
580 
581 struct eis *
582 eis_unref(struct eis *eis);
583 
584 void *
585 eis_get_user_data(struct eis *eis);
586 
587 void
588 eis_set_user_data(struct eis *eis, void *user_data);
589 
598 int
599 eis_setup_backend_fd(struct eis *ctx);
600 
606 int
607 eis_backend_fd_add_client(struct eis *ctx);
608 
618 int
619 eis_setup_backend_socket(struct eis *ctx, const char *path);
620 
629 pid_t
631 
638 int
639 eis_get_fd(struct eis *eis);
640 
650 void
651 eis_dispatch(struct eis *eis);
652 
665 uint64_t
666 eis_ping_get_id(struct eis_ping *ping);
667 
676 struct eis_ping *
678 
688 struct eis_ping *
690 
698 void
699 eis_ping_set_user_data(struct eis_ping *eis_ping, void *user_data);
700 
707 void *
709 
722 void
723 eis_ping(struct eis_ping *ping);
724 
735 struct eis_event *
736 eis_get_event(struct eis *eis);
737 
754 struct eis_event *
755 eis_peek_event(struct eis *eis);
756 
765 struct eis_event *
766 eis_event_ref(struct eis_event *event);
767 
777 struct eis_event *
778 eis_event_unref(struct eis_event *event);
779 
780 enum eis_event_type
781 eis_event_get_type(struct eis_event *event);
782 
783 struct eis_client *
784 eis_event_get_client(struct eis_event *event);
785 
786 struct eis_seat *
787 eis_event_get_seat(struct eis_event *event);
788 
798 struct eis_ping *
799 eis_event_pong_get_ping(struct eis_event *event);
800 
809 bool
811 
818 struct eis_device *
819 eis_event_get_device(struct eis_event *event);
820 
830 uint64_t
831 eis_event_get_time(struct eis_event *event);
832 
842 struct eis_ping *
843 eis_client_new_ping(struct eis_client *client);
844 
845 struct eis_client *
846 eis_client_ref(struct eis_client *client);
847 
848 struct eis_client *
849 eis_client_unref(struct eis_client *client);
850 
851 void *
853 
854 void
855 eis_client_set_user_data(struct eis_client *eis_client, void *user_data);
856 
857 struct eis *
858 eis_client_get_context(struct eis_client *client);
859 
865 bool
866 eis_client_is_sender(struct eis_client *client);
867 
872 const char *
873 eis_client_get_name(struct eis_client *client);
874 
884 void
885 eis_client_connect(struct eis_client *client);
886 
895 void
896 eis_client_disconnect(struct eis_client *client);
897 
910 struct eis_seat *
911 eis_client_new_seat(struct eis_client *client, const char *name);
912 
916 struct eis_seat *
917 eis_seat_ref(struct eis_seat *seat);
918 
922 struct eis_seat *
923 eis_seat_unref(struct eis_seat *seat);
924 
928 struct eis_client *
930 
934 const char *
936 
940 void *
942 
946 void
947 eis_seat_set_user_data(struct eis_seat *eis_seat, void *user_data);
948 
952 bool
954 
967 void
969 
976 void
977 eis_seat_add(struct eis_seat *seat);
978 
984 void
985 eis_seat_remove(struct eis_seat *seat);
986 
990 struct eis *
991 eis_seat_get_context(struct eis_seat *seat);
992 
996 struct eis *
997 eis_device_get_context(struct eis_device *device);
998 
1002 struct eis_client *
1003 eis_device_get_client(struct eis_device *device);
1004 
1008 struct eis_seat *
1009 eis_device_get_seat(struct eis_device *device);
1010 
1014 struct eis_device *
1015 eis_device_ref(struct eis_device *device);
1016 
1020 struct eis_device *
1021 eis_device_unref(struct eis_device *device);
1022 
1026 void *
1028 
1032 void
1033 eis_device_set_user_data(struct eis_device *eis_device, void *user_data);
1034 
1042 const char *
1043 eis_device_get_name(struct eis_device *device);
1044 
1048 bool
1050 
1057 uint32_t
1058 eis_device_get_width(struct eis_device *device);
1059 
1066 uint32_t
1067 eis_device_get_height(struct eis_device *device);
1068 
1088 struct eis_device *
1089 eis_seat_new_device(struct eis_seat *seat);
1090 
1099 void
1100 eis_device_configure_type(struct eis_device *device, enum eis_device_type type);
1101 
1105 enum eis_device_type
1106 eis_device_get_type(struct eis_device *device);
1107 
1111 void
1112 eis_device_configure_name(struct eis_device *device, const char *name);
1113 
1117 void
1119 
1134 void
1135 eis_device_configure_size(struct eis_device *device, uint32_t width, uint32_t height);
1136 
1149 struct eis_region *
1150 eis_device_new_region(struct eis_device *device);
1151 
1157 void
1158 eis_region_set_size(struct eis_region *region, uint32_t w, uint32_t h);
1159 
1165 void
1166 eis_region_set_offset(struct eis_region *region, uint32_t x, uint32_t y);
1167 
1180 void
1181 eis_region_set_physical_scale(struct eis_region *region, double scale);
1182 
1206 void
1207 eis_region_set_mapping_id(struct eis_region *region, const char *mapping_id);
1208 
1227 const char *
1228 eis_region_get_mapping_id(struct eis_region *region);
1229 
1238 void
1239 eis_region_add(struct eis_region *region);
1240 
1260 struct eis_region *
1261 eis_device_get_region(struct eis_device *device, size_t index);
1262 
1271 struct eis_region *
1272 eis_device_get_region_at(struct eis_device *device, double x, double y);
1273 
1277 struct eis_region *
1278 eis_region_ref(struct eis_region *region);
1279 
1283 struct eis_region *
1284 eis_region_unref(struct eis_region *region);
1285 
1289 void *
1290 eis_region_get_user_data(struct eis_region *region);
1291 
1295 void
1296 eis_region_set_user_data(struct eis_region *region, void *user_data);
1297 
1301 uint32_t
1302 eis_region_get_x(struct eis_region *region);
1303 
1307 uint32_t
1308 eis_region_get_y(struct eis_region *region);
1309 
1313 uint32_t
1314 eis_region_get_width(struct eis_region *region);
1315 
1319 uint32_t
1320 eis_region_get_height(struct eis_region *region);
1321 
1325 double
1327 
1333 bool
1334 eis_region_contains(struct eis_region *region, double x, double y);
1335 
1345 void
1346 eis_device_add(struct eis_device *device);
1347 
1355 void
1356 eis_device_remove(struct eis_device *device);
1357 
1379 void
1380 eis_device_pause(struct eis_device *device);
1381 
1390 void
1391 eis_device_resume(struct eis_device *device);
1392 
1412 struct eis_keymap *
1413 eis_device_new_keymap(struct eis_device *device, enum eis_keymap_type type, int fd, size_t size);
1414 
1430 void
1431 eis_keymap_add(struct eis_keymap *keymap);
1432 
1437 size_t
1438 eis_keymap_get_size(struct eis_keymap *keymap);
1439 
1446 enum eis_keymap_type
1447 eis_keymap_get_type(struct eis_keymap *keymap);
1448 
1456 int
1457 eis_keymap_get_fd(struct eis_keymap *keymap);
1458 
1462 struct eis_keymap *
1463 eis_keymap_ref(struct eis_keymap *keymap);
1464 
1468 struct eis_keymap *
1469 eis_keymap_unref(struct eis_keymap *keymap);
1470 
1474 void *
1476 
1480 void
1481 eis_keymap_set_user_data(struct eis_keymap *eis_keymap, void *user_data);
1482 
1488 struct eis_device *
1489 eis_keymap_get_device(struct eis_keymap *keymap);
1490 
1498 struct eis_keymap *
1500 
1522 void
1524  uint32_t depressed,
1525  uint32_t latched,
1526  uint32_t locked,
1527  uint32_t group);
1528 
1536 void
1537 eis_device_text_keysym(struct eis_device *device, uint32_t keysym, bool is_press);
1538 
1546 void
1547 eis_device_text_utf8(struct eis_device *device, const char *utf8);
1548 
1556 void
1557 eis_device_text_utf8_with_length(struct eis_device *device, const char *text, size_t length);
1558 
1564 void
1565 eis_device_start_emulating(struct eis_device *device, uint32_t sequence);
1566 
1572 void
1573 eis_device_stop_emulating(struct eis_device *device);
1574 
1580 void
1581 eis_device_frame(struct eis_device *device, uint64_t time);
1582 
1588 void
1589 eis_device_pointer_motion(struct eis_device *device, double x, double y);
1590 
1596 void
1597 eis_device_pointer_motion_absolute(struct eis_device *device, double x, double y);
1598 
1604 void
1605 eis_device_button_button(struct eis_device *device, uint32_t button, bool is_press);
1606 
1612 void
1613 eis_device_scroll_delta(struct eis_device *device, double x, double y);
1614 
1620 void
1621 eis_device_scroll_discrete(struct eis_device *device, int32_t x, int32_t y);
1622 
1628 void
1629 eis_device_scroll_stop(struct eis_device *device, bool stop_x, bool stop_y);
1630 
1636 void
1637 eis_device_scroll_cancel(struct eis_device *device, bool cancel_x, bool cancel_y);
1638 
1644 void
1645 eis_device_keyboard_key(struct eis_device *device, uint32_t keycode, bool is_press);
1646 
1652 struct eis_touch *
1653 eis_device_touch_new(struct eis_device *device);
1654 
1660 void
1661 eis_touch_down(struct eis_touch *touch, double x, double y);
1662 
1668 void
1669 eis_touch_motion(struct eis_touch *touch, double x, double y);
1670 
1676 void
1677 eis_touch_up(struct eis_touch *touch);
1678 
1684 void
1685 eis_touch_cancel(struct eis_touch *touch);
1686 
1692 struct eis_touch *
1693 eis_touch_ref(struct eis_touch *touch);
1694 
1700 struct eis_touch *
1701 eis_touch_unref(struct eis_touch *touch);
1702 
1708 void
1709 eis_touch_set_user_data(struct eis_touch *touch, void *user_data);
1710 
1716 void *
1717 eis_touch_get_user_data(struct eis_touch *touch);
1718 
1724 struct eis_device *
1725 eis_touch_get_device(struct eis_touch *touch);
1726 
1735 uint32_t
1737 
1744 double
1745 eis_event_pointer_get_dx(struct eis_event *event);
1746 
1753 double
1754 eis_event_pointer_get_dy(struct eis_event *event);
1755 
1762 double
1764 
1771 double
1773 
1780 uint32_t
1781 eis_event_button_get_button(struct eis_event *event);
1782 
1789 bool
1791 
1798 double
1799 eis_event_scroll_get_dx(struct eis_event *event);
1800 
1807 double
1808 eis_event_scroll_get_dy(struct eis_event *event);
1809 
1819 bool
1820 eis_event_scroll_get_stop_x(struct eis_event *event);
1821 
1831 bool
1832 eis_event_scroll_get_stop_y(struct eis_event *event);
1833 
1840 int32_t
1842 
1849 int32_t
1851 
1858 uint32_t
1859 eis_event_keyboard_get_key(struct eis_event *event);
1860 
1867 bool
1869 
1882 uint32_t
1883 eis_event_touch_get_id(struct eis_event *event);
1884 
1892 double
1893 eis_event_touch_get_x(struct eis_event *event);
1894 
1902 double
1903 eis_event_touch_get_y(struct eis_event *event);
1904 
1915 bool
1917 
1926 uint32_t
1927 eis_event_text_get_keysym(struct eis_event *event);
1928 
1938 bool
1940 
1949 const char *
1950 eis_event_text_get_utf8(struct eis_event *event);
1951 
1959 uint64_t
1960 eis_now(struct eis *eis);
1961 
1966 #ifdef __cplusplus
1967 }
1968 #endif
void eis_touch_up(struct eis_touch *touch)
see ei_touch_up
An ongoing scroll sequence was cancelled.
Definition: libeis.h:378
A relative motion event with delta coordinates in logical pixels or mm, depending on the device type...
Definition: libeis.h:356
The client is about to send events for a device.
Definition: libeis.h:344
void * eis_region_get_user_data(struct eis_region *region)
struct eis_event * eis_get_event(struct eis *eis)
Returns the next event in the internal event queue (or NULL) and removes it from the queue...
void * eis_ping_get_user_data(struct eis_ping *eis_ping)
Return the custom data pointer for this struct.
double eis_event_pointer_get_dx(struct eis_event *event)
For an event of type EIS_EVENT_POINTER_MOTION return the relative x movement in logical pixels or mm...
struct eis_keymap * eis_keymap_ref(struct eis_keymap *keymap)
int32_t eis_event_scroll_get_discrete_dy(struct eis_event *event)
For an event of type EIS_EVENT_SCROLL_DISCRETE return the y scroll distance in fractions or multiples...
A callback struct returned by eis_new_ping() to handle roundtrips to the client.
Definition: libeis.h:148
bool eis_event_keyboard_get_key_is_press(struct eis_event *event)
For an event of type EIS_EVENT_KEYBOARD_KEY return true if the event is a key down, false for a release.
double eis_event_scroll_get_dx(struct eis_event *event)
For an event of type EIS_EVENT_SCROLL_DELTA return the x scroll distance in logical pixels or mm...
uint32_t eis_device_get_width(struct eis_device *device)
Return the width in mm of a device of type EIS_DEVICE_TYPE_PHYSICAL, or zero otherwise.
A key sym logical press or release event.
Definition: libeis.h:413
void eis_device_configure_type(struct eis_device *device, enum eis_device_type type)
Set the device type for this device.
void eis_device_keyboard_key(struct eis_device *device, uint32_t keycode, bool is_press)
see ei_device_keyboard_key
void eis_touch_down(struct eis_touch *touch, double x, double y)
see ei_touch_down
struct eis_touch * eis_touch_unref(struct eis_touch *touch)
see ei_touch_unref
void eis_device_scroll_cancel(struct eis_device *device, bool cancel_x, bool cancel_y)
see ei_device_scroll_cancel
struct eis * eis_seat_get_context(struct eis_seat *seat)
enum eis_device_type eis_device_get_type(struct eis_device *device)
void eis_client_connect(struct eis_client *client)
Allow connection from the client.
eis_keymap_type
Definition: libeis.h:235
The client wants to bind or unbind a capability on this seat.
Definition: libeis.h:267
void eis_seat_configure_capability(struct eis_seat *seat, enum eis_device_capability cap)
Allow a capability on the seat.
void eis_device_scroll_stop(struct eis_device *device, bool stop_x, bool stop_y)
see ei_device_scroll_stop
bool eis_event_scroll_get_stop_x(struct eis_event *event)
For an event of type EIS_EVENT_SCROLL_STOP return whether the x axis has stopped scrolling.
struct eis_client * eis_client_ref(struct eis_client *client)
double eis_event_touch_get_x(struct eis_event *event)
For an event of type EIS_EVENT_TOUCH_DOWN, or EIS_EVENT_TOUCH_MOTION, return the x coordinate of the ...
A UTF-8 text event.
Definition: libeis.h:420
void eis_keymap_set_user_data(struct eis_keymap *eis_keymap, void *user_data)
struct eis_seat * eis_seat_ref(struct eis_seat *seat)
bool eis_client_is_sender(struct eis_client *client)
Returns true if the client is a sender, false otherwise.
struct eis_ping * eis_event_pong_get_ping(struct eis_event *event)
Returns the associated eis_ping struct with this event.
struct eis_seat * eis_client_new_seat(struct eis_client *client, const char *name)
Create a new logical seat with a given name.
int eis_backend_fd_add_client(struct eis *ctx)
Add a new client to a context set up with eis_setup_backend_fd().
void eis_log_set_handler(struct eis *eis, eis_log_handler log_handler)
Change the log handler for this context.
struct eis * eis_new(void *user_data)
Create a new libeis context with a refcount of 1.
Definition: libeis.h:488
bool eis_seat_has_capability(struct eis_seat *seat, enum eis_device_capability cap)
void eis_device_frame(struct eis_device *device, uint64_t time)
see ei_device_frame
struct eis_region * eis_device_get_region(struct eis_device *device, size_t index)
Obtain a region from the device.
struct eis_device * eis_device_ref(struct eis_device *device)
void eis_ping(struct eis_ping *ping)
Issue a roundtrip request to the client, resulting in an EIS_EVENT_PONG event when this roundtrip has...
void(* eis_log_handler)(struct eis *eis, enum eis_log_priority priority, const char *message, struct eis_log_context *ctx)
The log handler for library logging.
Definition: libeis.h:531
void eis_region_set_mapping_id(struct eis_region *region, const char *mapping_id)
Attach a unique identifier representing an external resource to this region.
Definition: libeis.h:228
eis_flag
Context flags to enable EIS-specific behaviors.
Definition: libeis.h:447
struct eis_region * eis_region_ref(struct eis_region *region)
struct eis_touch * eis_device_touch_new(struct eis_device *device)
see ei_device_touch_new
struct eis_device * eis_event_get_device(struct eis_event *event)
Return the device from this event.
bool eis_event_button_get_is_press(struct eis_event *event)
For an event of type EIS_EVENT_BUTTON_BUTTON return true if the event is a button press...
struct eis_seat * eis_device_get_seat(struct eis_device *device)
Definition: libeis.h:221
void eis_region_set_user_data(struct eis_region *region, void *user_data)
Definition: libeis.h:223
void * eis_keymap_get_user_data(struct eis_keymap *eis_keymap)
void eis_device_configure_size(struct eis_device *device, uint32_t width, uint32_t height)
Configure the size in mm of a device of type EIS_DEVICE_TYPE_PHYSICAL.
struct eis * eis_unref(struct eis *eis)
const char * eis_seat_get_name(struct eis_seat *eis_seat)
void eis_device_text_keysym(struct eis_device *device, uint32_t keysym, bool is_press)
see ei_device_text_keysym
void eis_device_button_button(struct eis_device *device, uint32_t button, bool is_press)
see ei_device_button_button
Definition: libeis.h:490
uint32_t eis_event_emulating_get_sequence(struct eis_event *event)
For an event of type EIS_EVENT_DEVICE_START_EMULATING, return the sequence number set by the ei clien...
void eis_device_configure_capability(struct eis_device *device, enum eis_device_capability cap)
Event for a single touch set down on the device's logical surface.
Definition: libeis.h:396
struct eis_event * eis_peek_event(struct eis *eis)
Returns the next event in the internal event queue (or NULL) without removing that event from the que...
Event for a single currently-down touch changing position (or other properties).
Definition: libeis.h:406
void eis_device_scroll_discrete(struct eis_device *device, int32_t x, int32_t y)
see ei_device_scroll_discrete
enum eis_keymap_type eis_keymap_get_type(struct eis_keymap *keymap)
Returns the type for this keymap.
void eis_device_configure_name(struct eis_device *device, const char *name)
struct eis_device * eis_device_unref(struct eis_device *device)
Definition: libeis.h:487
void eis_clock_set_now_func(struct eis *, eis_clock_now_func func)
Override the function that returns the current time eis_now().
struct eis * eis_device_get_context(struct eis_device *device)
A vertical and/or horizontal scroll event with a discrete range in logical scroll steps...
Definition: libeis.h:383
struct eis_event * eis_event_unref(struct eis_event *event)
Decrease the refcount of this struct by one.
enum eis_log_priority eis_log_get_priority(const struct eis *eis)
void eis_device_remove(struct eis_device *device)
Remove the device.
uint64_t eis_event_get_time(struct eis_event *event)
Return the time for the event of type EIS_EVENT_FRAME in microseconds.
Definition: libeis.h:140
struct eis_ping * eis_client_new_ping(struct eis_client *client)
Create a new eis_ping object to trigger a round trip to the client.
void eis_region_set_physical_scale(struct eis_region *region, double scale)
Set the physical scale for this region.
double eis_event_pointer_get_absolute_x(struct eis_event *event)
For an event of type EIS_EVENT_POINTER_MOTION_ABSOLUTE return the x position in logical pixels or mm...
const char * eis_event_text_get_utf8(struct eis_event *event)
For an event of type EIS_EVENT_TEXT_UTF8 return the zero-terminated UTF8 string.
void eis_device_start_emulating(struct eis_device *device, uint32_t sequence)
see ei_device_start_emulating
void eis_seat_add(struct eis_seat *seat)
Add this seat to its client and notify the client of the seat's availability.
A vertical and/or horizontal scroll event with logical-pixels or mm precision, depending on the devic...
Definition: libeis.h:370
double eis_event_pointer_get_dy(struct eis_event *event)
For an event of type EIS_EVENT_POINTER_MOTION return the relative y movement in logical pixels or mm...
struct eis_touch * eis_touch_ref(struct eis_touch *touch)
see ei_touch_ref
void eis_device_pause(struct eis_device *device)
Notify the client that the device is paused and that no events from the client will be processed...
pid_t eis_backend_socket_get_client_pid(struct eis_client *client)
Return the pid of the client.
eis_device_capability
Definition: libeis.h:218
An ongoing scroll sequence stopped.
Definition: libeis.h:374
int eis_setup_backend_fd(struct eis *ctx)
Initialize the context that can take pre-configured socket file descriptors, see eis_backend_fd_add_c...
void eis_device_set_user_data(struct eis_device *eis_device, void *user_data)
Definition: libeis.h:212
Returned in response to eis_ping().
Definition: libeis.h:300
Definition: libeis.h:136
uint32_t eis_event_keyboard_get_key(struct eis_event *event)
For an event of type EIS_EVENT_KEYBOARD_KEY return the key code (as defined in include/linux/input-ev...
double eis_event_scroll_get_dy(struct eis_event *event)
For an event of type EIS_EVENT_SCROLL_DELTA return the y scroll distance in logical pixels or mm...
struct eis_region * eis_device_get_region_at(struct eis_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...
A button press or release event.
Definition: libeis.h:365
Definition: libeis.h:220
enum eis_event_type eis_event_get_type(struct eis_event *event)
double eis_event_touch_get_y(struct eis_event *event)
For an event of type EIS_EVENT_TOUCH_DOWN, or EIS_EVENT_TOUCH_MOTION, return the y coordinate of the ...
Definition: libeis.h:128
Definition: libeis.h:236
struct eis * eis_client_get_context(struct eis_client *client)
struct eis_device * eis_keymap_get_device(struct eis_keymap *keymap)
Return the device this keymap belongs to.
bool eis_device_has_capability(struct eis_device *device, enum eis_device_capability cap)
struct eis_device * eis_touch_get_device(struct eis_touch *touch)
see ei_touch_get_device
void eis_device_pointer_motion_absolute(struct eis_device *device, double x, double y)
see ei_device_pointer_motion_absolute
struct eis * eis_ref(struct eis *eis)
struct eis_device * eis_seat_new_device(struct eis_seat *seat)
Create a new device on the seat.
Definition: libeis.h:489
int eis_keymap_get_fd(struct eis_keymap *keymap)
Return a memmap-able file descriptor pointing to the keymap used by the device.
struct eis_ping * eis_ping_ref(struct eis_ping *eis_ping)
Increase the refcount of this struct by one.
Definition: libeis.h:219
void eis_touch_cancel(struct eis_touch *touch)
see ei_touch_cancel
void * eis_get_user_data(struct eis *eis)
unsigned int eis_log_context_get_line(struct eis_log_context *ctx)
void eis_region_set_size(struct eis_region *region, uint32_t w, uint32_t h)
This call has no effect if called after eis_region_add()
void eis_device_resume(struct eis_device *device)
Notify the client that the capabilities are resumed and that events from the device will be processed...
void eis_region_set_offset(struct eis_region *region, uint32_t x, uint32_t y)
This call has no effect if called after eis_region_add()
void eis_device_pointer_motion(struct eis_device *device, double x, double y)
see ei_device_pointer_motion
bool eis_region_contains(struct eis_region *region, double x, double y)
const char * eis_event_type_to_string(enum eis_event_type)
This is a debugging helper to return a string of the name of the event type, or NULL if the event typ...
bool eis_event_scroll_get_stop_y(struct eis_event *event)
For an event of type EIS_EVENT_SCROLL_STOP return whether the y axis has stopped scrolling.
void eis_device_stop_emulating(struct eis_device *device)
see ei_device_stop_emulating
struct eis_client * eis_device_get_client(struct eis_device *device)
uint32_t eis_event_button_get_button(struct eis_event *event)
For an event of type EIS_EVENT_BUTTON_BUTTON return the button code as defined in linux/input-event-c...
void eis_device_text_utf8(struct eis_device *device, const char *utf8)
see ei_device_text_utf8
eis_device_type
The device type determines what the device represents.
Definition: libeis.h:212
void eis_device_keyboard_send_xkb_modifiers(struct eis_device *device, uint32_t depressed, uint32_t latched, uint32_t locked, uint32_t group)
Notify the client of the current XKB modifier state.
struct eis_region * eis_region_unref(struct eis_region *region)
void eis_set_user_data(struct eis *eis, void *user_data)
void eis_device_scroll_delta(struct eis_device *device, double x, double y)
see ei_device_scroll_delta
struct eis_client * eis_client_unref(struct eis_client *client)
Definition: libeis.h:132
Regions are only available on devices of type EIS_DEVICE_TYPE_VIRTUAL.
Definition: libeis.h:158
Definition: libeis.h:144
uint32_t eis_event_touch_get_id(struct eis_event *event)
For an event of type EIS_EVENT_TOUCH_DOWN, EIS_EVENT_TOUCH_MOTION, or EIS_EVENT_TOUCH_UP, return the tracking ID of the touch.
void eis_seat_set_user_data(struct eis_seat *eis_seat, void *user_data)
The client no longer listens to events from this device.
Definition: libeis.h:273
void * eis_device_get_user_data(struct eis_device *eis_device)
void * eis_client_get_user_data(struct eis_client *eis_client)
struct eis_keymap * eis_device_keyboard_get_keymap(struct eis_device *device)
Return the keymap assigned to this device.
void eis_touch_set_user_data(struct eis_touch *touch, void *user_data)
see ei_touch_set_user_data
void * eis_seat_get_user_data(struct eis_seat *eis_seat)
struct eis_keymap * eis_device_new_keymap(struct eis_device *device, enum eis_keymap_type type, int fd, size_t size)
Create a new keymap of the given type.
bool eis_event_touch_get_is_cancel(struct eis_event *event)
For an event of type EIS_EVENT_TOUCH_UP return true if the touch was cancelled instead of logically r...
uint64_t(* eis_clock_now_func)(struct eis *eis)
Optional override function for eis_now().
Definition: libeis.h:568
The client has completed configuration of the device (if any) and the caller may call eis_device_resu...
Definition: libeis.h:287
void * eis_touch_get_user_data(struct eis_touch *touch)
see ei_touch_get_user_data
A client has connected.
Definition: libeis.h:255
uint64_t eis_now(struct eis *eis)
uint32_t eis_device_get_height(struct eis_device *device)
Return the height in mm of a device of type EIS_DEVICE_TYPE_PHYSICAL, or zero otherwise.
void eis_dispatch(struct eis *eis)
Main event dispatching function.
void eis_ping_set_user_data(struct eis_ping *eis_ping, void *user_data)
Set a custom data pointer for this struct.
size_t eis_keymap_get_size(struct eis_keymap *keymap)
Definition: libeis.h:222
This event represents a synchronization request (ping) from the client implementation.
Definition: libeis.h:314
Event for a single touch released from the device's logical surface.
Definition: libeis.h:401
int eis_get_fd(struct eis *eis)
libeis keeps a single file descriptor for all events.
Definition: libeis.h:124
Stop emulating events on this device, see EIS_EVENT_DEVICE_START_EMULATING.
Definition: libeis.h:348
struct eis_seat * eis_event_get_seat(struct eis_event *event)
bool eis_event_text_get_keysym_is_press(struct eis_event *event)
For an event of type EIS_EVENT_TEXT_KEYSYM return true if the event is a logical key down for the key...
bool eis_event_seat_has_capability(struct eis_event *event, enum eis_device_capability cap)
For an event of type EIS_EVENT_SEAT_BIND or EIS_EVENT_SEAT_DEVICE_REQUESTED, return the capabilities ...
uint32_t eis_region_get_height(struct eis_region *region)
eis_log_priority
Definition: libeis.h:486
If set, libeis will announce ei_device protocol version 3 or later.
Definition: libeis.h:458
int eis_setup_backend_socket(struct eis *ctx, const char *path)
Initialize the context with a UNIX socket name.
struct eis_ping * eis_ping_unref(struct eis_ping *eis_ping)
Decrease the refcount of this struct by one.
struct eis_region * eis_device_new_region(struct eis_device *device)
Create a new region on the device of type EIS_DEVICE_TYPE_VIRTUAL with an initial refcount of 1...
void eis_seat_remove(struct eis_seat *seat)
Remove this seat and all its remaining devices.
The client requested a device with the given capabilities on this seat.
Definition: libeis.h:295
struct eis_keymap * eis_keymap_unref(struct eis_keymap *keymap)
const char * eis_log_context_get_func(struct eis_log_context *ctx)
const char * eis_device_get_name(struct eis_device *device)
Return the name of the device.
uint32_t eis_region_get_width(struct eis_region *region)
void eis_touch_motion(struct eis_touch *touch, double x, double y)
see ei_touch_motion
struct eis_client * eis_seat_get_client(struct eis_seat *eis_seat)
"Hardware" frame event.
Definition: libeis.h:326
void eis_client_set_user_data(struct eis_client *eis_client, void *user_data)
double eis_region_get_physical_scale(struct eis_region *region)
int32_t eis_event_scroll_get_discrete_dx(struct eis_event *event)
For an event of type EIS_EVENT_SCROLL_DISCRETE return the x scroll distance in fractions or multiples...
A key press or release event.
Definition: libeis.h:388
int eis_set_flag(struct eis *eis, enum eis_flag flag)
Change the behavior of the context according to the given flag.
struct eis_event * eis_event_ref(struct eis_event *event)
Increase the refcount of this struct by one.
void eis_log_set_priority(struct eis *eis, enum eis_log_priority priority)
The client has disconnected, any pending requests for this client should be discarded.
Definition: libeis.h:260
double eis_event_pointer_get_absolute_y(struct eis_event *event)
For an event of type EIS_EVENT_POINTER_MOTION_ABSOLUTE return the y position in logical pixels or mm...
uint32_t eis_region_get_y(struct eis_region *region)
void eis_region_add(struct eis_region *region)
Add the given region to its device.
void eis_device_add(struct eis_device *device)
Add this device to its seat and notify the client of the device's availability.
uint32_t eis_event_text_get_keysym(struct eis_event *event)
For an event of type EIS_EVENT_TEXT_KEYSYM return the XKB-compatible keysym.
struct eis_seat * eis_seat_unref(struct eis_seat *seat)
uint64_t eis_ping_get_id(struct eis_ping *ping)
Return a unique, increasing id for this struct.
const char * eis_client_get_name(struct eis_client *client)
Return the name set by this client.
uint32_t eis_region_get_x(struct eis_region *region)
void eis_device_text_utf8_with_length(struct eis_device *device, const char *text, size_t length)
see ei_device_text_utf8_with_length
const char * eis_log_context_get_file(struct eis_log_context *ctx)
struct eis_client * eis_event_get_client(struct eis_event *event)
Definition: libeis.h:212
const char * eis_region_get_mapping_id(struct eis_region *region)
Get the unique ID for this region previously set by this caller, if any, or NULL if the client does n...
void eis_keymap_add(struct eis_keymap *keymap)
Set the keymap on the device.
eis_event_type
This enum is not exhaustive, future versions of this library may add new event types.
Definition: libeis.h:248
void eis_client_disconnect(struct eis_client *client)
Disconnect this client.
An absolute motion event with absolute position within the device's regions or size, depending on the device type.
Definition: libeis.h:361
Definition: libeis.h:224