libeis is the server-side module. More...
Typedefs | |
typedef void(* | eis_log_handler) (struct eis *eis, enum eis_log_priority priority, const char *message, bool is_continuation) |
The log handler for library logging. More... | |
Functions | |
struct eis * | eis_new (void *user_data) |
Create a new libeis context with a refcount of 1. More... | |
void | eis_log_set_handler (struct eis *eis, eis_log_handler log_handler) |
Change the log handler for this context. More... | |
void | eis_log_set_priority (struct eis *eis, enum eis_log_priority priority) |
enum eis_log_priority | eis_log_get_priority (const struct eis *eis) |
struct eis * | eis_ref (struct eis *eis) |
struct eis * | eis_unref (struct eis *eis) |
void * | eis_get_user_data (struct eis *eis) |
void | eis_set_user_data (struct eis *eis, void *user_data) |
int | eis_setup_backend_socket (struct eis *ctx, const char *path) |
Initialize the context with a UNIX socket name. More... | |
int | eis_setup_backend_fd (struct eis *ctx) |
Initialize the context that can take pre-configured sockets. More... | |
int | eis_backend_fd_add_fd (struct eis *ctx, int fd) |
Add a new client to a context set up with eis_setup_backend_fd() More... | |
int | eis_get_fd (struct eis *eis) |
libeis keeps a single file descriptor for all events. More... | |
void | eis_dispatch (struct eis *eis) |
Main event dispatching function. More... | |
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. More... | |
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 queue, i.e. More... | |
struct eis_event * | eis_event_unref (struct eis_event *event) |
Release resources associated with this event. More... | |
struct eis_client * | eis_client_ref (struct eis_client *client) |
struct eis_client * | eis_client_unref (struct eis_client *client) |
void * | eis_client_get_user_data (struct eis_client *eis_client) |
void | eis_client_set_user_data (struct eis_client *eis_client, void *user_data) |
const char * | eis_client_get_name (struct eis_client *client) |
Return the name set by this client. More... | |
void | eis_client_connect (struct eis_client *client) |
Allow connection from the client. More... | |
void | eis_client_disconnect (struct eis_client *client) |
Disconnect this client. More... | |
struct eis_seat * | eis_client_new_seat (struct eis_client *client, const char *name) |
Create a new logical seat with a given name. More... | |
struct eis_seat * | eis_seat_ref (struct eis_seat *seat) |
struct eis_seat * | eis_seat_unref (struct eis_seat *seat) |
struct eis_client * | eis_seat_get_client (struct eis_seat *eis_seat) |
const char * | eis_seat_get_name (struct eis_seat *eis_seat) |
void * | eis_seat_get_user_data (struct eis_seat *eis_seat) |
void | eis_seat_set_user_data (struct eis_seat *eis_seat, void *user_data) |
void | eis_seat_allow_capability (struct eis_seat *seat, enum eis_device_capability cap) |
Allow a capability on the seat. More... | |
void | eis_seat_add (struct eis_seat *seat) |
Add this seat to its client and notify the client of the seat's availability. More... | |
void | eis_seat_remove (struct eis_seat *seat) |
Remove this seat and all its remaining devices. More... | |
enum eis_event_type | eis_event_get_type (struct eis_event *event) |
struct eis_client * | eis_event_get_client (struct eis_event *event) |
struct eis_client * | eis_device_get_client (struct eis_device *device) |
struct eis_seat * | eis_device_get_seat (struct eis_device *device) |
struct eis_device * | eis_device_ref (struct eis_device *device) |
struct eis_device * | eis_device_unref (struct eis_device *device) |
void * | eis_device_get_user_data (struct eis_device *eis_device) |
void | eis_device_set_user_data (struct eis_device *eis_device, void *user_data) |
const char * | eis_device_get_name (struct eis_device *device) |
Return the name of the device. More... | |
void | eis_device_set_name (struct eis_device *device, const char *name) |
Set the name of the device. More... | |
bool | eis_device_has_capability (struct eis_device *device, enum eis_device_capability cap) |
void | eis_device_allow_capability (struct eis_device *device, enum eis_device_capability cap) |
Allow a capability on the device. More... | |
void | eis_device_connect (struct eis_device *device) |
Connects the device. More... | |
void | eis_device_disconnect (struct eis_device *device) |
Disconnect the device. More... | |
void | eis_device_suspend (struct eis_device *device) |
Notify the client that the device is suspended and that no events from the client will be processed. More... | |
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. More... | |
uint32_t | eis_device_pointer_get_width (struct eis_device *device) |
Get the width of the absolute pointer device in logical pixels. More... | |
uint32_t | eis_device_pointer_get_height (struct eis_device *device) |
uint32_t | eis_device_touch_get_width (struct eis_device *device) |
uint32_t | eis_device_touch_get_height (struct eis_device *device) |
struct eis_keymap * | eis_keymap_new (enum eis_keymap_type type, int fd, size_t size) |
Create a new keymap of the given type . More... | |
size_t | eis_keymap_get_size (struct eis_keymap *keymap) |
enum eis_keymap_type | eis_keymap_get_type (struct eis_keymap *keymap) |
Returns the type for this keymap. More... | |
int | eis_keymap_get_fd (struct eis_keymap *keymap) |
Return a memmap-able file descriptor pointing to the keymap used by the device. More... | |
struct eis_keymap * | eis_keymap_ref (struct eis_keymap *keymap) |
struct eis_keymap * | eis_keymap_unref (struct eis_keymap *keymap) |
struct eis_device * | eis_keymap_get_device (struct eis_keymap *keymap) |
Return the device this keymap belongs to, or NULL if it has not yet been assigned to a device. More... | |
struct eis_keymap * | eis_device_keyboard_get_keymap (struct eis_device *device) |
Return the keymap assigned to this device. More... | |
void | eis_device_keyboard_set_keymap (struct eis_device *device, struct eis_keymap *keymap) |
Set the keymap on the device. More... | |
struct eis_device * | eis_event_get_device (struct eis_event *event) |
Return the device from this event. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
uint32_t | eis_event_pointer_get_button (struct eis_event *event) |
For an event of type EIS_EVENT_POINTER_BUTTON return the button code as defined in linux/input-event-codes.h. More... | |
bool | eis_event_pointer_get_button_is_press (struct eis_event *event) |
For an event of type EIS_EVENT_POINTER_BUTTON return true if the event is a button press, false for a release. More... | |
double | eis_event_pointer_get_scroll_x (struct eis_event *event) |
For an event of type EIS_EVENT_POINTER_SCROLL return the x scroll distance in logical pixels. More... | |
double | eis_event_pointer_get_scroll_y (struct eis_event *event) |
For an event of type EIS_EVENT_POINTER_SCROLL return the y scroll distance in logical pixels. More... | |
int32_t | eis_event_pointer_get_scroll_discrete_x (struct eis_event *event) |
For an event of type EIS_EVENT_POINTER_SCROLL_DISCRETE return the x scroll distance in fractions or multiples of 120. More... | |
int32_t | eis_event_pointer_get_scroll_discrete_y (struct eis_event *event) |
For an event of type EIS_EVENT_POINTER_SCROLL_DISCRETE return the y scroll distance in fractions or multiples of 120. More... | |
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-event-codes.h). More... | |
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. More... | |
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. More... | |
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 touch. More... | |
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 touch. More... | |
Detailed Description
libeis is the server-side module.
This API should be used by processes that have control over input devices, e.g. Wayland compositors.
Typedef Documentation
◆ eis_log_handler
typedef void(* eis_log_handler) (struct eis *eis, enum eis_log_priority priority, const char *message, bool is_continuation) |
The log handler for library logging.
This handler is only called for messages with a log level equal or greater than than the one set in eis_log_set_priority().
- Parameters
-
message The log message as a null-terminated string is_continuation The message is a continuation of the previous message. The caller should skip any per-line-based prefixes.
Enumeration Type Documentation
◆ eis_device_capability
◆ eis_event_type
enum eis_event_type |
Enumerator | |
---|---|
EIS_EVENT_CLIENT_CONNECT | A client has connected. This is the first event from any new client. The server is expected to either call eis_event_client_allow() or eis_event_client_deny(). |
EIS_EVENT_CLIENT_DISCONNECT | The client has disconnected, any pending requests for this client should be discarded. |
EIS_EVENT_DEVICE_ADDED | The client requests creation of a device with a given set of capabilities. A client may create more than one device and more than one device with the same capabilities. The server may filter the capabilities or deny them altogether. |
EIS_EVENT_DEVICE_REMOVED | The device created by the client was removed. The server must call eis_device_disconnect() in response to this device. libeis guarantees this event is generated before EIS_EVENT_CLIENT_DISCONNECT. |
EIS_EVENT_POINTER_MOTION | |
EIS_EVENT_POINTER_MOTION_ABSOLUTE | |
EIS_EVENT_POINTER_BUTTON | |
EIS_EVENT_POINTER_SCROLL | |
EIS_EVENT_POINTER_SCROLL_DISCRETE | |
EIS_EVENT_KEYBOARD_KEY | |
EIS_EVENT_TOUCH_DOWN | |
EIS_EVENT_TOUCH_UP | |
EIS_EVENT_TOUCH_MOTION |
◆ eis_keymap_type
enum eis_keymap_type |
◆ eis_log_priority
enum eis_log_priority |
Function Documentation
◆ eis_backend_fd_add_fd()
int eis_backend_fd_add_fd | ( | struct eis * | ctx, |
int | fd | ||
) |
Add a new client to a context set up with eis_setup_backend_fd()
◆ eis_client_connect()
void eis_client_connect | ( | struct eis_client * | client | ) |
Allow connection from the client.
This can only be done once, further calls to this functions are ignored.
When receiving an event of type EIS_EVENT_CLIENT_CONNECT, the server should connect client as soon as possible to allow communication with the server. If the client is not authorized to talk to the server, call eis_client_disconnect().
◆ eis_client_disconnect()
void eis_client_disconnect | ( | struct eis_client * | client | ) |
Disconnect this client.
Once disconnected the client may no longer talk to this context, all resources associated with this client should be released.
It is not necessary to call this function when an EIS_EVENT_CLIENT_DISCONNECT event is received.
◆ eis_client_get_name()
const char* eis_client_get_name | ( | struct eis_client * | client | ) |
Return the name set by this client.
The server is under no obligation to use this name.
◆ eis_client_get_user_data()
void* eis_client_get_user_data | ( | struct eis_client * | eis_client | ) |
◆ eis_client_new_seat()
struct eis_seat* eis_client_new_seat | ( | struct eis_client * | client, |
const char * | name | ||
) |
Create a new logical seat with a given name.
Devices created by the client must bind to a seat, or in other words: a client cannot create devices until at least one seat is bound.
This seat is not immediately active, use eis_seat_add() to bind this seat on the client and notify the client of it's availability.
The returned seat is refcounted, use eis_seat_unref() to drop the reference.
◆ eis_client_ref()
struct eis_client* eis_client_ref | ( | struct eis_client * | client | ) |
◆ eis_client_set_user_data()
void eis_client_set_user_data | ( | struct eis_client * | eis_client, |
void * | user_data | ||
) |
◆ eis_client_unref()
struct eis_client* eis_client_unref | ( | struct eis_client * | client | ) |
◆ eis_device_allow_capability()
void eis_device_allow_capability | ( | struct eis_device * | device, |
enum eis_device_capability | cap | ||
) |
Allow a capability on the device.
This function must be called in response to an EIS_EVENT_DEVICE_ADDED and before eis_device_connect().
This function has no effect if called for a capability the device does not support. This function has no effect if called for a capability not allowed on the seat this device belongs to.
This function has no effect if called after eis_device_connect()
◆ eis_device_connect()
void eis_device_connect | ( | struct eis_device * | device | ) |
Connects the device.
This function should be called in response to an EIS_EVENT_DEVICE_ADDED if the server accepts the device creation. Any changes to the device, e.g. eis_device_set_name() and eis_device_disable_capability() must be performed before connecting the device.
Calling eis_device_connect() on a device with all capabilities set to zero is a bug.
If the device is rejected, call eis_device_disconnect() instead.
The device is suspended, use eis_device_resume() to enable events from the client.
◆ eis_device_disconnect()
void eis_device_disconnect | ( | struct eis_device * | device | ) |
Disconnect the device.
This does not release any resources associated with this device, use eis_device_unref() for any references held by the caller.
◆ eis_device_get_client()
struct eis_client* eis_device_get_client | ( | struct eis_device * | device | ) |
◆ eis_device_get_name()
const char* eis_device_get_name | ( | struct eis_device * | device | ) |
Return the name of the device.
The return value of this function may change after eis_device_set_name(), a caller should keep a copy of it where required rather than the pointer value.
◆ eis_device_get_seat()
struct eis_seat* eis_device_get_seat | ( | struct eis_device * | device | ) |
◆ eis_device_get_user_data()
void* eis_device_get_user_data | ( | struct eis_device * | eis_device | ) |
◆ eis_device_has_capability()
bool eis_device_has_capability | ( | struct eis_device * | device, |
enum eis_device_capability | cap | ||
) |
◆ eis_device_keyboard_get_keymap()
struct eis_keymap* eis_device_keyboard_get_keymap | ( | struct eis_device * | device | ) |
Return the keymap assigned to this device.
The return value of this function is the client-assigned keymap (if any) before the call to eis_device_keyboard_set_keymap(), or the server-assigned one after.
◆ eis_device_keyboard_set_keymap()
void eis_device_keyboard_set_keymap | ( | struct eis_device * | device, |
struct eis_keymap * | keymap | ||
) |
Set the keymap on the device.
This overwrites the client's keymap choice. Note that not calling this function when eis_device_keyboard_get_keymap() returns non-NULL
is equivalent to accepting the client's choice of keymap.
If the keymap is not NULL
, the keymap is the one used by this device. This keymap is constant for the lifetime of the device and assigned to this device individually. Where the keymap has to change, remove the device and wait for the client to create a new one.
If the keymap is NULL
, the device does not have an individual keymap assigned. A server that does not handle individual client keymaps must call this function with an keymap
of NULL
.
This function has no effect if called after eis_device_connect()
◆ eis_device_pointer_get_height()
uint32_t eis_device_pointer_get_height | ( | struct eis_device * | device | ) |
- See also
- eis_device_pointer_get_width
◆ eis_device_pointer_get_width()
uint32_t eis_device_pointer_get_width | ( | struct eis_device * | device | ) |
Get the width of the absolute pointer device in logical pixels.
The allowable range for absolute pointer motion is [0, max) for each axis, i.e. zero inclusive, max exclusive. Coordinates outside this range may be discarded or clipped silently by the library.
The pointer range is constant. Where the pointer range is no longer applicable, the client needs to remove the device and create and add a new device with the updated pointer range.
The server may use this in mapping heuristics. For example, a pointer device with a pixel range of 1920x1200 may be automatically mapped by the server to the monitor with this range, or a pointer device with a ratio of R may be mapped to the monitor with the same ratio. This is not a guarantee, the mapping policy is a private implementation detail in the server. It is assumed that the client has other communication channels (e.g. Wayland) to obtain the pointer range it needs to emulate input on a device and channels to notify the server of desired mappings (e.g. gsettings).
It is a client bug to send pointer values outside this range.
It is a server bug to call this function on a device without the EIS_DEVICE_CAP_POINTER_ABSOLUTE capability.
- Returns
- The new width in logical pixels
◆ eis_device_ref()
struct eis_device* eis_device_ref | ( | struct eis_device * | device | ) |
◆ eis_device_resume()
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.
- Parameters
-
device A connected device
◆ eis_device_set_name()
void eis_device_set_name | ( | struct eis_device * | device, |
const char * | name | ||
) |
Set the name of the device.
This function has no effect if called after eis_device_connect()
◆ eis_device_set_user_data()
void eis_device_set_user_data | ( | struct eis_device * | eis_device, |
void * | user_data | ||
) |
◆ eis_device_suspend()
void eis_device_suspend | ( | struct eis_device * | device | ) |
Notify the client that the device is suspended and that no events from the client will be processed.
The library filters events sent by the client after the suspend notification has been processed by the client but this does not affect events already in transit. In other words, the server may still receive a number of events from a device after it has been suspended and must update its internal state accordingly.
- Parameters
-
device A connected device
◆ eis_device_touch_get_height()
uint32_t eis_device_touch_get_height | ( | struct eis_device * | device | ) |
- Parameters
-
device The EI device
- See also
- eis_device_touch_get_width
◆ eis_device_touch_get_width()
uint32_t eis_device_touch_get_width | ( | struct eis_device * | device | ) |
- See also
- eis_device_pointer_get_width
◆ eis_device_unref()
struct eis_device* eis_device_unref | ( | struct eis_device * | device | ) |
◆ eis_dispatch()
void eis_dispatch | ( | struct eis * | eis | ) |
Main event dispatching function.
Reads events of the file descriptors and processes them internally. Use libeis_get_event() to retrieve the events.
Dispatching does not necessarily queue events. This function should be called immediately once data is available on the file descriptor returned by libeis_get_fd().
◆ eis_event_get_client()
struct eis_client* eis_event_get_client | ( | struct eis_event * | event | ) |
◆ eis_event_get_device()
struct eis_device* eis_event_get_device | ( | struct eis_event * | event | ) |
Return the device from this event.
This does not increase the refcount of the device. Use eis_device_ref() to keep a reference beyond the immediate scope.
◆ eis_event_get_type()
enum eis_event_type eis_event_get_type | ( | struct eis_event * | event | ) |
◆ eis_event_keyboard_get_key()
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-event-codes.h).
◆ eis_event_keyboard_get_key_is_press()
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.
◆ eis_event_pointer_get_absolute_x()
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.
◆ eis_event_pointer_get_absolute_y()
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.
◆ eis_event_pointer_get_button()
uint32_t eis_event_pointer_get_button | ( | struct eis_event * | event | ) |
For an event of type EIS_EVENT_POINTER_BUTTON return the button code as defined in linux/input-event-codes.h.
◆ eis_event_pointer_get_button_is_press()
bool eis_event_pointer_get_button_is_press | ( | struct eis_event * | event | ) |
For an event of type EIS_EVENT_POINTER_BUTTON return true if the event is a button press, false for a release.
◆ eis_event_pointer_get_dx()
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.
◆ eis_event_pointer_get_dy()
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.
◆ eis_event_pointer_get_scroll_discrete_x()
int32_t eis_event_pointer_get_scroll_discrete_x | ( | struct eis_event * | event | ) |
For an event of type EIS_EVENT_POINTER_SCROLL_DISCRETE return the x scroll distance in fractions or multiples of 120.
◆ eis_event_pointer_get_scroll_discrete_y()
int32_t eis_event_pointer_get_scroll_discrete_y | ( | struct eis_event * | event | ) |
For an event of type EIS_EVENT_POINTER_SCROLL_DISCRETE return the y scroll distance in fractions or multiples of 120.
◆ eis_event_pointer_get_scroll_x()
double eis_event_pointer_get_scroll_x | ( | struct eis_event * | event | ) |
For an event of type EIS_EVENT_POINTER_SCROLL return the x scroll distance in logical pixels.
◆ eis_event_pointer_get_scroll_y()
double eis_event_pointer_get_scroll_y | ( | struct eis_event * | event | ) |
For an event of type EIS_EVENT_POINTER_SCROLL return the y scroll distance in logical pixels.
◆ eis_event_touch_get_id()
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.
The tracking ID is a unique identifier for a touch and is valid from touch down through to touch up but may be re-used in the future. The tracking ID is randomly assigned to a touch, a client must not expect any specific value.
◆ eis_event_touch_get_x()
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 touch.
◆ eis_event_touch_get_y()
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 touch.
◆ eis_event_unref()
struct eis_event* eis_event_unref | ( | struct eis_event * | event | ) |
Release resources associated with this event.
This function always returns NULL.
The caller cannot increase the refcount of an event. Events should be considered transient data and not be held longer than required. eis_event_unref() is provided for consistency (as opposed to, say, eis_event_free()).
◆ eis_get_event()
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.
The returned event is refcounted, use eis_event_unref() to drop the reference.
You must not call this function while holding a reference to an event returned by eis_peek_event().
◆ eis_get_fd()
int eis_get_fd | ( | struct eis * | eis | ) |
libeis keeps a single file descriptor for all events.
This fd should be monitored for events by the caller's mainloop, e.g. using select(). When events are available on this fd, call libeis_dispatch() immediately to process.
◆ eis_get_user_data()
void* eis_get_user_data | ( | struct eis * | eis | ) |
◆ eis_keymap_get_device()
struct eis_device* eis_keymap_get_device | ( | struct eis_keymap * | keymap | ) |
Return the device this keymap belongs to, or NULL
if it has not yet been assigned to a device.
If the keymap is a client-assigned keymap and the server has changed or unset the keymap with eis_device_keyboard_set_keymap(), this function returns NULL
.
◆ eis_keymap_get_fd()
int eis_keymap_get_fd | ( | struct eis_keymap * | keymap | ) |
Return a memmap-able file descriptor pointing to the keymap used by the device.
The keymap is constant for the lifetime of the device and assigned to this device individually.
◆ eis_keymap_get_size()
size_t eis_keymap_get_size | ( | struct eis_keymap * | keymap | ) |
- Returns
- the size of the keymap in bytes
◆ eis_keymap_get_type()
enum eis_keymap_type eis_keymap_get_type | ( | struct eis_keymap * | keymap | ) |
Returns the type for this keymap.
The type specifies how to interpret the data at the file descriptor returned by eis_keymap_get_fd().
◆ eis_keymap_new()
struct eis_keymap* eis_keymap_new | ( | enum eis_keymap_type | type, |
int | fd, | ||
size_t | size | ||
) |
Create a new keymap of the given type
.
This keymap does not immediately apply to the device, use eis_device_keyboard_set_keymap() to apply this keymap. A keymap may only be applied once and to a single device.
The returned keymap has a refcount of at least 1, use eis_keymap_unref() to release resources associated with this keymap.
- Parameters
-
type The type of the keymap. fd A memmap-able file descriptor of size size
pointing to the keymap used by this device.fd
can be closed by the caller after this function completes.size The size of the data at fd
in bytes
- Returns
- A keymap object or
NULL
on failure.
◆ eis_keymap_ref()
struct eis_keymap* eis_keymap_ref | ( | struct eis_keymap * | keymap | ) |
◆ eis_keymap_unref()
struct eis_keymap* eis_keymap_unref | ( | struct eis_keymap * | keymap | ) |
◆ eis_log_get_priority()
enum eis_log_priority eis_log_get_priority | ( | const struct eis * | eis | ) |
◆ eis_log_set_handler()
void eis_log_set_handler | ( | struct eis * | eis, |
eis_log_handler | log_handler | ||
) |
Change the log handler for this context.
If the log handler is NULL, the built-in default log function is used.
- Parameters
-
eis The EIS context log_handler The log handler or NULL to use the default log handler.
◆ eis_log_set_priority()
void eis_log_set_priority | ( | struct eis * | eis, |
enum eis_log_priority | priority | ||
) |
◆ eis_new()
struct eis* eis_new | ( | void * | user_data | ) |
Create a new libeis context with a refcount of 1.
◆ eis_peek_event()
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 queue, i.e.
the next call to eis_get_event() will return that same event.
This call is useful for checking whether there is an event and/or what type of event it is.
Repeated calls to eis_peek_event() return the same event.
The returned event is refcounted, use eis_event_unref() to drop the reference.
A caller must not call eis_get_event() while holding a ref to an event returned by eis_peek_event().
◆ eis_ref()
struct eis* eis_ref | ( | struct eis * | eis | ) |
◆ eis_seat_add()
void eis_seat_add | ( | struct eis_seat * | seat | ) |
Add this seat to its client and notify the client of the seat's availability.
This allows the client to create a device within this seat.
◆ eis_seat_allow_capability()
void eis_seat_allow_capability | ( | struct eis_seat * | seat, |
enum eis_device_capability | cap | ||
) |
Allow a capability on the seat.
This indicates to the client that it may create devices with with the given capabilities, though the EIS implementation may restrict the of capabilities on a device to a subset of those in the seat, see eis_device_allow_capability().
This function must be called before eis_seat_add().
This function has no effect if called after eis_seat_add()
◆ eis_seat_get_client()
struct eis_client* eis_seat_get_client | ( | struct eis_seat * | eis_seat | ) |
◆ eis_seat_get_name()
const char* eis_seat_get_name | ( | struct eis_seat * | eis_seat | ) |
◆ eis_seat_get_user_data()
void* eis_seat_get_user_data | ( | struct eis_seat * | eis_seat | ) |
◆ eis_seat_ref()
struct eis_seat* eis_seat_ref | ( | struct eis_seat * | seat | ) |
◆ eis_seat_remove()
void eis_seat_remove | ( | struct eis_seat * | seat | ) |
Remove this seat and all its remaining devices.
◆ eis_seat_set_user_data()
void eis_seat_set_user_data | ( | struct eis_seat * | eis_seat, |
void * | user_data | ||
) |
◆ eis_seat_unref()
struct eis_seat* eis_seat_unref | ( | struct eis_seat * | seat | ) |
◆ eis_set_user_data()
void eis_set_user_data | ( | struct eis * | eis, |
void * | user_data | ||
) |
◆ eis_setup_backend_fd()
int eis_setup_backend_fd | ( | struct eis * | ctx | ) |
Initialize the context that can take pre-configured sockets.
◆ eis_setup_backend_socket()
int eis_setup_backend_socket | ( | struct eis * | ctx, |
const char * | path | ||
) |
Initialize the context with a UNIX socket name.
If the path does not start with / it is relative to $XDG_RUNTIME_DIR.
◆ eis_unref()
struct eis* eis_unref | ( | struct eis * | eis | ) |