libevdev  0.1
A wrapper library for evdev devices
 All Files Functions Typedefs Enumerations Enumerator Groups
Typedefs | Enumerations | Functions
libevdev.h File Reference
#include <linux/input.h>
#include <stdarg.h>

Go to the source code of this file.

Typedefs

typedef void(* libevdev_log_func_t )(const char *format, va_list args)
 Logging function called by library-internal logging. More...
 

Enumerations

enum  EvdevReadFlags { LIBEVDEV_READ_SYNC = 1, LIBEVDEV_READ_NORMAL = 2, LIBEVDEV_FORCE_SYNC = 4, LIBEVDEV_READ_BLOCKING = 8 }
 
enum  EvdevGrabModes { LIBEVDEV_GRAB = 3, LIBEVDEV_UNGRAB = 4 }
 

Functions

struct libevdev * libevdev_new (void)
 Initialize a new libevdev device. More...
 
int libevdev_new_from_fd (int fd, struct libevdev **dev)
 Initialize a new libevdev device from the given fd. More...
 
void libevdev_free (struct libevdev *dev)
 Clean up and free the libevdev struct. More...
 
void libevdev_set_log_handler (struct libevdev *dev, libevdev_log_func_t logfunc)
 Set a printf-style logging handler for library-internal logging. More...
 
int libevdev_grab (struct libevdev *dev, int grab)
 Grab or ungrab the device through a kernel EVIOCGRAB. More...
 
int libevdev_set_fd (struct libevdev *dev, int fd)
 Set the fd for this struct and initialize internal data. More...
 
int libevdev_change_fd (struct libevdev *dev, int fd)
 Change the fd for this device, without re-reading the actual device. More...
 
int libevdev_get_fd (const struct libevdev *dev)
 
int libevdev_next_event (struct libevdev *dev, unsigned int flags, struct input_event *ev)
 Get the next event from the device. More...
 
const char * libevdev_get_name (const struct libevdev *dev)
 
const char * libevdev_get_phys (const struct libevdev *dev)
 Virtual devices such as uinput devices have no phys location. More...
 
const char * libevdev_get_uniq (const struct libevdev *dev)
 
int libevdev_get_product_id (const struct libevdev *dev)
 
int libevdev_get_vendor_id (const struct libevdev *dev)
 
int libevdev_get_bustype (const struct libevdev *dev)
 
int libevdev_get_version (const struct libevdev *dev)
 
int libevdev_get_driver_version (const struct libevdev *dev)
 
int libevdev_has_property (const struct libevdev *dev, unsigned int prop)
 
int libevdev_has_event_type (const struct libevdev *dev, unsigned int type)
 
int libevdev_has_event_code (const struct libevdev *dev, unsigned int type, unsigned int code)
 
int libevdev_get_abs_min (const struct libevdev *dev, unsigned int code)
 Get the minimum axis value for the given axis, as advertised by the kernel. More...
 
int libevdev_get_abs_max (const struct libevdev *dev, unsigned int code)
 Get the maximum axis value for the given axis, as advertised by the kernel. More...
 
int libevdev_get_abs_fuzz (const struct libevdev *dev, unsigned int code)
 Get the axis fuzz for the given axis, as advertised by the kernel. More...
 
int libevdev_get_abs_flat (const struct libevdev *dev, unsigned int code)
 Get the axis flat for the given axis, as advertised by the kernel. More...
 
int libevdev_get_abs_resolution (const struct libevdev *dev, unsigned int code)
 Get the axis resolution for the given axis, as advertised by the kernel. More...
 
struct input_absinfo * libevdev_get_abs_info (const struct libevdev *dev, unsigned int code)
 Get the axis info for the given axis, as advertised by the kernel. More...
 
int libevdev_get_event_value (const struct libevdev *dev, unsigned int type, unsigned int code)
 Behaviour of this function is undefined if the device does not provide the event. More...
 
int libevdev_fetch_event_value (const struct libevdev *dev, unsigned int type, unsigned int code, int *value)
 Fetch the current value of the event type. More...
 
int libevdev_get_slot_value (const struct libevdev *dev, unsigned int slot, unsigned int code)
 Return the current value of the code for the given slot. More...
 
int libevdev_fetch_slot_value (const struct libevdev *dev, unsigned int slot, unsigned int code, int *value)
 Fetch the current value of the code for the given slot. More...
 
int libevdev_get_num_slots (const struct libevdev *dev)
 Get the number of slots supported by this device. More...
 
int libevdev_get_current_slot (const struct libevdev *dev)
 Get the currently active slot. More...
 
int libevdev_enable_event_type (struct libevdev *dev, unsigned int type)
 Forcibly enable an event type on this device, even if the underlying device does not support it. More...
 
int libevdev_disable_event_type (struct libevdev *dev, unsigned int type)
 Forcibly disable an event type on this device, even if the underlying device provides it, effectively muting all keys or axes. More...
 
int libevdev_enable_event_code (struct libevdev *dev, unsigned int type, unsigned int code, const void *data)
 Forcibly enable an event type on this device, even if the underlying device does not support it. More...
 
int libevdev_disable_event_code (struct libevdev *dev, unsigned int type, unsigned int code)
 Forcibly disable an event code on this device, even if the underlying device provides it, effectively muting this key or axis. More...
 
int libevdev_kernel_set_abs_value (struct libevdev *dev, unsigned int code, const struct input_absinfo *abs)
 Set the device's EV_ABS axis to the value defined in the abs parameter. More...
 
int libevdev_is_event_type (const struct input_event *ev, unsigned int type)
 Helper function to check if an event is of a specific type. More...
 
int libevdev_is_event_code (const struct input_event *ev, unsigned int type, unsigned int code)
 Helper function to check if an event is of a specific type and code. More...
 
const char * libevdev_get_event_type_name (unsigned int type)
 
const char * libevdev_get_event_code_name (unsigned int type, unsigned int code)
 
const char * libevdev_get_input_prop_name (unsigned int prop)
 
int libevdev_get_event_type_max (unsigned int type)
 
int libevdev_get_repeat (struct libevdev *dev, int *delay, int *period)
 Get the repeat delay and repeat period values for this device. More...
 

Typedef Documentation

typedef void(* libevdev_log_func_t)(const char *format, va_list args)

Logging function called by library-internal logging.

This function is expected to treat it's input like printf would.

Parameters
formatprintf-style format string
argsList of arguments
See Also
libevdev_set_log_handler

Enumeration Type Documentation

Enumerator
LIBEVDEV_GRAB 
LIBEVDEV_UNGRAB 
Enumerator
LIBEVDEV_READ_SYNC 

Process data in sync mode.

LIBEVDEV_READ_NORMAL 

Process data in normal mode.

LIBEVDEV_FORCE_SYNC 

Pretend the next event is a SYN_DROPPED.

There is no reason to ever use this except for automated tests, so don't.

LIBEVDEV_READ_BLOCKING 

The fd is not in O_NONBLOCK and a read may block.

Function Documentation

int libevdev_get_fd ( const struct libevdev *  dev)
Parameters
devThe evdev device
Returns
The previously set fd, or -1 if none had been set previously.
Note
This function may be called before libevdev_set_fd().
int libevdev_grab ( struct libevdev *  dev,
int  grab 
)

Grab or ungrab the device through a kernel EVIOCGRAB.

This prevents other clients (including kernel-internal ones such as rfkill) from receiving events from this device.

This is generally a bad idea. Don't do this.

Grabbing an already grabbed device, or ungrabbing an ungrabbed device is a noop and always succeeds.

Parameters
devThe evdev device, already initialized with libevdev_set_fd()
grabIf true, grab the device. Otherwise ungrab the device.
Returns
0 if the device was successfull grabbed or ungrabbed, or a negative errno in case of failure.
void libevdev_set_log_handler ( struct libevdev *  dev,
libevdev_log_func_t  logfunc 
)

Set a printf-style logging handler for library-internal logging.

The default logging function is a noop.

Parameters
devThe evdev device
logfuncThe logging function for this device. If NULL, the current logging function is unset.
Note
This function may be called before libevdev_set_fd().