summaryrefslogtreecommitdiff
path: root/config/udev.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2010-10-15 13:46:59 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2010-10-15 13:46:59 +1000
commiteaf0b6a4d83d49930d21d5191f335fcac962632e (patch)
treeb158918ee5a1d9a18fbaa0a12f0807d0828c43a8 /config/udev.c
parent693e92d4049ee76d074737480f3fc1bb236f4278 (diff)
parent23229c7ce5970516b97a1cc12e65257ff65ab9a7 (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.c26
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",