[PATCH weston 11/20] evdev: log input devices
Pekka Paalanen
ppaalanen at gmail.com
Fri Aug 3 04:39:07 PDT 2012
Write information about found input devices into the log. Also fetch and
record the device name.
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