diff options
Diffstat (limited to 'config/udev.c')
-rw-r--r-- | config/udev.c | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/config/udev.c b/config/udev.c index 5e8d8dab0..5d001de5e 100644 --- a/config/udev.c +++ b/config/udev.c @@ -37,6 +37,17 @@ #define UDEV_XKB_PROP_KEY "xkb" +#define LOG_PROPERTY(path, prop, val) \ + LogMessageVerb(X_INFO, 10, \ + "config/udev: getting property %s on %s " \ + "returned \"%s\"\n", \ + (prop), (path), (val) ? (val) : "(null)") +#define LOG_SYSATTR(path, attr, val) \ + LogMessageVerb(X_INFO, 10, \ + "config/udev: getting attribute %s on %s " \ + "returned \"%s\"\n", \ + (attr), (path), (val) ? (val) : "(null)") + static struct udev_monitor *udev_monitor; static void @@ -45,6 +56,7 @@ device_added(struct udev_device *udev_device) const char *path, *name = NULL; char *config_info = NULL; const char *syspath; + const char *tags_prop; const char *key, *value, *tmp; InputOption *options = NULL, *tmpo; InputAttributes attrs = {}; @@ -60,8 +72,13 @@ device_added(struct udev_device *udev_device) if (!path || !syspath) return; - if (!udev_device_get_property_value(udev_device, "ID_INPUT")) + if (!udev_device_get_property_value(udev_device, "ID_INPUT")) { + LogMessageVerb(X_INFO, 10, + "config/udev: ignoring device %s without " + "property ID_INPUT set\n", + path); return; + } options = calloc(sizeof(*options), 1); if (!options) @@ -74,9 +91,14 @@ device_added(struct udev_device *udev_device) parent = udev_device_get_parent(udev_device); if (parent) { + const char *ppath = udev_device_get_devnode(parent); + name = udev_device_get_sysattr_value(parent, "name"); - if (!name) + LOG_SYSATTR(ppath, "name", name); + if (!name) { name = udev_device_get_property_value(parent, "NAME"); + LOG_PROPERTY(ppath, "NAME", name); + } } if (!name) name = "(unnamed)"; @@ -87,7 +109,10 @@ device_added(struct udev_device *udev_device) add_option(&options, "path", path); add_option(&options, "device", path); attrs.device = path; - attrs.tags = xstrtokenize(udev_device_get_property_value(udev_device, "ID_INPUT.tags"), ","); + + tags_prop = udev_device_get_property_value(udev_device, "ID_INPUT.tags"); + LOG_PROPERTY(path, "ID_INPUT.tags", tags_prop); + attrs.tags = xstrtokenize(tags_prop, ","); config_info = Xprintf("udev:%s", syspath); if (!config_info) @@ -107,6 +132,7 @@ device_added(struct udev_device *udev_device) value = udev_list_entry_get_value(entry); if (!strncasecmp(key, UDEV_XKB_PROP_KEY, sizeof(UDEV_XKB_PROP_KEY) - 1)) { + LOG_PROPERTY(path, key, value); tmp = key + sizeof(UDEV_XKB_PROP_KEY) - 1; if (!strcasecmp(tmp, "rules")) add_option(&options, "xkb_rules", value); @@ -119,18 +145,25 @@ device_added(struct udev_device *udev_device) else if (!strcasecmp(tmp, "options")) add_option(&options, "xkb_options", value); } else if (!strcmp(key, "ID_VENDOR")) { + LOG_PROPERTY(path, key, value); attrs.vendor = value; } else if (!strcmp(key, "ID_INPUT_KEY")) { + LOG_PROPERTY(path, key, value); attrs.flags |= ATTR_KEYBOARD; } else if (!strcmp(key, "ID_INPUT_MOUSE")) { + LOG_PROPERTY(path, key, value); attrs.flags |= ATTR_POINTER; } else if (!strcmp(key, "ID_INPUT_JOYSTICK")) { + LOG_PROPERTY(path, key, value); attrs.flags |= ATTR_JOYSTICK; } else if (!strcmp(key, "ID_INPUT_TABLET")) { + LOG_PROPERTY(path, key, value); attrs.flags |= ATTR_TABLET; } else if (!strcmp(key, "ID_INPUT_TOUCHPAD")) { + LOG_PROPERTY(path, key, value); attrs.flags |= ATTR_TOUCHPAD; } else if (!strcmp(key, "ID_INPUT_TOUCHSCREEN")) { + LOG_PROPERTY(path, key, value); attrs.flags |= ATTR_TOUCHSCREEN; } } |