2 * Copyright © 2013 Red Hat, Inc.
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that copyright
7 * notice and this permission notice appear in supporting documentation, and
8 * that the name of the copyright holders not be used in advertising or
9 * publicity pertaining to distribution of the software without specific,
10 * written prior permission. The copyright holders make no representations
11 * about the suitability of this software for any purpose. It is provided "as
12 * is" without express or implied warranty.
14 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
32 #include <libevdev/libevdev.h>
33 #include <libevdev/libevdev-uinput.h>
36 enum litest_device_type {
37 LITEST_NO_DEVICE = -1,
38 LITEST_SYNAPTICS_CLICKPAD = -2,
39 LITEST_SYNAPTICS_TOUCHPAD = -3,
40 LITEST_SYNAPTICS_TOPBUTTONPAD = -4,
43 LITEST_TRACKPOINT = -7,
45 LITEST_WACOM_TOUCH = -9,
46 LITEST_ALPS_SEMI_MT = -10,
47 LITEST_GENERIC_SINGLETOUCH = -11,
50 enum litest_device_feature {
51 LITEST_DISABLE_DEVICE = -1,
53 LITEST_TOUCHPAD = 1 << 0,
54 LITEST_CLICKPAD = 1 << 1,
55 LITEST_BUTTON = 1 << 2,
57 LITEST_POINTER = 1 << 4,
58 LITEST_WHEEL = 1 << 5,
59 LITEST_TOUCH = 1 << 6,
60 LITEST_SINGLE_TOUCH = 1 << 7,
61 LITEST_APPLE_CLICKPAD = 1 << 8,
62 LITEST_TOPBUTTONPAD = 1 << 9,
63 LITEST_SEMI_MT = 1 << 10,
66 struct litest_device {
67 struct libevdev *evdev;
68 struct libevdev_uinput *uinput;
69 struct libinput *libinput;
71 struct libinput_device *libinput_device;
72 struct litest_device_interface *interface;
75 void *private; /* device-specific data */
78 struct libinput *litest_create_context(void);
80 void litest_add(const char *name, void *func,
81 enum litest_device_feature required_feature,
82 enum litest_device_feature excluded_feature);
84 litest_add_for_device(const char *name,
86 enum litest_device_type type);
87 void litest_add_no_device(const char *name, void *func);
89 int litest_run(int argc, char **argv);
90 struct litest_device * litest_create_device(enum litest_device_type which);
91 struct libevdev_uinput *
92 litest_create_uinput_device_from_description(const char *name,
93 const struct input_id *id,
94 const struct input_absinfo *abs,
96 struct litest_device *
97 litest_create_device_with_overrides(enum litest_device_type which,
98 const char *name_override,
99 struct input_id *id_override,
100 const struct input_absinfo *abs_override,
101 const int *events_override);
102 struct litest_device *
103 litest_add_device_with_overrides(struct libinput *libinput,
104 enum litest_device_type which,
105 const char *name_override,
106 struct input_id *id_override,
107 const struct input_absinfo *abs_override,
108 const int *events_override);
110 struct litest_device *litest_current_device(void);
111 void litest_delete_device(struct litest_device *d);
112 int litest_handle_events(struct litest_device *d);
114 void litest_event(struct litest_device *t,
118 int litest_auto_assign_value(struct litest_device *d,
119 const struct input_event *ev,
120 int slot, double x, double y);
121 void litest_touch_up(struct litest_device *d, unsigned int slot);
122 void litest_touch_move(struct litest_device *d,
126 void litest_touch_down(struct litest_device *d,
130 void litest_touch_move_to(struct litest_device *d,
132 double x_from, double y_from,
133 double x_to, double y_to,
135 void litest_button_click(struct litest_device *d,
138 void litest_keyboard_key(struct litest_device *d,
141 void litest_wait_for_event(struct libinput *li);
142 void litest_wait_for_event_of_type(struct libinput *li, ...);
143 void litest_drain_events(struct libinput *li);
144 void litest_assert_empty_queue(struct libinput *li);
146 struct libevdev_uinput * litest_create_uinput_device(const char *name,
149 struct libevdev_uinput * litest_create_uinput_abs_device(const char *name,
151 const struct input_absinfo *abs,
154 #ifndef ck_assert_notnull
155 #define ck_assert_notnull(ptr) ck_assert_ptr_ne(ptr, NULL)
158 #endif /* LITEST_H */