diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2010-10-15 13:46:59 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2010-10-15 13:46:59 +1000 |
commit | eaf0b6a4d83d49930d21d5191f335fcac962632e (patch) | |
tree | b158918ee5a1d9a18fbaa0a12f0807d0828c43a8 /config/udev.c | |
parent | 693e92d4049ee76d074737480f3fc1bb236f4278 (diff) | |
parent | 23229c7ce5970516b97a1cc12e65257ff65ab9a7 (diff) |
Merge branch 'master' into input-api
Conflicts:
config/udev.c
hw/xfree86/common/xf86Helper.c
hw/xfree86/common/xf86Module.h
hw/xfree86/common/xf86Xinput.h
hw/xfree86/os-support/linux/lnx_init.c
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'config/udev.c')
-rw-r--r-- | config/udev.c | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/config/udev.c b/config/udev.c index cd46eec48..31f4f80cc 100644 --- a/config/udev.c +++ b/config/udev.c @@ -58,7 +58,6 @@ device_added(struct udev_device *udev_device) char *config_info = NULL; const char *syspath; const char *tags_prop; - const char *usb_vendor = NULL, *usb_model = NULL; const char *key, *value, *tmp; InputOption *options = NULL, *tmpo; InputAttributes attrs = {}; @@ -94,6 +93,8 @@ device_added(struct udev_device *udev_device) parent = udev_device_get_parent(udev_device); if (parent) { const char *ppath = udev_device_get_devnode(parent); + const char *product = udev_device_get_property_value(parent, "PRODUCT"); + unsigned int usb_vendor, usb_model; name = udev_device_get_sysattr_value(parent, "name"); LOG_SYSATTR(ppath, "name", name); @@ -104,6 +105,13 @@ device_added(struct udev_device *udev_device) attrs.pnp_id = udev_device_get_sysattr_value(parent, "id"); LOG_SYSATTR(ppath, "id", attrs.pnp_id); + + /* construct USB ID in lowercase hex - "0000:ffff" */ + if (product && sscanf(product, "%*x/%4x/%4x/%*x", &usb_vendor, &usb_model) == 2) { + attrs.usb_id = Xprintf("%04x:%04x", usb_vendor, usb_model); + if (attrs.usb_id) + LOG_PROPERTY(path, "PRODUCT", product); + } } if (!name) name = "(unnamed)"; @@ -152,12 +160,6 @@ device_added(struct udev_device *udev_device) } else if (!strcmp(key, "ID_VENDOR")) { LOG_PROPERTY(path, key, value); attrs.vendor = value; - } else if (!strcmp(key, "ID_VENDOR_ID")) { - LOG_PROPERTY(path, key, value); - usb_vendor = value; - } else if (!strcmp(key, "ID_VENDOR_MODEL")) { - LOG_PROPERTY(path, key, value); - usb_model = value; } else if (!strcmp(key, "ID_INPUT_KEY")) { LOG_PROPERTY(path, key, value); attrs.flags |= ATTR_KEYBOARD; @@ -179,16 +181,6 @@ device_added(struct udev_device *udev_device) } } - /* construct USB ID in lowercase hex - "0000:ffff" */ - if (usb_vendor && usb_model) { - attrs.usb_id = Xprintf("%s:%s", usb_vendor, usb_model); - if (attrs.usb_id) { - char *cur; - for (cur = attrs.usb_id; *cur; cur++) - *cur = tolower(*cur); - } - } - add_option(&options, "config_info", config_info); LogMessage(X_INFO, "config/udev: Adding input device %s (%s)\n", |