summaryrefslogtreecommitdiff
path: root/Software/libevdev.mdwn
blob: 36dcbc73c842e9cfe58ac2117e48917d900fea32 (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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<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.11.0 - released Feb 01, 2021](https://lists.freedesktop.org/archives/input-tools/2021-February/001557.html)
* [API documentation](http://www.freedesktop.org/software/libevdev/doc/latest/)

### Older releases

All released versions can be found at: https://www.freedesktop.org/software/libevdev/

* [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)
* [1.3.2 - released Dec 4, 2014](http://lists.freedesktop.org/archives/input-tools/2014-December/001132.html)
* [1.4 - released Mar 4, 2015](http://lists.freedesktop.org/archives/input-tools/2015-March/001151.html)
* [1.4.1 - released Apr 8, 2015](http://lists.freedesktop.org/archives/input-tools/2015-April/001166.html)
* [1.4.2 - released Apr 23, 2015](http://lists.freedesktop.org/archives/input-tools/2015-April/001167.html)
* [1.4.3 - released Jun 22, 2015](http://lists.freedesktop.org/archives/input-tools/2015-June/001171.html)
* [1.4.4 - released Aug 31, 2015](http://lists.freedesktop.org/archives/input-tools/2015-August/001210.html)
* [1.4.5 - released Nov 10, 2015](http://lists.freedesktop.org/archives/input-tools/2015-November/001227.html)
* [1.4.6 - released Jan 04, 2016](https://lists.freedesktop.org/archives/input-tools/2016-January/001240.html)
* [1.5 - released May 13, 2016](https://lists.freedesktop.org/archives/input-tools/2016-May/001296.html)
* [1.5.1 - released May 16, 2016](https://lists.freedesktop.org/archives/input-tools/2016-May/001301.html)
* [1.5.2 - released Jun 15, 2016](https://lists.freedesktop.org/archives/input-tools/2016-June/001307.html)
* [1.5.3 - released Aug 22, 2016](https://lists.freedesktop.org/archives/input-tools/2016-August/001324.html)
* [1.5.4 - released Aug 26, 2016](https://lists.freedesktop.org/archives/input-tools/2016-August/001327.html)
* [1.5.5 - released Nov 30, 2016](https://lists.freedesktop.org/archives/input-tools/2016-November/001375.html)
* [1.5.6 - released Jan 4, 2017](https://lists.freedesktop.org/archives/input-tools/2017-January/001380.html)
* [1.5.7 - released May 4, 2017](https://lists.freedesktop.org/archives/input-tools/2017-May/001387.html)
* [1.5.8 - released Jan 29, 2018](https://lists.freedesktop.org/archives/input-tools/2018-January/001447.html)
* [1.5.9 - released Mar 8, 2018](https://lists.freedesktop.org/archives/input-tools/2018-March/001464.html)
* [1.6.0 - released Oct 26, 2018](https://lists.freedesktop.org/archives/input-tools/2018-October/001488.html)
* [1.7.0 - released Jun 5, 2019](https://lists.freedesktop.org/archives/input-tools/2019-June/001512.html)
* [1.8.0 - released Aug 26, 2019](https://lists.freedesktop.org/archives/input-tools/2019-August/001521.html)
* [1.9.0 - released Mar 2, 2020](https://lists.freedesktop.org/archives/input-tools/2020-March/001530.html)
* [1.9.1 - released Jul 16, 2020](https://lists.freedesktop.org/archives/input-tools/2020-July/001541.html)
* [1.10.0 - released Oct 26, 2020](https://lists.freedesktop.org/archives/input-tools/2020-October/001545.html)
* [1.10.1 - released Jan 11, 2021](https://lists.freedesktop.org/archives/input-tools/2021-January/001555.html)
* [1.11.0 - released Feb 01, 2021](https://lists.freedesktop.org/archives/input-tools/2021-February/001557.html)

## git Repository

* https://gitlab.freedesktop.org/libevdev/libevdev

## Documentation

* For current and previous releases: [http://www.freedesktop.org/software/libevdev/doc/](http://www.freedesktop.org/software/libevdev/doc/)
* For [current development version](http://www.freedesktop.org/software/libevdev/doc/latest)

## 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 issue tracker in [freedesktop.org gitlab instance](https://gitlab.freedesktop.org/libevdev/libevdev)