struct libevdev *dev = NULL;
 int fd;
 int rc = 1;
 
 fd = open("/dev/input/event0", O_RDONLY|O_NONBLOCK);
 rc = libevdev_new_from_fd(fd, &dev);
 if (rc < 0) {
         fprintf(stderr, "Failed to init libevdev (%s)\n", strerror(-rc));
         exit(1);
 }
 printf("Input device name: \"%s\"\n", libevdev_get_name(dev));
 printf("Input device ID: bus %#x vendor %#x product %#x\n",
        libevdev_get_id_bustype(dev),
        libevdev_get_id_vendor(dev),
        libevdev_get_id_product(dev));
 if (!libevdev_has_event_type(dev, EV_REL) ||
     !libevdev_has_event_code(dev, EV_KEY, BTN_LEFT)) {
         printf("This device does not look like a mouse\n");
         exit(1);
 }
 
 do {
         struct input_event ev;
         rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev);
         if (rc == 0)
                 printf("Event: %s %s %d\n",
                        libevdev_event_type_get_name(ev.type),
                        libevdev_event_code_get_name(ev.type, ev.code),
                        ev.value);
 } while (rc == 1 || rc == 0 || rc == -EAGAIN);

# libevdev libevdev is a wrapper library for evdev devices. it moves the common tasks when dealing with evdev devices into a library and provides a library interface to the callers, thus avoiding erroneous ioctls, etc. The eventual goal is that libevdev wraps all ioctls available to evdev devices, thus making direct access unnecessary. This wiki page is largely a placeholder, documentation about libevdev and examples are available in the [API documentation](http://www.freedesktop.org/software/libevdev/doc/latest). ## Releases * **stable:** [1.3.2 - released Dec 4, 2014](http://lists.freedesktop.org/archives/input-tools/2014-December/001132.html) ### Older releases * [0.2 - released July 23, 2013](http://lists.freedesktop.org/archives/input-tools/2013-July/000001.html) * [0.2.1 - released July 25, 2013](http://lists.freedesktop.org/archives/input-tools/2013-July/000005.html) * [0.3 - released Aug 8, 2013](http://lists.freedesktop.org/archives/input-tools/2013-August/000048.html) * [0.4 - released Sep 18, 2013](http://lists.freedesktop.org/archives/input-tools/2013-September/000342.html) * [0.4.1 - released Nov 5, 2013](http://lists.freedesktop.org/archives/input-tools/2013-November/000469.html) * [0.5 - released Nov 22, 2013](http://lists.freedesktop.org/archives/input-tools/2013-November/000528.html) * [0.6 - released Dec 23, 2013](http://lists.freedesktop.org/archives/input-tools/2013-December/000624.html) * [0.9.1 - released Jan 29, 2014](http://lists.freedesktop.org/archives/input-tools/2014-January/000763.html) * [1.0 - released Feb 18, 2014](http://lists.freedesktop.org/archives/input-tools/2014-February/000766.html) * [1.0.1 - released Mar 6, 2014](http://lists.freedesktop.org/archives/input-tools/2014-March/000815.html) * [1.1 - released Mar 25, 2014](http://lists.freedesktop.org/archives/input-tools/2014-March/000843.html) * [1.2 - released Apr 30, 2014](http://lists.freedesktop.org/archives/input-tools/2014-April/000895.html) * [1.3 - released Sep 9, 2014](http://lists.freedesktop.org/archives/input-tools/2014-September/001112.html) * [1.3.1 - released Nov 12, 2014](http://lists.freedesktop.org/archives/input-tools/2014-November/001123.html) ## git Repository * git://anongit.freedesktop.org/libevdev * ssh://git.freedesktop.org/git/libevdev ## cgit Web Frontend * ## Documentation [API documentation](http://www.freedesktop.org/software/libevdev/doc/): * [libevdev 1.3](http://www.freedesktop.org/software/libevdev/doc/1.3) * [libevdev 1.2](http://www.freedesktop.org/software/libevdev/doc/1.2) * [libevdev 1.1](http://www.freedesktop.org/software/libevdev/doc/1.1) * [libevdev 1.0](http://www.freedesktop.org/software/libevdev/doc/1.0) * [current development version](http://www.freedesktop.org/software/libevdev/doc/latest) ### Documentation for pre-releases * [0.6](http://www.freedesktop.org/software/libevdev/doc/0.6) * [0.5](http://www.freedesktop.org/software/libevdev/doc/0.5) * [0.4](http://www.freedesktop.org/software/libevdev/doc/0.4) * [0.3](http://www.freedesktop.org/software/libevdev/doc/0.3) * [0.2](http://www.freedesktop.org/software/libevdev/doc/0.2) ## Downloads Source tarballs are available ## Development Please submit patches to the [input-tools@lists.freedesktop.org](http://lists.freedesktop.org/mailman/listinfo/input-tools) mailing list. ## Reporting Bugs libevdev has a bugzilla component in the [freedesktop.org Bugzilla](https://bugs.freedesktop.org/enter_bug.cgi?product=libevdev)