libinput  0.3.0
A wrapper library for input devices
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
libinput.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2013 Jonas Ådahl
3  *
4  * Permission to use, copy, modify, distribute, and sell this software and
5  * its documentation for any purpose is hereby granted without fee, provided
6  * that the above copyright notice appear in all copies and that both that
7  * copyright notice and this permission notice appear in supporting
8  * documentation, and that the name of the copyright holders not be used in
9  * advertising or publicity pertaining to distribution of the software
10  * without specific, written prior permission. The copyright holders make
11  * no representations about the suitability of this software for any
12  * purpose. It is provided "as is" without express or implied warranty.
13  *
14  * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
15  * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
16  * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
17  * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
18  * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
19  * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21  */
22 
23 #ifndef LIBINPUT_H
24 #define LIBINPUT_H
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 #include <stdlib.h>
31 #include <stdint.h>
32 #include <libudev.h>
33 
88 };
89 
101 };
102 
112 };
113 
123 };
124 
134 };
135 
136 
145 };
146 
159 
169 
175 
177 
182 
192 };
193 
194 struct libinput;
195 struct libinput_device;
196 struct libinput_seat;
197 
198 struct libinput_event;
199 struct libinput_event_device_notify;
200 struct libinput_event_keyboard;
201 struct libinput_event_pointer;
202 
213 struct libinput_event_touch;
214 
226 void
227 libinput_event_destroy(struct libinput_event *event);
228 
237 libinput_event_get_type(struct libinput_event *event);
238 
247 struct libinput *
248 libinput_event_get_context(struct libinput_event *event);
249 
263 struct libinput_device *
264 libinput_event_get_device(struct libinput_event *event);
265 
276 struct libinput_event_pointer *
277 libinput_event_get_pointer_event(struct libinput_event *event);
278 
289 struct libinput_event_keyboard *
290 libinput_event_get_keyboard_event(struct libinput_event *event);
291 
302 struct libinput_event_touch *
303 libinput_event_get_touch_event(struct libinput_event *event);
304 
316 struct libinput_event_device_notify *
317 libinput_event_get_device_notify_event(struct libinput_event *event);
318 
324 struct libinput_event *
325 libinput_event_device_notify_get_base_event(struct libinput_event_device_notify *event);
326 
339 uint32_t
340 libinput_event_keyboard_get_time(struct libinput_event_keyboard *event);
341 
347 uint32_t
348 libinput_event_keyboard_get_key(struct libinput_event_keyboard *event);
349 
356 libinput_event_keyboard_get_key_state(struct libinput_event_keyboard *event);
357 
358 
364 struct libinput_event *
365 libinput_event_keyboard_get_base_event(struct libinput_event_keyboard *event);
366 
379 uint32_t
381  struct libinput_event_keyboard *event);
382 
395 uint32_t
396 libinput_event_pointer_get_time(struct libinput_event_pointer *event);
397 
410 double
411 libinput_event_pointer_get_dx(struct libinput_event_pointer *event);
412 
425 double
426 libinput_event_pointer_get_dy(struct libinput_event_pointer *event);
427 
445 double
446 libinput_event_pointer_get_absolute_x(struct libinput_event_pointer *event);
447 
465 double
466 libinput_event_pointer_get_absolute_y(struct libinput_event_pointer *event);
467 
485 double
487  struct libinput_event_pointer *event,
488  uint32_t width);
489 
507 double
509  struct libinput_event_pointer *event,
510  uint32_t height);
511 
524 uint32_t
525 libinput_event_pointer_get_button(struct libinput_event_pointer *event);
526 
540 libinput_event_pointer_get_button_state(struct libinput_event_pointer *event);
541 
554 uint32_t
556  struct libinput_event_pointer *event);
557 
571 libinput_event_pointer_get_axis(struct libinput_event_pointer *event);
572 
593 double
594 libinput_event_pointer_get_axis_value(struct libinput_event_pointer *event);
595 
601 struct libinput_event *
602 libinput_event_pointer_get_base_event(struct libinput_event_pointer *event);
603 
604 
616 uint32_t
618 
633 int32_t
635 
650 int32_t
652 
668 double
670 
688 double
690 
704 double
706  uint32_t width);
707 
721 double
723  uint32_t height);
724 
730 struct libinput_event *
732 
749  int (*open_restricted)(const char *path, int flags, void *user_data);
757  void (*close_restricted)(int fd, void *user_data);
758 };
759 
783 struct libinput *
784 libinput_udev_create_for_seat(const struct libinput_interface *interface,
785  void *user_data,
786  struct udev *udev,
787  const char *seat_id);
788 
805 struct libinput *
806 libinput_path_create_context(const struct libinput_interface *interface,
807  void *user_data);
808 
829 struct libinput_device *
830 libinput_path_add_device(struct libinput *libinput,
831  const char *path);
832 
851 void
852 libinput_path_remove_device(struct libinput_device *device);
853 
862 int
863 libinput_get_fd(struct libinput *libinput);
864 
878 int
879 libinput_dispatch(struct libinput *libinput);
880 
892 struct libinput_event *
893 libinput_get_event(struct libinput *libinput);
894 
907 libinput_next_event_type(struct libinput *libinput);
908 
916 void *
917 libinput_get_user_data(struct libinput *libinput);
918 
930 int
931 libinput_resume(struct libinput *libinput);
932 
942 void
943 libinput_suspend(struct libinput *libinput);
944 
953 void
954 libinput_destroy(struct libinput *libinput);
955 
968 void
970 
985 
1000 typedef void (*libinput_log_handler)(enum libinput_log_priority priority,
1001  void *user_data,
1002  const char *format, va_list args);
1003 
1019 void
1021  void *user_data);
1022 
1059 void
1060 libinput_seat_ref(struct libinput_seat *seat);
1061 
1072 void
1073 libinput_seat_unref(struct libinput_seat *seat);
1074 
1086 void
1087 libinput_seat_set_user_data(struct libinput_seat *seat, void *user_data);
1088 
1098 void *
1099 libinput_seat_get_user_data(struct libinput_seat *seat);
1100 
1117 const char *
1118 libinput_seat_get_physical_name(struct libinput_seat *seat);
1119 
1129 const char *
1130 libinput_seat_get_logical_name(struct libinput_seat *seat);
1131 
1146 void
1147 libinput_device_ref(struct libinput_device *device);
1148 
1159 void
1160 libinput_device_unref(struct libinput_device *device);
1161 
1173 void
1174 libinput_device_set_user_data(struct libinput_device *device, void *user_data);
1175 
1185 void *
1186 libinput_device_get_user_data(struct libinput_device *device);
1187 
1196 const char *
1197 libinput_device_get_sysname(struct libinput_device *device);
1198 
1210 const char *
1211 libinput_device_get_output_name(struct libinput_device *device);
1212 
1226 struct libinput_seat *
1227 libinput_device_get_seat(struct libinput_device *device);
1228 
1239 void
1240 libinput_device_led_update(struct libinput_device *device,
1241  enum libinput_led leds);
1242 
1255 int
1256 libinput_device_get_keys(struct libinput_device *device,
1257  char *keys, size_t size);
1258 
1272 void
1273 libinput_device_calibrate(struct libinput_device *device,
1274  float calibration[6]);
1275 
1283 int
1284 libinput_device_has_capability(struct libinput_device *device,
1285  enum libinput_device_capability capability);
1286 
1287 #ifdef __cplusplus
1288 }
1289 #endif
1290 
1291 #endif /* LIBINPUT_H */
const char * libinput_seat_get_physical_name(struct libinput_seat *seat)
Return the physical name of the seat.
libinput_log_priority
Log priority for internal logging messages.
Definition: libinput.h:84
enum libinput_log_priority libinput_log_get_priority(void)
Get the global log priority.
Definition: libinput.h:100
uint32_t libinput_event_pointer_get_button(struct libinput_event_pointer *event)
Return the button that triggered this event.
void(* close_restricted)(int fd, void *user_data)
Close the file descriptor.
Definition: libinput.h:757
Definition: libinput.h:185
int libinput_dispatch(struct libinput *libinput)
Main event dispatchment function.
void libinput_log_set_priority(enum libinput_log_priority priority)
Set the global log priority.
Definition: libinput.h:737
void libinput_log_set_handler(libinput_log_handler log_handler, void *user_data)
Set the global log handler.
Definition: libinput.h:181
Definition: libinput.h:133
libinput_led
Mask reflecting LEDs on a device.
Definition: libinput.h:119
Touch event representing a touch down, move or up, as well as a touch cancel and touch frame events...
Definition: libinput.h:201
Definition: libinput.h:183
int32_t libinput_event_touch_get_slot(struct libinput_event_touch *event)
Get the slot of this touch event.
Definition: libinput.h:110
void * libinput_device_get_user_data(struct libinput_device *device)
Get the caller-specific data associated with this input device, if any.
Signals the end of a set of touchpoints at one device sample time.
Definition: libinput.h:191
Definition: libinput.h:122
uint32_t libinput_event_keyboard_get_seat_key_count(struct libinput_event_keyboard *event)
For the key of a LIBINPUT_EVENT_KEYBOARD_KEY event, return the total number of keys pressed on all de...
void * libinput_seat_get_user_data(struct libinput_seat *seat)
Get the caller-specific data associated with this seat, if any.
struct libinput_event * libinput_event_device_notify_get_base_event(struct libinput_event_device_notify *event)
void libinput_seat_ref(struct libinput_seat *seat)
Increase the refcount of the seat.
void libinput_seat_unref(struct libinput_seat *seat)
Decrease the refcount of the seat.
Definition: libinput.h:176
Signals that a device has been added to the context.
Definition: libinput.h:168
Definition: libinput.h:178
double libinput_event_pointer_get_dy(struct libinput_event_pointer *event)
Return the delta between the last event and the current event.
void libinput_path_remove_device(struct libinput_device *device)
Remove a device from a libinput context initialized with libinput_path_create_context() or added to s...
Signals that a device has been removed.
Definition: libinput.h:174
void libinput_device_calibrate(struct libinput_device *device, float calibration[6])
Apply the 3x3 transformation matrix to absolute device coordinates.
libinput_button_state
Logical state of a physical button.
Definition: libinput.h:131
uint32_t libinput_event_touch_get_time(struct libinput_event_touch *event)
double libinput_event_touch_get_x(struct libinput_event_touch *event)
Return the current absolute x coordinate of the touch event.
uint32_t libinput_event_pointer_get_seat_button_count(struct libinput_event_pointer *event)
For the button of a LIBINPUT_EVENT_POINTER_BUTTON event, return the total number of buttons pressed o...
Definition: libinput.h:180
Definition: libinput.h:86
double libinput_event_pointer_get_dx(struct libinput_event_pointer *event)
Return the delta between the last event and the current event.
double libinput_event_pointer_get_absolute_y_transformed(struct libinput_event_pointer *event, uint32_t height)
Return the current absolute y coordinate of the pointer event, transformed to screen coordinates...
double libinput_event_pointer_get_absolute_x(struct libinput_event_pointer *event)
Return the current absolute x coordinate of the pointer event.
struct libinput_event_device_notify * libinput_event_get_device_notify_event(struct libinput_event *event)
Return the device event that is this input event.
libinput_pointer_axis
Axes on a device that are not x or y coordinates.
Definition: libinput.h:142
int(* open_restricted)(const char *path, int flags, void *user_data)
Open the device at the given path with the flags provided and return the fd.
Definition: libinput.h:749
Definition: libinput.h:98
struct libinput * libinput_udev_create_for_seat(const struct libinput_interface *interface, void *user_data, struct udev *udev, const char *seat_id)
Create a new libinput context from udev, for input devices matching the given seat ID...
libinput_device_capability
Capabilities on a device.
Definition: libinput.h:97
Definition: libinput.h:184
double libinput_event_touch_get_y(struct libinput_event_touch *event)
Return the current absolute y coordinate of the touch event.
int32_t libinput_event_touch_get_seat_slot(struct libinput_event_touch *event)
Get the seat slot of the touch event.
double libinput_event_pointer_get_absolute_y(struct libinput_event_pointer *event)
Return the current absolute y coordinate of the pointer event.
void libinput_device_led_update(struct libinput_device *device, enum libinput_led leds)
Update the LEDs on the device, if any.
struct libinput_device * libinput_path_add_device(struct libinput *libinput, const char *path)
Add a device to a libinput context initialized with libinput_path_create_context().
double libinput_event_touch_get_x_transformed(struct libinput_event_touch *event, uint32_t width)
Return the current absolute x coordinate of the touch event, transformed to screen coordinates...
Definition: libinput.h:85
struct libinput * libinput_event_get_context(struct libinput_event *event)
Get the libinput context from the event.
Definition: libinput.h:111
Definition: libinput.h:186
enum libinput_keyboard_key_state libinput_event_keyboard_get_key_state(struct libinput_event_keyboard *event)
void libinput_device_unref(struct libinput_device *device)
Decrease the refcount of the input device.
struct libinput * libinput_path_create_context(const struct libinput_interface *interface, void *user_data)
Create a new libinput context that requires the caller to manually add or remove devices with libinpu...
enum libinput_event_type libinput_event_get_type(struct libinput_event *event)
Get the type of the event.
double libinput_event_pointer_get_axis_value(struct libinput_event_pointer *event)
Return the axis value of the given axis.
struct libinput_device * libinput_event_get_device(struct libinput_event *event)
Return the device associated with this event, if applicable.
void * libinput_get_user_data(struct libinput *libinput)
Definition: libinput.h:99
void libinput_event_destroy(struct libinput_event *event)
Destroy the event.
Definition: libinput.h:143
Definition: libinput.h:179
void libinput_suspend(struct libinput *libinput)
Suspend monitoring for new devices and close existing devices.
void libinput_device_ref(struct libinput_device *device)
Increase the refcount of the input device.
Definition: libinput.h:120
Definition: libinput.h:144
libinput_keyboard_key_state
Logical state of a key.
Definition: libinput.h:109
uint32_t libinput_event_keyboard_get_key(struct libinput_event_keyboard *event)
Definition: libinput.h:132
int libinput_get_fd(struct libinput *libinput)
libinput keeps a single file descriptor for all events.
int libinput_resume(struct libinput *libinput)
Resume a suspended libinput context.
int libinput_device_get_keys(struct libinput_device *device, char *keys, size_t size)
Set the bitmask in keys to the bitmask of the keys present on the device (see linux/input.h), up to size characters.
libinput_event_type
Event type for events returned by libinput_get_event().
Definition: libinput.h:152
struct libinput_event * libinput_get_event(struct libinput *libinput)
Retrieve the next event from libinput's internal event queue.
enum libinput_event_type libinput_next_event_type(struct libinput *libinput)
Return the type of the next event in the internal queue.
int libinput_device_has_capability(struct libinput_device *device, enum libinput_device_capability capability)
Check if the given device has the specified capability.
double libinput_event_pointer_get_absolute_x_transformed(struct libinput_event_pointer *event, uint32_t width)
Return the current absolute x coordinate of the pointer event, transformed to screen coordinates...
uint32_t libinput_event_keyboard_get_time(struct libinput_event_keyboard *event)
struct libinput_event_keyboard * libinput_event_get_keyboard_event(struct libinput_event *event)
Return the keyboard event that is this input event.
Definition: libinput.h:121
void libinput_destroy(struct libinput *libinput)
Destroy the libinput context.
struct libinput_seat * libinput_device_get_seat(struct libinput_device *device)
Get the seat associated with this input device.
enum libinput_button_state libinput_event_pointer_get_button_state(struct libinput_event_pointer *event)
Return the button state that triggered this event.
const char * libinput_device_get_sysname(struct libinput_device *device)
Get the system name of the device.
void libinput_seat_set_user_data(struct libinput_seat *seat, void *user_data)
Set caller-specific data associated with this seat.
const char * libinput_seat_get_logical_name(struct libinput_seat *seat)
Return the logical name of the seat.
double libinput_event_touch_get_y_transformed(struct libinput_event_touch *event, uint32_t height)
Return the current absolute y coordinate of the touch event, transformed to screen coordinates...
enum libinput_pointer_axis libinput_event_pointer_get_axis(struct libinput_event_pointer *event)
Return the axis that triggered this event.
struct libinput_event * libinput_event_keyboard_get_base_event(struct libinput_event_keyboard *event)
const char * libinput_device_get_output_name(struct libinput_device *device)
A device may be mapped to a single output, or all available outputs.
uint32_t libinput_event_pointer_get_time(struct libinput_event_pointer *event)
struct libinput_event * libinput_event_touch_get_base_event(struct libinput_event_touch *event)
void(* libinput_log_handler)(enum libinput_log_priority priority, void *user_data, const char *format, va_list args)
Log handler type for custom logging.
Definition: libinput.h:1000
This is not a real event type, and is only used to tell the user that no new event is available in th...
Definition: libinput.h:158
void libinput_device_set_user_data(struct libinput_device *device, void *user_data)
Set caller-specific data associated with this input device.
struct libinput_event * libinput_event_pointer_get_base_event(struct libinput_event_pointer *event)
struct libinput_event_pointer * libinput_event_get_pointer_event(struct libinput_event *event)
Return the pointer event that is this input event.
Definition: libinput.h:87
struct libinput_event_touch * libinput_event_get_touch_event(struct libinput_event *event)
Return the touch event that is this input event.