[PATCH weston 11/20] evdev: log input devices
Kristian Høgsberg
hoegsberg at gmail.com
Fri Aug 3 10:23:50 PDT 2012
On Fri, Aug 03, 2012 at 02:39:07PM +0300, Pekka Paalanen wrote:
> Write information about found input devices into the log. Also fetch and
> record the device name.
Thats pretty useful.
Kristian
> Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
> ---
> src/evdev.c | 27 +++++++++++++++++++++++----
> src/evdev.h | 1 +
> 2 files changed, 24 insertions(+), 4 deletions(-)
>
> diff --git a/src/evdev.c b/src/evdev.c
> index 8f57c42..7efbc7d 100644
> --- a/src/evdev.c
> +++ b/src/evdev.c
> @@ -445,16 +445,29 @@ evdev_configure_device(struct evdev_input_device *device)
> /* This rule tries to catch accelerometer devices and opt out. We may
> * want to adjust the protocol later adding a proper event for dealing
> * with accelerometers and implement here accordingly */
> - if (has_abs && !has_key && !device->is_mt)
> + if (has_abs && !has_key && !device->is_mt) {
> + weston_log("input device %s, %s "
> + "ignored: unsupported device type\n",
> + device->devname, device->devnode);
> return -1;
> + }
>
> if ((device->caps &
> - (EVDEV_MOTION_ABS | EVDEV_MOTION_REL | EVDEV_BUTTON)))
> + (EVDEV_MOTION_ABS | EVDEV_MOTION_REL | EVDEV_BUTTON))) {
> weston_seat_init_pointer(device->seat);
> - if ((device->caps & EVDEV_KEYBOARD))
> + weston_log("input device %s, %s is a pointer\n",
> + device->devname, device->devnode);
> + }
> + if ((device->caps & EVDEV_KEYBOARD)) {
> weston_seat_init_keyboard(device->seat, NULL);
> - if ((device->caps & EVDEV_TOUCH))
> + weston_log("input device %s, %s is a keyboard\n",
> + device->devname, device->devnode);
> + }
> + if ((device->caps & EVDEV_TOUCH)) {
> weston_seat_init_touch(device->seat);
> + weston_log("input device %s, %s is a touch device\n",
> + device->devname, device->devnode);
> + }
>
> return 0;
> }
> @@ -465,6 +478,7 @@ evdev_input_device_create(struct weston_seat *seat,
> {
> struct evdev_input_device *device;
> struct weston_compositor *ec;
> + char devname[256] = "unknown";
>
> device = malloc(sizeof *device);
> if (device == NULL)
> @@ -485,6 +499,9 @@ evdev_input_device_create(struct weston_seat *seat,
> device->dispatch = NULL;
> device->fd = device_fd;
>
> + ioctl(device->fd, EVIOCGNAME(sizeof(devname)), devname);
> + device->devname = strdup(devname);
> +
> if (evdev_configure_device(device) == -1)
> goto err1;
>
> @@ -512,6 +529,7 @@ evdev_input_device_create(struct weston_seat *seat,
> err2:
> device->dispatch->interface->destroy(device->dispatch);
> err1:
> + free(device->devname);
> free(device->devnode);
> free(device);
> return NULL;
> @@ -531,6 +549,7 @@ evdev_input_device_destroy(struct evdev_input_device *device)
> if (device->mtdev)
> mtdev_close_delete(device->mtdev);
> close(device->fd);
> + free(device->devname);
> free(device->devnode);
> free(device);
> }
> diff --git a/src/evdev.h b/src/evdev.h
> index 6556df0..379838a 100644
> --- a/src/evdev.h
> +++ b/src/evdev.h
> @@ -51,6 +51,7 @@ struct evdev_input_device {
> struct weston_output *output;
> struct evdev_dispatch *dispatch;
> char *devnode;
> + char *devname;
> int fd;
> struct {
> int min_x, max_x, min_y, max_y;
> --
> 1.7.8.6
>
More information about the wayland-devel
mailing list