summaryrefslogtreecommitdiff
path: root/Software/libevdev.mdwn
blob: 4fb82fb0723b2353518e8c0a1ac3fc36a02f7a75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<pre style="float:right; color:white; background-color:black; font-size:larger; width:45%; padding:6pt 8pt">
 <span style="color:green">struct libevdev</span> *dev = NULL;
 int fd;
 int rc = 1;
 
 fd = open("/dev/input/event0", O_RDONLY|O_NONBLOCK);
 rc = <span style="color:green">libevdev_new_from_fd</span>(fd, &dev);
 if (rc < 0) {
         fprintf(stderr, "Failed to init libevdev (%s)\n", strerror(-rc));
         exit(1);
 }
 printf("Input device name: \"%s\"\n", <span style="color:green">libevdev_get_name</span>(dev));
 printf("Input device ID: bus %#x vendor %#x product %#x\n",
        <span style="color:green">libevdev_get_id_bustype</span>(dev),
        <span style="color:green">libevdev_get_id_vendor</span>(dev),
        <span style="color:green">libevdev_get_id_product</span>(dev));
 if (!<span style="color:green">libevdev_has_event_type</span>(dev, EV_REL) ||
     !<span style="color:green">libevdev_has_event_code</span>(dev, EV_KEY, BTN_LEFT)) {
         printf("This device does not look like a mouse\n");
         exit(1);
 }
 
 do {
         struct input_event ev;
         rc = <span style="color:green">libevdev_next_event</span>(dev, <span style="color:green">LIBEVDEV_READ_FLAG_NORMAL</span>, &ev);
         if (rc == 0)
                 printf("Event: %s %s %d\n",
                        <span style="color:green">libevdev_event_type_get_name</span>(ev.type),
                        <span style="color:green">libevdev_event_code_get_name</span>(ev.type, ev.code),
                        ev.value);
 } while (rc == 1 || rc == 0 || rc == -EAGAIN);

</pre>

# 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 - released Sep 9, 2014](http://lists.freedesktop.org/archives/input-tools/2014-September/001112.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)

## git Repository
* git://anongit.freedesktop.org/libevdev
* ssh://git.freedesktop.org/git/libevdev

## cgit Web Frontend
* <http://cgit.freedesktop.org/libevdev>

## 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 <http://www.freedesktop.org/software/libevdev/>

## 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)