libevdev  0.2
A wrapper library for evdev devices
 All Files Functions Typedefs Enumerations Enumerator Groups
Functions
Modifying the appearance or capabilities of the device

Modifying the set of events reported by this device. More...

Functions

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...
 

Detailed Description

Modifying the set of events reported by this device.

By default, the libevdev device mirrors the kernel device, enabling only those bits exported by the kernel. This set of functions enable or disable bits as seen from the caller.

Enabling an event type or code does not affect event reporting - a software-enabled event will not be generated by the physical hardware. Disabling an event will prevent libevdev from routing such events to the caller. Enabling and disabling event types and codes is at the library level and thus only affects the caller.

If an event type or code is enabled at kernel-level, future users of this device will see this event enabled. Currently there is no option of disabling an event type or code at kernel-level.

Function Documentation

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.

libevdev will filter any events matching this type and code and none will reach the caller. libevdev_has_event_code() will return false for this code combination.

Disabling all event codes for a given type will not disable the event type. Use libevdev_disable_event_type() for that.

This is a local modification only affecting only this representation of this device.

Disabling EV_SYN will not work. Don't shoot yourself in the foot. It hurts.

Parameters
devThe evdev device, already initialized with libevdev_set_fd()
typeThe event type to disable (EV_ABS, EV_KEY, ...)
codeThe event code to disable (ABS_X, REL_X, etc.)
Returns
0 on success or -1 otherwise
See Also
libevdev_has_event_code
libevdev_disable_event_type
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.

libevdev will filter any events matching this type and none will reach the caller. libevdev_has_event_type() will return false for this type.

In most cases, a caller likely only wants to disable a single code, not the whole type. Use libevdev_disable_event_code() for that.

Disabling EV_SYN will not work. Don't shoot yourself in the foot. It hurts.

This is a local modification only affecting only this representation of this device.

Parameters
devThe evdev device, already initialized with libevdev_set_fd()
typeThe event type to disable (EV_ABS, EV_KEY, ...)
Returns
0 on success or -1 otherwise
See Also
libevdev_has_event_type
libevdev_disable_event_type
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.

While this cannot make the device actually report such events, it will now return true for libevdev_has_event_code().

The last argument depends on the type and code:

  • If type is EV_ABS, data must be a pointer to a struct input_absinfo containing the data for this axis.
  • For all other types, the argument must be NULL.

This function calls libevdev_enable_event_type() if necessary.

This is a local modification only affecting only this representation of this device.

Parameters
devThe evdev device, already initialized with libevdev_set_fd()
typeThe event type to enable (EV_ABS, EV_KEY, ...)
codeThe event code to enable (ABS_X, REL_X, etc.)
dataIf type is EV_ABS, data points to a struct input_absinfo. Otherwise, data must be NULL
Returns
0 on success or -1 otherwise
See Also
libevdev_enable_event_type
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.

While this cannot make the device actually report such events, it will now return true for libevdev_has_event_type().

This is a local modification only affecting only this representation of this device.

Parameters
devThe evdev device, already initialized with libevdev_set_fd()
typeThe event type to enable (EV_ABS, EV_KEY, ...)
Returns
0 on success or -1 otherwise
See Also
libevdev_has_event_type
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.

This will be written to the kernel.

Parameters
devThe evdev device, already initialized with libevdev_set_fd()
codeThe EV_ABS event code to modify, one of ABS_X, ABS_Y, etc.
absAxis info to set the kernel axis to
Returns
zero on success, or a negative errno on failure
See Also
libevdev_enable_event_code