diff --git a/src/Makefile.am b/src/Makefile.am index 03f610e1..2cf9d6b5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -102,7 +102,6 @@ drm_backend_la_SOURCES = \ tty.c \ evdev.c \ evdev.h \ - evdev-private.h \ evdev-touchpad.c \ launcher-util.c \ launcher-util.h \ diff --git a/src/evdev-private.h b/src/evdev-private.h deleted file mode 100644 index 7b56b542..00000000 --- a/src/evdev-private.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of the copyright holders not be used in - * advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. The copyright holders make - * no representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef EVDEV_PRIVATE_H -#define EVDEV_PRIVATE_H - -#include -#include - -struct evdev_seat { - struct weston_seat base; - struct wl_list devices_list; - struct udev_monitor *udev_monitor; - struct wl_event_source *udev_monitor_source; - char *seat_id; -}; - -#define MAX_SLOTS 16 - -enum evdev_event_type { - EVDEV_ABSOLUTE_MOTION = (1 << 0), - EVDEV_ABSOLUTE_MT_DOWN = (1 << 1), - EVDEV_ABSOLUTE_MT_MOTION = (1 << 2), - EVDEV_ABSOLUTE_MT_UP = (1 << 3), - EVDEV_RELATIVE_MOTION = (1 << 4), -}; - -enum evdev_device_capability { - EVDEV_KEYBOARD = (1 << 0), - EVDEV_BUTTON = (1 << 1), - EVDEV_MOTION_ABS = (1 << 2), - EVDEV_MOTION_REL = (1 << 3), - EVDEV_TOUCH = (1 << 4), -}; - -struct evdev_input_device { - struct evdev_seat *master; - struct wl_list link; - struct wl_event_source *source; - struct weston_output *output; - struct evdev_dispatch *dispatch; - char *devnode; - int fd; - struct { - int min_x, max_x, min_y, max_y; - int32_t x, y; - } abs; - - struct { - int slot; - int32_t x[MAX_SLOTS]; - int32_t y[MAX_SLOTS]; - } mt; - struct mtdev *mtdev; - - struct { - wl_fixed_t dx, dy; - } rel; - - enum evdev_event_type pending_events; - enum evdev_device_capability caps; - - int is_mt; -}; - -/* copied from udev/extras/input_id/input_id.c */ -/* we must use this kernel-compatible implementation */ -#define BITS_PER_LONG (sizeof(unsigned long) * 8) -#define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1) -#define OFF(x) ((x)%BITS_PER_LONG) -#define BIT(x) (1UL<> OFF(bit)) & 1) -/* end copied */ - -struct evdev_dispatch; - -struct evdev_dispatch_interface { - /* Process an evdev input event. */ - void (*process)(struct evdev_dispatch *dispatch, - struct evdev_input_device *device, - struct input_event *event, - uint32_t time); - - /* Destroy an event dispatch handler and free all its resources. */ - void (*destroy)(struct evdev_dispatch *dispatch); -}; - -struct evdev_dispatch { - struct evdev_dispatch_interface *interface; -}; - -struct evdev_dispatch * -evdev_touchpad_create(struct evdev_input_device *device); - -#endif /* EVDEV_PRIVATE_H */ diff --git a/src/evdev-touchpad.c b/src/evdev-touchpad.c index 7e167d12..45c00cb1 100644 --- a/src/evdev-touchpad.c +++ b/src/evdev-touchpad.c @@ -26,7 +26,7 @@ #include #include "filter.h" -#include "evdev-private.h" +#include "evdev.h" /* Default values */ #define DEFAULT_CONSTANT_ACCEL_NUMERATOR 50 diff --git a/src/evdev.c b/src/evdev.c index 7e142a42..08d2c992 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -29,7 +29,6 @@ #include "compositor.h" #include "evdev.h" -#include "evdev-private.h" #include "launcher-util.h" static void diff --git a/src/evdev.h b/src/evdev.h index 8e3214dd..5775e2a3 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -1,5 +1,5 @@ /* - * Copyright © 2011 Intel Corporation + * Copyright © 2011, 2012 Intel Corporation * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided @@ -20,8 +20,99 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifndef EVDEV_H +#define EVDEV_H + +#include +#include #include +struct evdev_seat { + struct weston_seat base; + struct wl_list devices_list; + struct udev_monitor *udev_monitor; + struct wl_event_source *udev_monitor_source; + char *seat_id; +}; + +#define MAX_SLOTS 16 + +enum evdev_event_type { + EVDEV_ABSOLUTE_MOTION = (1 << 0), + EVDEV_ABSOLUTE_MT_DOWN = (1 << 1), + EVDEV_ABSOLUTE_MT_MOTION = (1 << 2), + EVDEV_ABSOLUTE_MT_UP = (1 << 3), + EVDEV_RELATIVE_MOTION = (1 << 4), +}; + +enum evdev_device_capability { + EVDEV_KEYBOARD = (1 << 0), + EVDEV_BUTTON = (1 << 1), + EVDEV_MOTION_ABS = (1 << 2), + EVDEV_MOTION_REL = (1 << 3), + EVDEV_TOUCH = (1 << 4), +}; + +struct evdev_input_device { + struct evdev_seat *master; + struct wl_list link; + struct wl_event_source *source; + struct weston_output *output; + struct evdev_dispatch *dispatch; + char *devnode; + int fd; + struct { + int min_x, max_x, min_y, max_y; + int32_t x, y; + } abs; + + struct { + int slot; + int32_t x[MAX_SLOTS]; + int32_t y[MAX_SLOTS]; + } mt; + struct mtdev *mtdev; + + struct { + wl_fixed_t dx, dy; + } rel; + + enum evdev_event_type pending_events; + enum evdev_device_capability caps; + + int is_mt; +}; + +/* copied from udev/extras/input_id/input_id.c */ +/* we must use this kernel-compatible implementation */ +#define BITS_PER_LONG (sizeof(unsigned long) * 8) +#define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1) +#define OFF(x) ((x)%BITS_PER_LONG) +#define BIT(x) (1UL<> OFF(bit)) & 1) +/* end copied */ + +struct evdev_dispatch; + +struct evdev_dispatch_interface { + /* Process an evdev input event. */ + void (*process)(struct evdev_dispatch *dispatch, + struct evdev_input_device *device, + struct input_event *event, + uint32_t time); + + /* Destroy an event dispatch handler and free all its resources. */ + void (*destroy)(struct evdev_dispatch *dispatch); +}; + +struct evdev_dispatch { + struct evdev_dispatch_interface *interface; +}; + +struct evdev_dispatch * +evdev_touchpad_create(struct evdev_input_device *device); + void evdev_add_devices(struct udev *udev, struct weston_seat *seat_base); @@ -40,3 +131,5 @@ evdev_enable_udev_monitor(struct udev *udev, struct weston_seat *seat_base); void evdev_disable_udev_monitor(struct weston_seat *seat_base); + +#endif /* EVDEV_H */