On Sun, Oct 31, 2010 at 7:23 AM, Greg KH <greg@xxxxxxxxx> wrote: > On Sun, Oct 31, 2010 at 07:04:30AM -0700, Laszlo Papp wrote: >> Hi, >> >> You can check the code out more in-depth in the following with the >> produced output. This is the compilation command I used for testing: >> gcc -Wall -o test -ggdb -ludev main.c. >> >> I just would like to get the real input devices.. so VID/PID: (null) >> (null) and related device node entries are undesired. > > But those are "real" input devices, why do you think otherwise? > > If you don't want them, then filter them out by ignoring the event > types, but note that they are needed by your system to work properly > (i.e. x.org uses them.) > > So your code is working as designed, I just don't think that you > realized there are all of these input devices present :) > > thanks, > > greg k-h > root /home/djszapi # cat main.c #include <libudev.h> #include <stdio.h> int main() { struct udev *udev; struct udev_enumerate *enumerate; struct udev_list_entry *devices; struct udev_list_entry *dev_list_entry; struct udev_device *dev; udev = udev_new(); if (!udev) { printf("Cannot create udev\n"); return -1; } enumerate = udev_enumerate_new(udev); udev_enumerate_add_match_subsystem(enumerate, "input"); udev_enumerate_scan_devices(enumerate); devices = udev_enumerate_get_list_entry(enumerate); udev_list_entry_foreach(dev_list_entry, devices) { const char *path; path = udev_list_entry_get_name(dev_list_entry); dev = udev_device_new_from_syspath(udev, path); dev = udev_device_get_parent_with_subsystem_devtype(dev, "input", 0); if (dev == 0) continue; printf("Device Node Path: %s, Name: %s\r\n", path, udev_device_get_sysattr_value(dev, "name")); printf("VID/PID: %s %s\r\n", udev_device_get_sysattr_value(dev,"id/vendor"), udev_device_get_sysattr_value(dev, "id/product")); udev_device_unref(dev); } udev_enumerate_unref(enumerate); udev_unref(udev); return 0; } root /home/djszapi # ./test Device Node Path: /sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/event3, Name: Power Button VID/PID: 0000 0001 Device Node Path: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input2/event2, Name: Power Button VID/PID: 0000 0001 Device Node Path: /sys/devices/pci0000:00/0000:00:04.0/usb2/2-10/2-10:1.0/input/input5/event5, Name: Logitech USB Optical Mouse VID/PID: 046d c00c Device Node Path: /sys/devices/pci0000:00/0000:00:04.0/usb2/2-10/2-10:1.0/input/input5/mouse1, Name: Logitech USB Optical Mouse VID/PID: 046d c00c Device Node Path: /sys/devices/pci0000:00/0000:00:09.0/input/input6/event6, Name: HDA Digital PCBeep VID/PID: 10ec 0662 Device Node Path: /sys/devices/platform/i8042/serio0/input/input1/event1, Name: AT Translated Set 2 keyboard VID/PID: 0001 0001 Device Node Path: /sys/devices/platform/pcspkr/input/input4/event4, Name: PC Speaker VID/PID: 001f 0001 Device Node Path: /sys/devices/virtual/input/input0/event0, Name: Macintosh mouse button emulation VID/PID: 0001 0001 Device Node Path: /sys/devices/virtual/input/input0/mouse0, Name: Macintosh mouse button emulation VID/PID: 0001 0001 root /home/djszapi # Better, but every device occurs two times o_O Best Regards, Laszlo Papp -- To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html