libei  0.2
A library for Emulated Input
libeis.h File Reference
#include <stddef.h>
#include <stdbool.h>
#include <stdint.h>

Go to the source code of this file.

Typedefs

typedef void(* eis_log_handler) (struct eis *eis, enum eis_log_priority priority, const char *file, int lineno, const char *func, const char *message, bool is_continuation)
 The log handler for library logging. More...
 

Enumerations

enum  eis_device_type { EIS_DEVICE_TYPE_VIRTUAL , EIS_DEVICE_TYPE_PHYSICAL }
 The device type determines what the device represents. More...
 
enum  eis_device_capability { EIS_DEVICE_CAP_POINTER , EIS_DEVICE_CAP_POINTER_ABSOLUTE , EIS_DEVICE_CAP_KEYBOARD , EIS_DEVICE_CAP_TOUCH }
 
enum  eis_property_permission {
  EIS_PROPERTY_PERM_NONE , EIS_PROPERTY_PERM_READ , EIS_PROPERTY_PERM_WRITE , EIS_PROPERTY_PERM_DELETE ,
  EIS_PROPERTY_PERM_ALL
}
 A set of masks for operations permitted on properties. More...
 
enum  eis_keymap_type { EIS_KEYMAP_TYPE_XKB }
 
enum  eis_event_type {
  EIS_EVENT_CLIENT_CONNECT , EIS_EVENT_CLIENT_DISCONNECT , EIS_EVENT_CLIENT_PROPERTY , EIS_EVENT_SEAT_BIND ,
  EIS_EVENT_DEVICE_CLOSED , EIS_EVENT_FRAME , EIS_EVENT_DEVICE_START_EMULATING , EIS_EVENT_DEVICE_STOP_EMULATING ,
  EIS_EVENT_POINTER_MOTION , EIS_EVENT_POINTER_MOTION_ABSOLUTE , EIS_EVENT_POINTER_BUTTON , EIS_EVENT_POINTER_SCROLL ,
  EIS_EVENT_POINTER_SCROLL_STOP , EIS_EVENT_POINTER_SCROLL_CANCEL , EIS_EVENT_POINTER_SCROLL_DISCRETE , EIS_EVENT_KEYBOARD_KEY ,
  EIS_EVENT_TOUCH_DOWN , EIS_EVENT_TOUCH_UP , EIS_EVENT_TOUCH_MOTION
}
 
enum  eis_log_priority { EIS_LOG_PRIORITY_DEBUG , EIS_LOG_PRIORITY_INFO , EIS_LOG_PRIORITY_WARNING , EIS_LOG_PRIORITY_ERROR }
 

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)
 
bool eis_client_is_sender (struct eis_client *client)
 Returns true if the client is a sender, false otherwise. More...
 
void eis_client_property_set (struct eis_client *client, const char *property, const char *value)
 See eis_client_property_set_with_permissions(), but the permissions are left as-is. More...
 
void eis_client_property_set_with_permissions (struct eis_client *client, const char *property, const char *value, uint32_t permission)
 Change, create or delete a property. More...
 
uint32_t eis_client_property_get_permissions (struct eis_client *client, const char *propert)
 Return the permissions mask for the given property. More...
 
const char * eis_client_property_get (struct eis_client *client, const char *property)
 Return the value of the given property or NULL if the property is not set. More...
 
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_client (struct eis *ctx)
 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)
 
bool eis_seat_has_capability (struct eis_seat *seat, enum eis_device_capability cap)
 
void eis_seat_set_user_data (struct eis_seat *eis_seat, void *user_data)
 
void eis_seat_configure_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)
 
const char * eis_event_property_get_name (struct eis_event *event)
 For an event of type EIS_EVENT_CLIENT_PROPERTY, get the property name that has changed. More...
 
const char * eis_event_property_get_value (struct eis_event *event)
 For an event of type EIS_EVENT_CLIENT_PROPERTY, get the new property value (at the time of the event). More...
 
uint32_t eis_event_property_get_permissions (struct eis_event *event)
 For an event of type EIS_EVENT_CLIENT_PROPERTY, get the permissions of the property (at the time of the event). More...
 
struct eis_seat * eis_event_get_seat (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...
 
bool eis_device_has_capability (struct eis_device *device, enum eis_device_capability cap)
 
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. More...
 
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. More...
 
struct eis_device * eis_seat_new_device (struct eis_seat *seat)
 Create a new device on the seat. More...
 
void eis_device_configure_type (struct eis_device *device, enum eis_device_type type)
 Set the device type for this device. More...
 
enum eis_device_type eis_device_get_type (struct eis_device *device)
 
void eis_device_configure_name (struct eis_device *device, const char *name)
 
void eis_device_configure_capability (struct eis_device *device, enum eis_device_capability cap)
 
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. More...
 
struct eis_regioneis_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. More...
 
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() More...
 
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() More...
 
void eis_region_set_physical_scale (struct eis_region *region, double scale)
 Set the physical scale for this region. More...
 
void eis_region_add (struct eis_region *region)
 Add the given region to its device. More...
 
struct eis_regioneis_device_get_region (struct eis_device *device, size_t index)
 Obtain a region from the device. More...
 
struct eis_regioneis_region_ref (struct eis_region *region)
 
struct eis_regioneis_region_unref (struct eis_region *region)
 
void * eis_region_get_user_data (struct eis_region *region)
 
void eis_region_set_user_data (struct eis_region *region, void *user_data)
 
uint32_t eis_region_get_x (struct eis_region *region)
 
uint32_t eis_region_get_y (struct eis_region *region)
 
uint32_t eis_region_get_width (struct eis_region *region)
 
uint32_t eis_region_get_height (struct eis_region *region)
 
void eis_device_add (struct eis_device *device)
 Add this device to its seat and notify the client of the device's availability. More...
 
void eis_device_remove (struct eis_device *device)
 Remove the device. More...
 
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. 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...
 
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. More...
 
void eis_keymap_add (struct eis_keymap *keymap)
 Set the keymap on the device. 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)
 
void * eis_keymap_get_user_data (struct eis_keymap *eis_keymap)
 
void eis_keymap_set_user_data (struct eis_keymap *eis_keymap, void *user_data)
 
struct eis_device * eis_keymap_get_device (struct eis_keymap *keymap)
 Return the device this keymap belongs to. 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_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. More...
 
void eis_device_start_emulating (struct eis_device *device)
 see ei_device_start_emulating More...
 
void eis_device_stop_emulating (struct eis_device *device)
 see ei_device_stop_emulating More...
 
void eis_device_frame (struct eis_device *device)
 see ei_device_frame More...
 
void eis_device_pointer_motion (struct eis_device *device, double x, double y)
 see ei_device_pointer_motion More...
 
void eis_device_pointer_motion_absolute (struct eis_device *device, double x, double y)
 see ei_device_pointer_motion_absolute More...
 
void eis_device_pointer_button (struct eis_device *device, uint32_t button, bool is_press)
 see ei_device_pointer_button More...
 
void eis_device_pointer_scroll (struct eis_device *device, double x, double y)
 see ei_device_pointer_scroll More...
 
void eis_device_pointer_scroll_discrete (struct eis_device *device, int32_t x, int32_t y)
 see ei_device_pointer_scroll_discrete More...
 
void eis_device_pointer_scroll_stop (struct eis_device *device, bool stop_x, bool stop_y)
 see ei_device_pointer_scroll_stop More...
 
void eis_device_pointer_scroll_cancel (struct eis_device *device, bool cancel_x, bool cancel_y)
 see ei_device_pointer_scroll_cancel More...
 
void eis_device_keyboard_key (struct eis_device *device, uint32_t keycode, bool is_press)
 see ei_device_keyboard_key More...
 
struct eis_touch * eis_device_touch_new (struct eis_device *device)
 see ei_device_touch_new More...
 
void eis_touch_down (struct eis_touch *touch, double x, double y)
 see ei_touch_down More...
 
void eis_touch_motion (struct eis_touch *touch, double x, double y)
 see ei_touch_motion More...
 
void eis_touch_up (struct eis_touch *touch)
 see ei_touch_up More...
 
struct eis_touch * eis_touch_ref (struct eis_touch *touch)
 see ei_touch_ref More...
 
struct eis_touch * eis_touch_unref (struct eis_touch *touch)
 see ei_touch_unref More...
 
void eis_touch_set_user_data (struct eis_touch *touch, void *user_data)
 see ei_touch_set_user_data More...
 
void * eis_touch_get_user_data (struct eis_touch *touch)
 see ei_touch_get_user_data More...
 
struct eis_device * eis_touch_get_device (struct eis_touch *touch)
 see ei_touch_get_device More...
 
bool eis_event_seat_has_capability (struct eis_event *event, enum eis_device_capability cap)
 For an event of type EIS_EVENT_SEAT_BIND, return the capabilities requested by the client. 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 or mm, depending on the device type. 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 or mm, depending on the device type. 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 or mm, depending on the device type. 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 or mm, depending on the device type. 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 or mm, depending on the device type. 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 or mm, depending on the device type. More...
 
bool eis_event_pointer_get_scroll_stop_x (struct eis_event *event)
 For an event of type EIS_EVENT_POINTER_SCROLL_STOP return whether the x axis has stopped scrolling. More...
 
bool eis_event_pointer_get_scroll_stop_y (struct eis_event *event)
 For an event of type EIS_EVENT_POINTER_SCROLL_STOP return whether the y axis has stopped scrolling. 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 in logical pixels or mm, depending on the device type. 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 in logical pixels or mm, depending on the device type. More...