[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