2020-09-25 11:42:28 +10:00
|
|
|
/**
|
|
|
|
|
@mainpage
|
|
|
|
|
|
|
|
|
|
This is the libei API reference.
|
|
|
|
|
|
2022-03-01 13:46:32 +10:00
|
|
|
libei provides two different libraries, `libei` for clients that need to
|
|
|
|
|
emulate input events and `libeis` for servers that manage those input events
|
|
|
|
|
(read: compositors). A common setup looks like this:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
+-----------------------+
|
|
|
|
|
physical devices - | libinput | compositor |
|
|
|
|
|
+----------+------------+
|
|
|
|
|
| libeis |
|
|
|
|
|
+------------+
|
|
|
|
|
||
|
|
|
|
|
||
|
|
|
|
|
+-------------+
|
|
|
|
|
| libei |
|
|
|
|
|
+-------------+
|
|
|
|
|
| application |
|
|
|
|
|
+-------------+
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Notably, the process using `libeis` is **in control of all input devices**. A
|
|
|
|
|
`libei` client can send events but it is up to the EIS implementation to
|
|
|
|
|
process them.
|
|
|
|
|
|
|
|
|
|
The two libraries are independently and usually consumers of either `libei` or
|
|
|
|
|
`libeis` should never need the other library.
|
2020-09-25 11:42:28 +10:00
|
|
|
|
|
|
|
|
@section ei EI - the client implementation
|
|
|
|
|
|
|
|
|
|
The `libei` library is the component used by clients that want to emulate
|
2022-03-01 13:46:32 +10:00
|
|
|
input events. It provides the required methods to connect to an EIS
|
|
|
|
|
implementation, query for input devices available to the client, and send
|
|
|
|
|
input.
|
2020-09-25 11:42:28 +10:00
|
|
|
|
|
|
|
|
The API documentation for EI is available at @ref libei.
|
|
|
|
|
|
|
|
|
|
@section eis EIS - the server implementation
|
|
|
|
|
|
|
|
|
|
The `libeis` library is the component used by processes that handle input
|
2022-03-01 13:46:32 +10:00
|
|
|
events. It provides the required methods to set up seats and input devices,
|
|
|
|
|
accept `libei` client connections, and receive input events from those
|
|
|
|
|
clients.
|
2020-09-25 11:42:28 +10:00
|
|
|
|
|
|
|
|
The API documentation for EI is available at @ref libeis.
|
|
|
|
|
|
|
|
|
|
@section examples Examples
|
|
|
|
|
|
|
|
|
|
Please see the [demo programs](https://gitlab.freedesktop.org/libinput/libei/-/tree/master/tools)
|
|
|
|
|
in the git repository.
|
|
|
|
|
|
|
|
|
|
The `eis-demo-client` is a minimal client that connects to an EIS
|
|
|
|
|
implementation and sends events.
|
|
|
|
|
|
|
|
|
|
The `eis-demo-server` is a minimal EIS implementation that accepts all
|
|
|
|
|
requests and prints them to screen.
|
|
|
|
|
|
|
|
|
|
@section building_against Building against libei or libeis
|
|
|
|
|
|
|
|
|
|
libei and libeis provides
|
|
|
|
|
[pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/) files.
|
|
|
|
|
Software that uses libei or libeis should use pkg-config and the
|
|
|
|
|
`PKG_CHECK_MODULES` autoconf macro or the `dependency()` function in meson.
|
|
|
|
|
|
|
|
|
|
Otherwise, the most rudimentary way to compile and link a program against
|
|
|
|
|
libei or libeis is:
|
|
|
|
|
|
|
|
|
|
@verbatim
|
|
|
|
|
gcc -o myprogram mylibeiclient.c `pkg-config --cflags --libs libei`
|
|
|
|
|
gcc -o myprogram myEISimplementation.c `pkg-config --cflags --libs libeis`
|
|
|
|
|
@endverbatim
|
|
|
|
|
|
|
|
|
|
For further information on using pkgconfig see the pkg-config documentation.
|
|
|
|
|
|
|
|
|
|
@section About
|
|
|
|
|
|
|
|
|
|
Documentation generated from git commit [__GIT_VERSION__](https://gitlab.freedesktop.org/libinput/libei/commit/__GIT_VERSION__)
|
|
|
|
|
|
|
|
|
|
*/
|