• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!-- HTML header for doxygen 1.8.8-->
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4    <head>
5        <meta http-equiv="X-UA-Compatible" content="IE=edge">
6        <!-- For Mobile Devices -->
7        <meta name="viewport" content="width=device-width, initial-scale=1">
8        <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
9        <meta name="generator" content="Doxygen 1.9.6"/>
10        <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
11        <title>libevdev: Querying device capabilities</title>
12        <!--<link href="tabs.css" rel="stylesheet" type="text/css"/>-->
13        <script type="text/javascript" src="dynsections.js"></script>
14        <link href="search/search.css" rel="stylesheet" type="text/css"/>
15<script type="text/javascript" src="search/searchdata.js"></script>
16<script type="text/javascript" src="search/search.js"></script>
17        <link href="doxygen.css" rel="stylesheet" type="text/css" />
18        <link href="bootstrap.css" rel="stylesheet" type="text/css"/>
19<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
20<link href="libevdevdoxygen.css" rel="stylesheet" type="text/css"/>
21        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
22        <script type="text/javascript" src="doxy-boot.js"></script>
23    </head>
24    <body>
25        <nav class="navbar navbar-default" role="navigation">
26            <div class="container">
27                <div class="navbar-header">
28                    <a class="navbar-brand">libevdev 1.13.1</a>
29                </div>
30            </div>
31        </nav>
32        <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
33            <div class="content" id="content">
34                <div class="container">
35                    <div class="row">
36                        <div class="col-sm-12 panel panel-default" style="padding-bottom: 15px;">
37                            <div style="margin-bottom: 15px;">
38<!-- end header part -->
39<!-- Generated by Doxygen 1.9.6 -->
40<script type="text/javascript">
41/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
42var searchBox = new SearchBox("searchBox", "search/",'.html');
43/* @license-end */
44</script>
45<script type="text/javascript" src="menudata.js"></script>
46<script type="text/javascript" src="menu.js"></script>
47<script type="text/javascript">
48/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
49$(function() {
50  initMenu('',true,false,'search.php','Search');
51  $(document).ready(function() { init_search(); });
52});
53/* @license-end */
54</script>
55<div id="main-nav"></div>
56</div><!-- top -->
57<!-- window showing the filter options -->
58<div id="MSearchSelectWindow"
59     onmouseover="return searchBox.OnSearchSelectShow()"
60     onmouseout="return searchBox.OnSearchSelectHide()"
61     onkeydown="return searchBox.OnSearchSelectKey(event)">
62</div>
63
64<!-- iframe showing the search results (closed by default) -->
65<div id="MSearchResultsWindow">
66<div id="MSearchResults">
67<div class="SRPage">
68<div id="SRIndex">
69<div id="SRResults"></div>
70<div class="SRStatus" id="Loading">Loading...</div>
71<div class="SRStatus" id="Searching">Searching...</div>
72<div class="SRStatus" id="NoMatches">No Matches</div>
73</div>
74</div>
75</div>
76</div>
77
78<div class="header">
79  <div class="summary">
80<a href="#func-members">Functions</a>  </div>
81  <div class="headertitle"><div class="title">Querying device capabilities</div></div>
82</div><!--header-->
83<div class="contents">
84
85<p>Abstraction functions to handle device capabilities, specifically device properties such as the name of the device and the bits representing the events supported by this device.
86<a href="#details">More...</a></p>
87<table class="memberdecls">
88<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
89Functions</h2></td></tr>
90<tr class="memitem:ga94d6d9259ccfbb89e683270ba0534808"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga94d6d9259ccfbb89e683270ba0534808">libevdev_get_name</a> (const struct libevdev *dev)</td></tr>
91<tr class="memdesc:ga94d6d9259ccfbb89e683270ba0534808"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the device's name, either as set by the caller or as read from the kernel.  <br /></td></tr>
92<tr class="separator:ga94d6d9259ccfbb89e683270ba0534808"><td class="memSeparator" colspan="2">&#160;</td></tr>
93<tr class="memitem:ga3f96ca249a293aa12a7a1703f6bbee86"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga3f96ca249a293aa12a7a1703f6bbee86">libevdev_get_phys</a> (const struct libevdev *dev)</td></tr>
94<tr class="memdesc:ga3f96ca249a293aa12a7a1703f6bbee86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the device's physical location, either as set by the caller or as read from the kernel.  <br /></td></tr>
95<tr class="separator:ga3f96ca249a293aa12a7a1703f6bbee86"><td class="memSeparator" colspan="2">&#160;</td></tr>
96<tr class="memitem:ga431af41e8a73ec664d50f956167db965"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga431af41e8a73ec664d50f956167db965">libevdev_get_uniq</a> (const struct libevdev *dev)</td></tr>
97<tr class="memdesc:ga431af41e8a73ec664d50f956167db965"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the device's unique identifier, either as set by the caller or as read from the kernel.  <br /></td></tr>
98<tr class="separator:ga431af41e8a73ec664d50f956167db965"><td class="memSeparator" colspan="2">&#160;</td></tr>
99<tr class="memitem:ga1dc66cfef646878d58be72f8902a6bac"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga1dc66cfef646878d58be72f8902a6bac">libevdev_get_id_product</a> (const struct libevdev *dev)</td></tr>
100<tr class="separator:ga1dc66cfef646878d58be72f8902a6bac"><td class="memSeparator" colspan="2">&#160;</td></tr>
101<tr class="memitem:ga08891c3285da5b8d26769c9a34f063f3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga08891c3285da5b8d26769c9a34f063f3">libevdev_get_id_vendor</a> (const struct libevdev *dev)</td></tr>
102<tr class="separator:ga08891c3285da5b8d26769c9a34f063f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
103<tr class="memitem:ga9bf55d416401642bad0c435735682308"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga9bf55d416401642bad0c435735682308">libevdev_get_id_bustype</a> (const struct libevdev *dev)</td></tr>
104<tr class="separator:ga9bf55d416401642bad0c435735682308"><td class="memSeparator" colspan="2">&#160;</td></tr>
105<tr class="memitem:ga75a07d0c96dfe09d2194c104c429d0ae"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga75a07d0c96dfe09d2194c104c429d0ae">libevdev_get_id_version</a> (const struct libevdev *dev)</td></tr>
106<tr class="separator:ga75a07d0c96dfe09d2194c104c429d0ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
107<tr class="memitem:ga31e9e7a99215a03bcdc339b53e1be2fa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga31e9e7a99215a03bcdc339b53e1be2fa">libevdev_get_driver_version</a> (const struct libevdev *dev)</td></tr>
108<tr class="separator:ga31e9e7a99215a03bcdc339b53e1be2fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
109<tr class="memitem:ga36d529ea53f4522004bc7d16c051464b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga36d529ea53f4522004bc7d16c051464b">libevdev_has_property</a> (const struct libevdev *dev, unsigned int prop)</td></tr>
110<tr class="separator:ga36d529ea53f4522004bc7d16c051464b"><td class="memSeparator" colspan="2">&#160;</td></tr>
111<tr class="memitem:ga398bef155fa4a0cfb832de30723ebd14"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga398bef155fa4a0cfb832de30723ebd14">libevdev_has_event_type</a> (const struct libevdev *dev, unsigned int type)</td></tr>
112<tr class="separator:ga398bef155fa4a0cfb832de30723ebd14"><td class="memSeparator" colspan="2">&#160;</td></tr>
113<tr class="memitem:gab2ab9dad417f33daa79fa0c3d682df0b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#gab2ab9dad417f33daa79fa0c3d682df0b">libevdev_has_event_code</a> (const struct libevdev *dev, unsigned int type, unsigned int code)</td></tr>
114<tr class="separator:gab2ab9dad417f33daa79fa0c3d682df0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
115<tr class="memitem:ga482ce989a3f62f7e67e4ea7ad534189e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga482ce989a3f62f7e67e4ea7ad534189e">libevdev_get_abs_minimum</a> (const struct libevdev *dev, unsigned int code)</td></tr>
116<tr class="memdesc:ga482ce989a3f62f7e67e4ea7ad534189e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the minimum axis value for the given axis, as advertised by the kernel.  <br /></td></tr>
117<tr class="separator:ga482ce989a3f62f7e67e4ea7ad534189e"><td class="memSeparator" colspan="2">&#160;</td></tr>
118<tr class="memitem:ga97a3411ae85f1f3b5c5eb1d5351b11ca"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga97a3411ae85f1f3b5c5eb1d5351b11ca">libevdev_get_abs_maximum</a> (const struct libevdev *dev, unsigned int code)</td></tr>
119<tr class="memdesc:ga97a3411ae85f1f3b5c5eb1d5351b11ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum axis value for the given axis, as advertised by the kernel.  <br /></td></tr>
120<tr class="separator:ga97a3411ae85f1f3b5c5eb1d5351b11ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
121<tr class="memitem:ga1a3dfeb3bb2db0b4323c836c7ab10f1a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga1a3dfeb3bb2db0b4323c836c7ab10f1a">libevdev_get_abs_fuzz</a> (const struct libevdev *dev, unsigned int code)</td></tr>
122<tr class="memdesc:ga1a3dfeb3bb2db0b4323c836c7ab10f1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the axis fuzz for the given axis, as advertised by the kernel.  <br /></td></tr>
123<tr class="separator:ga1a3dfeb3bb2db0b4323c836c7ab10f1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
124<tr class="memitem:ga6b3f7ebae2324524dc41384acd724b92"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga6b3f7ebae2324524dc41384acd724b92">libevdev_get_abs_flat</a> (const struct libevdev *dev, unsigned int code)</td></tr>
125<tr class="memdesc:ga6b3f7ebae2324524dc41384acd724b92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the axis flat for the given axis, as advertised by the kernel.  <br /></td></tr>
126<tr class="separator:ga6b3f7ebae2324524dc41384acd724b92"><td class="memSeparator" colspan="2">&#160;</td></tr>
127<tr class="memitem:ga75751e637a845201b6d1c419ecfa6ba4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga75751e637a845201b6d1c419ecfa6ba4">libevdev_get_abs_resolution</a> (const struct libevdev *dev, unsigned int code)</td></tr>
128<tr class="memdesc:ga75751e637a845201b6d1c419ecfa6ba4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the axis resolution for the given axis, as advertised by the kernel.  <br /></td></tr>
129<tr class="separator:ga75751e637a845201b6d1c419ecfa6ba4"><td class="memSeparator" colspan="2">&#160;</td></tr>
130<tr class="memitem:gab6393c2d73997b052471a03c8fb05fec"><td class="memItemLeft" align="right" valign="top">const struct input_absinfo *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#gab6393c2d73997b052471a03c8fb05fec">libevdev_get_abs_info</a> (const struct libevdev *dev, unsigned int code)</td></tr>
131<tr class="memdesc:gab6393c2d73997b052471a03c8fb05fec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the axis info for the given axis, as advertised by the kernel.  <br /></td></tr>
132<tr class="separator:gab6393c2d73997b052471a03c8fb05fec"><td class="memSeparator" colspan="2">&#160;</td></tr>
133<tr class="memitem:ga6259f4c6bdba950329ff9cd48c2ef8a3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga6259f4c6bdba950329ff9cd48c2ef8a3">libevdev_get_event_value</a> (const struct libevdev *dev, unsigned int type, unsigned int code)</td></tr>
134<tr class="memdesc:ga6259f4c6bdba950329ff9cd48c2ef8a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Behaviour of this function is undefined if the device does not provide the event.  <br /></td></tr>
135<tr class="separator:ga6259f4c6bdba950329ff9cd48c2ef8a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
136<tr class="memitem:ga0a7be80d769294bf9758adf79c3c7147"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#ga0a7be80d769294bf9758adf79c3c7147">libevdev_fetch_event_value</a> (const struct libevdev *dev, unsigned int type, unsigned int code, int *value)</td></tr>
137<tr class="memdesc:ga0a7be80d769294bf9758adf79c3c7147"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fetch the current value of the event type.  <br /></td></tr>
138<tr class="separator:ga0a7be80d769294bf9758adf79c3c7147"><td class="memSeparator" colspan="2">&#160;</td></tr>
139<tr class="memitem:gaf12fa199bb9497b38358d72e7505d770"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bits.html#gaf12fa199bb9497b38358d72e7505d770">libevdev_get_repeat</a> (const struct libevdev *dev, int *delay, int *period)</td></tr>
140<tr class="memdesc:gaf12fa199bb9497b38358d72e7505d770"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the repeat delay and repeat period values for this device.  <br /></td></tr>
141<tr class="separator:gaf12fa199bb9497b38358d72e7505d770"><td class="memSeparator" colspan="2">&#160;</td></tr>
142</table>
143<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
144<p>Abstraction functions to handle device capabilities, specifically device properties such as the name of the device and the bits representing the events supported by this device. </p>
145<p>The logical state returned may lag behind the physical state of the device. libevdev queries the device state on <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> and then relies on the caller to parse events through <a class="el" href="group__events.html#gabb96c864e836c0b98788f4ab771c3a76" title="Get the next event from the device.">libevdev_next_event()</a>. If a caller does not use <a class="el" href="group__events.html#gabb96c864e836c0b98788f4ab771c3a76" title="Get the next event from the device.">libevdev_next_event()</a>, libevdev will not update the internal state of the device and thus returns outdated values. </p>
146<h2 class="groupheader">Function Documentation</h2>
147<a id="ga0a7be80d769294bf9758adf79c3c7147" name="ga0a7be80d769294bf9758adf79c3c7147"></a>
148<h2 class="memtitle"><span class="permalink"><a href="#ga0a7be80d769294bf9758adf79c3c7147">&#9670;&#160;</a></span>libevdev_fetch_event_value()</h2>
149
150<div class="memitem">
151<div class="memproto">
152      <table class="memname">
153        <tr>
154          <td class="memname">int libevdev_fetch_event_value </td>
155          <td>(</td>
156          <td class="paramtype">const struct libevdev *&#160;</td>
157          <td class="paramname"><em>dev</em>, </td>
158        </tr>
159        <tr>
160          <td class="paramkey"></td>
161          <td></td>
162          <td class="paramtype">unsigned int&#160;</td>
163          <td class="paramname"><em>type</em>, </td>
164        </tr>
165        <tr>
166          <td class="paramkey"></td>
167          <td></td>
168          <td class="paramtype">unsigned int&#160;</td>
169          <td class="paramname"><em>code</em>, </td>
170        </tr>
171        <tr>
172          <td class="paramkey"></td>
173          <td></td>
174          <td class="paramtype">int *&#160;</td>
175          <td class="paramname"><em>value</em>&#160;</td>
176        </tr>
177        <tr>
178          <td></td>
179          <td>)</td>
180          <td></td><td></td>
181        </tr>
182      </table>
183</div><div class="memdoc">
184
185<p>Fetch the current value of the event type. </p>
186<p>This is a shortcut for</p>
187<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__bits.html#ga398bef155fa4a0cfb832de30723ebd14">libevdev_has_event_type</a>(dev, t) &amp;&amp; <a class="code hl_function" href="group__bits.html#gab2ab9dad417f33daa79fa0c3d682df0b">libevdev_has_event_code</a>(dev, t, c))</div>
188<div class="line">     val = <a class="code hl_function" href="group__bits.html#ga6259f4c6bdba950329ff9cd48c2ef8a3">libevdev_get_event_value</a>(dev, t, c);</div>
189<div class="ttc" id="agroup__bits_html_ga398bef155fa4a0cfb832de30723ebd14"><div class="ttname"><a href="group__bits.html#ga398bef155fa4a0cfb832de30723ebd14">libevdev_has_event_type</a></div><div class="ttdeci">int libevdev_has_event_type(const struct libevdev *dev, unsigned int type)</div></div>
190<div class="ttc" id="agroup__bits_html_ga6259f4c6bdba950329ff9cd48c2ef8a3"><div class="ttname"><a href="group__bits.html#ga6259f4c6bdba950329ff9cd48c2ef8a3">libevdev_get_event_value</a></div><div class="ttdeci">int libevdev_get_event_value(const struct libevdev *dev, unsigned int type, unsigned int code)</div><div class="ttdoc">Behaviour of this function is undefined if the device does not provide the event.</div></div>
191<div class="ttc" id="agroup__bits_html_gab2ab9dad417f33daa79fa0c3d682df0b"><div class="ttname"><a href="group__bits.html#gab2ab9dad417f33daa79fa0c3d682df0b">libevdev_has_event_code</a></div><div class="ttdeci">int libevdev_has_event_code(const struct libevdev *dev, unsigned int type, unsigned int code)</div></div>
192</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
193  <table class="params">
194    <tr><td class="paramdir"></td><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
195    <tr><td class="paramdir"></td><td class="paramname">type</td><td>The event type for the code to query (EV_SYN, EV_REL, etc.) </td></tr>
196    <tr><td class="paramdir"></td><td class="paramname">code</td><td>The event code to query for, one of ABS_X, REL_X, etc. </td></tr>
197    <tr><td class="paramdir">[out]</td><td class="paramname">value</td><td>The current value of this axis returned.</td></tr>
198  </table>
199  </dd>
200</dl>
201<dl class="section return"><dt>Returns</dt><dd>If the device supports this event type and code, the return value is non-zero and value is set to the current value of this axis. Otherwise, 0 is returned and value is unmodified.</dd></dl>
202<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd>
203<dd>
204The value for ABS_MT_ events is undefined, use <a class="el" href="group__mt.html#gaca19dca5aa8f0ea3b210f3fc670384ec" title="Fetch the current value of the code for the given slot.">libevdev_fetch_slot_value()</a> instead</dd></dl>
205<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__mt.html#gaca19dca5aa8f0ea3b210f3fc670384ec" title="Fetch the current value of the code for the given slot.">libevdev_fetch_slot_value</a> </dd></dl>
206
207</div>
208</div>
209<a id="ga6b3f7ebae2324524dc41384acd724b92" name="ga6b3f7ebae2324524dc41384acd724b92"></a>
210<h2 class="memtitle"><span class="permalink"><a href="#ga6b3f7ebae2324524dc41384acd724b92">&#9670;&#160;</a></span>libevdev_get_abs_flat()</h2>
211
212<div class="memitem">
213<div class="memproto">
214      <table class="memname">
215        <tr>
216          <td class="memname">int libevdev_get_abs_flat </td>
217          <td>(</td>
218          <td class="paramtype">const struct libevdev *&#160;</td>
219          <td class="paramname"><em>dev</em>, </td>
220        </tr>
221        <tr>
222          <td class="paramkey"></td>
223          <td></td>
224          <td class="paramtype">unsigned int&#160;</td>
225          <td class="paramname"><em>code</em>&#160;</td>
226        </tr>
227        <tr>
228          <td></td>
229          <td>)</td>
230          <td></td><td></td>
231        </tr>
232      </table>
233</div><div class="memdoc">
234
235<p>Get the axis flat for the given axis, as advertised by the kernel. </p>
236<dl class="params"><dt>Parameters</dt><dd>
237  <table class="params">
238    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
239    <tr><td class="paramname">code</td><td>The EV_ABS event code to query for, one of ABS_X, ABS_Y, etc.</td></tr>
240  </table>
241  </dd>
242</dl>
243<dl class="section return"><dt>Returns</dt><dd>axis flat for the given axis or 0 if the axis is invalid</dd></dl>
244<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
245
246</div>
247</div>
248<a id="ga1a3dfeb3bb2db0b4323c836c7ab10f1a" name="ga1a3dfeb3bb2db0b4323c836c7ab10f1a"></a>
249<h2 class="memtitle"><span class="permalink"><a href="#ga1a3dfeb3bb2db0b4323c836c7ab10f1a">&#9670;&#160;</a></span>libevdev_get_abs_fuzz()</h2>
250
251<div class="memitem">
252<div class="memproto">
253      <table class="memname">
254        <tr>
255          <td class="memname">int libevdev_get_abs_fuzz </td>
256          <td>(</td>
257          <td class="paramtype">const struct libevdev *&#160;</td>
258          <td class="paramname"><em>dev</em>, </td>
259        </tr>
260        <tr>
261          <td class="paramkey"></td>
262          <td></td>
263          <td class="paramtype">unsigned int&#160;</td>
264          <td class="paramname"><em>code</em>&#160;</td>
265        </tr>
266        <tr>
267          <td></td>
268          <td>)</td>
269          <td></td><td></td>
270        </tr>
271      </table>
272</div><div class="memdoc">
273
274<p>Get the axis fuzz for the given axis, as advertised by the kernel. </p>
275<dl class="params"><dt>Parameters</dt><dd>
276  <table class="params">
277    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
278    <tr><td class="paramname">code</td><td>The EV_ABS event code to query for, one of ABS_X, ABS_Y, etc.</td></tr>
279  </table>
280  </dd>
281</dl>
282<dl class="section return"><dt>Returns</dt><dd>axis fuzz for the given axis or 0 if the axis is invalid</dd></dl>
283<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
284
285</div>
286</div>
287<a id="gab6393c2d73997b052471a03c8fb05fec" name="gab6393c2d73997b052471a03c8fb05fec"></a>
288<h2 class="memtitle"><span class="permalink"><a href="#gab6393c2d73997b052471a03c8fb05fec">&#9670;&#160;</a></span>libevdev_get_abs_info()</h2>
289
290<div class="memitem">
291<div class="memproto">
292      <table class="memname">
293        <tr>
294          <td class="memname">const struct input_absinfo * libevdev_get_abs_info </td>
295          <td>(</td>
296          <td class="paramtype">const struct libevdev *&#160;</td>
297          <td class="paramname"><em>dev</em>, </td>
298        </tr>
299        <tr>
300          <td class="paramkey"></td>
301          <td></td>
302          <td class="paramtype">unsigned int&#160;</td>
303          <td class="paramname"><em>code</em>&#160;</td>
304        </tr>
305        <tr>
306          <td></td>
307          <td>)</td>
308          <td></td><td></td>
309        </tr>
310      </table>
311</div><div class="memdoc">
312
313<p>Get the axis info for the given axis, as advertised by the kernel. </p>
314<dl class="params"><dt>Parameters</dt><dd>
315  <table class="params">
316    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
317    <tr><td class="paramname">code</td><td>The EV_ABS event code to query for, one of ABS_X, ABS_Y, etc.</td></tr>
318  </table>
319  </dd>
320</dl>
321<dl class="section return"><dt>Returns</dt><dd>The input_absinfo for the given code, or NULL if the device does not support this event code.</dd></dl>
322<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
323
324</div>
325</div>
326<a id="ga97a3411ae85f1f3b5c5eb1d5351b11ca" name="ga97a3411ae85f1f3b5c5eb1d5351b11ca"></a>
327<h2 class="memtitle"><span class="permalink"><a href="#ga97a3411ae85f1f3b5c5eb1d5351b11ca">&#9670;&#160;</a></span>libevdev_get_abs_maximum()</h2>
328
329<div class="memitem">
330<div class="memproto">
331      <table class="memname">
332        <tr>
333          <td class="memname">int libevdev_get_abs_maximum </td>
334          <td>(</td>
335          <td class="paramtype">const struct libevdev *&#160;</td>
336          <td class="paramname"><em>dev</em>, </td>
337        </tr>
338        <tr>
339          <td class="paramkey"></td>
340          <td></td>
341          <td class="paramtype">unsigned int&#160;</td>
342          <td class="paramname"><em>code</em>&#160;</td>
343        </tr>
344        <tr>
345          <td></td>
346          <td>)</td>
347          <td></td><td></td>
348        </tr>
349      </table>
350</div><div class="memdoc">
351
352<p>Get the maximum axis value for the given axis, as advertised by the kernel. </p>
353<dl class="params"><dt>Parameters</dt><dd>
354  <table class="params">
355    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
356    <tr><td class="paramname">code</td><td>The EV_ABS event code to query for, one of ABS_X, ABS_Y, etc.</td></tr>
357  </table>
358  </dd>
359</dl>
360<dl class="section return"><dt>Returns</dt><dd>axis maximum for the given axis or 0 if the axis is invalid</dd></dl>
361<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
362
363</div>
364</div>
365<a id="ga482ce989a3f62f7e67e4ea7ad534189e" name="ga482ce989a3f62f7e67e4ea7ad534189e"></a>
366<h2 class="memtitle"><span class="permalink"><a href="#ga482ce989a3f62f7e67e4ea7ad534189e">&#9670;&#160;</a></span>libevdev_get_abs_minimum()</h2>
367
368<div class="memitem">
369<div class="memproto">
370      <table class="memname">
371        <tr>
372          <td class="memname">int libevdev_get_abs_minimum </td>
373          <td>(</td>
374          <td class="paramtype">const struct libevdev *&#160;</td>
375          <td class="paramname"><em>dev</em>, </td>
376        </tr>
377        <tr>
378          <td class="paramkey"></td>
379          <td></td>
380          <td class="paramtype">unsigned int&#160;</td>
381          <td class="paramname"><em>code</em>&#160;</td>
382        </tr>
383        <tr>
384          <td></td>
385          <td>)</td>
386          <td></td><td></td>
387        </tr>
388      </table>
389</div><div class="memdoc">
390
391<p>Get the minimum axis value for the given axis, as advertised by the kernel. </p>
392<dl class="params"><dt>Parameters</dt><dd>
393  <table class="params">
394    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
395    <tr><td class="paramname">code</td><td>The EV_ABS event code to query for, one of ABS_X, ABS_Y, etc.</td></tr>
396  </table>
397  </dd>
398</dl>
399<dl class="section return"><dt>Returns</dt><dd>axis minimum for the given axis or 0 if the axis is invalid</dd></dl>
400<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
401
402</div>
403</div>
404<a id="ga75751e637a845201b6d1c419ecfa6ba4" name="ga75751e637a845201b6d1c419ecfa6ba4"></a>
405<h2 class="memtitle"><span class="permalink"><a href="#ga75751e637a845201b6d1c419ecfa6ba4">&#9670;&#160;</a></span>libevdev_get_abs_resolution()</h2>
406
407<div class="memitem">
408<div class="memproto">
409      <table class="memname">
410        <tr>
411          <td class="memname">int libevdev_get_abs_resolution </td>
412          <td>(</td>
413          <td class="paramtype">const struct libevdev *&#160;</td>
414          <td class="paramname"><em>dev</em>, </td>
415        </tr>
416        <tr>
417          <td class="paramkey"></td>
418          <td></td>
419          <td class="paramtype">unsigned int&#160;</td>
420          <td class="paramname"><em>code</em>&#160;</td>
421        </tr>
422        <tr>
423          <td></td>
424          <td>)</td>
425          <td></td><td></td>
426        </tr>
427      </table>
428</div><div class="memdoc">
429
430<p>Get the axis resolution for the given axis, as advertised by the kernel. </p>
431<dl class="params"><dt>Parameters</dt><dd>
432  <table class="params">
433    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
434    <tr><td class="paramname">code</td><td>The EV_ABS event code to query for, one of ABS_X, ABS_Y, etc.</td></tr>
435  </table>
436  </dd>
437</dl>
438<dl class="section return"><dt>Returns</dt><dd>axis resolution for the given axis or 0 if the axis is invalid</dd></dl>
439<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
440
441</div>
442</div>
443<a id="ga31e9e7a99215a03bcdc339b53e1be2fa" name="ga31e9e7a99215a03bcdc339b53e1be2fa"></a>
444<h2 class="memtitle"><span class="permalink"><a href="#ga31e9e7a99215a03bcdc339b53e1be2fa">&#9670;&#160;</a></span>libevdev_get_driver_version()</h2>
445
446<div class="memitem">
447<div class="memproto">
448      <table class="memname">
449        <tr>
450          <td class="memname">int libevdev_get_driver_version </td>
451          <td>(</td>
452          <td class="paramtype">const struct libevdev *&#160;</td>
453          <td class="paramname"><em>dev</em></td><td>)</td>
454          <td></td>
455        </tr>
456      </table>
457</div><div class="memdoc">
458<dl class="params"><dt>Parameters</dt><dd>
459  <table class="params">
460    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a></td></tr>
461  </table>
462  </dd>
463</dl>
464<dl class="section return"><dt>Returns</dt><dd>The driver version for this device</dd></dl>
465<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
466
467</div>
468</div>
469<a id="ga6259f4c6bdba950329ff9cd48c2ef8a3" name="ga6259f4c6bdba950329ff9cd48c2ef8a3"></a>
470<h2 class="memtitle"><span class="permalink"><a href="#ga6259f4c6bdba950329ff9cd48c2ef8a3">&#9670;&#160;</a></span>libevdev_get_event_value()</h2>
471
472<div class="memitem">
473<div class="memproto">
474      <table class="memname">
475        <tr>
476          <td class="memname">int libevdev_get_event_value </td>
477          <td>(</td>
478          <td class="paramtype">const struct libevdev *&#160;</td>
479          <td class="paramname"><em>dev</em>, </td>
480        </tr>
481        <tr>
482          <td class="paramkey"></td>
483          <td></td>
484          <td class="paramtype">unsigned int&#160;</td>
485          <td class="paramname"><em>type</em>, </td>
486        </tr>
487        <tr>
488          <td class="paramkey"></td>
489          <td></td>
490          <td class="paramtype">unsigned int&#160;</td>
491          <td class="paramname"><em>code</em>&#160;</td>
492        </tr>
493        <tr>
494          <td></td>
495          <td>)</td>
496          <td></td><td></td>
497        </tr>
498      </table>
499</div><div class="memdoc">
500
501<p>Behaviour of this function is undefined if the device does not provide the event. </p>
502<p>If the device supports ABS_MT_SLOT, the value returned for any ABS_MT_* event code is undefined. Use <a class="el" href="group__mt.html#ga8c6303391cb4f90b2d46763cf4eb8bc8" title="Return the current value of the code for the given slot.">libevdev_get_slot_value()</a> instead.</p>
503<dl class="params"><dt>Parameters</dt><dd>
504  <table class="params">
505    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
506    <tr><td class="paramname">type</td><td>The event type for the code to query (EV_SYN, EV_REL, etc.) </td></tr>
507    <tr><td class="paramname">code</td><td>The event code to query for, one of ABS_X, REL_X, etc.</td></tr>
508  </table>
509  </dd>
510</dl>
511<dl class="section return"><dt>Returns</dt><dd>The current value of the event.</dd></dl>
512<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd>
513<dd>
514The value for ABS_MT_ events is undefined, use <a class="el" href="group__mt.html#ga8c6303391cb4f90b2d46763cf4eb8bc8" title="Return the current value of the code for the given slot.">libevdev_get_slot_value()</a> instead</dd></dl>
515<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__mt.html#ga8c6303391cb4f90b2d46763cf4eb8bc8" title="Return the current value of the code for the given slot.">libevdev_get_slot_value</a> </dd></dl>
516
517</div>
518</div>
519<a id="ga9bf55d416401642bad0c435735682308" name="ga9bf55d416401642bad0c435735682308"></a>
520<h2 class="memtitle"><span class="permalink"><a href="#ga9bf55d416401642bad0c435735682308">&#9670;&#160;</a></span>libevdev_get_id_bustype()</h2>
521
522<div class="memitem">
523<div class="memproto">
524      <table class="memname">
525        <tr>
526          <td class="memname">int libevdev_get_id_bustype </td>
527          <td>(</td>
528          <td class="paramtype">const struct libevdev *&#160;</td>
529          <td class="paramname"><em>dev</em></td><td>)</td>
530          <td></td>
531        </tr>
532      </table>
533</div><div class="memdoc">
534<dl class="params"><dt>Parameters</dt><dd>
535  <table class="params">
536    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a></td></tr>
537  </table>
538  </dd>
539</dl>
540<dl class="section return"><dt>Returns</dt><dd>The device's bus type</dd></dl>
541<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
542
543</div>
544</div>
545<a id="ga1dc66cfef646878d58be72f8902a6bac" name="ga1dc66cfef646878d58be72f8902a6bac"></a>
546<h2 class="memtitle"><span class="permalink"><a href="#ga1dc66cfef646878d58be72f8902a6bac">&#9670;&#160;</a></span>libevdev_get_id_product()</h2>
547
548<div class="memitem">
549<div class="memproto">
550      <table class="memname">
551        <tr>
552          <td class="memname">int libevdev_get_id_product </td>
553          <td>(</td>
554          <td class="paramtype">const struct libevdev *&#160;</td>
555          <td class="paramname"><em>dev</em></td><td>)</td>
556          <td></td>
557        </tr>
558      </table>
559</div><div class="memdoc">
560<dl class="params"><dt>Parameters</dt><dd>
561  <table class="params">
562    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a></td></tr>
563  </table>
564  </dd>
565</dl>
566<dl class="section return"><dt>Returns</dt><dd>The device's product ID</dd></dl>
567<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
568
569</div>
570</div>
571<a id="ga08891c3285da5b8d26769c9a34f063f3" name="ga08891c3285da5b8d26769c9a34f063f3"></a>
572<h2 class="memtitle"><span class="permalink"><a href="#ga08891c3285da5b8d26769c9a34f063f3">&#9670;&#160;</a></span>libevdev_get_id_vendor()</h2>
573
574<div class="memitem">
575<div class="memproto">
576      <table class="memname">
577        <tr>
578          <td class="memname">int libevdev_get_id_vendor </td>
579          <td>(</td>
580          <td class="paramtype">const struct libevdev *&#160;</td>
581          <td class="paramname"><em>dev</em></td><td>)</td>
582          <td></td>
583        </tr>
584      </table>
585</div><div class="memdoc">
586<dl class="params"><dt>Parameters</dt><dd>
587  <table class="params">
588    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a></td></tr>
589  </table>
590  </dd>
591</dl>
592<dl class="section return"><dt>Returns</dt><dd>The device's vendor ID</dd></dl>
593<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
594
595</div>
596</div>
597<a id="ga75a07d0c96dfe09d2194c104c429d0ae" name="ga75a07d0c96dfe09d2194c104c429d0ae"></a>
598<h2 class="memtitle"><span class="permalink"><a href="#ga75a07d0c96dfe09d2194c104c429d0ae">&#9670;&#160;</a></span>libevdev_get_id_version()</h2>
599
600<div class="memitem">
601<div class="memproto">
602      <table class="memname">
603        <tr>
604          <td class="memname">int libevdev_get_id_version </td>
605          <td>(</td>
606          <td class="paramtype">const struct libevdev *&#160;</td>
607          <td class="paramname"><em>dev</em></td><td>)</td>
608          <td></td>
609        </tr>
610      </table>
611</div><div class="memdoc">
612<dl class="params"><dt>Parameters</dt><dd>
613  <table class="params">
614    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a></td></tr>
615  </table>
616  </dd>
617</dl>
618<dl class="section return"><dt>Returns</dt><dd>The device's firmware version</dd></dl>
619<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
620
621</div>
622</div>
623<a id="ga94d6d9259ccfbb89e683270ba0534808" name="ga94d6d9259ccfbb89e683270ba0534808"></a>
624<h2 class="memtitle"><span class="permalink"><a href="#ga94d6d9259ccfbb89e683270ba0534808">&#9670;&#160;</a></span>libevdev_get_name()</h2>
625
626<div class="memitem">
627<div class="memproto">
628      <table class="memname">
629        <tr>
630          <td class="memname">const char * libevdev_get_name </td>
631          <td>(</td>
632          <td class="paramtype">const struct libevdev *&#160;</td>
633          <td class="paramname"><em>dev</em></td><td>)</td>
634          <td></td>
635        </tr>
636      </table>
637</div><div class="memdoc">
638
639<p>Retrieve the device's name, either as set by the caller or as read from the kernel. </p>
640<p>The string returned is valid until <a class="el" href="group__init.html#gacd9fe760d15be25fc99ce469034bd78c" title="Clean up and free the libevdev struct.">libevdev_free()</a> or until <a class="el" href="group__kernel.html#gae5dcdb7678cdc9be4ab1989725b4ed32" title="Change the device&#39;s name as returned by libevdev_get_name().">libevdev_set_name()</a>, whichever comes earlier.</p>
641<dl class="params"><dt>Parameters</dt><dd>
642  <table class="params">
643    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a></td></tr>
644  </table>
645  </dd>
646</dl>
647<dl class="section return"><dt>Returns</dt><dd>The device name as read off the kernel device. The name is never NULL but it may be the empty string.</dd></dl>
648<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
649
650</div>
651</div>
652<a id="ga3f96ca249a293aa12a7a1703f6bbee86" name="ga3f96ca249a293aa12a7a1703f6bbee86"></a>
653<h2 class="memtitle"><span class="permalink"><a href="#ga3f96ca249a293aa12a7a1703f6bbee86">&#9670;&#160;</a></span>libevdev_get_phys()</h2>
654
655<div class="memitem">
656<div class="memproto">
657      <table class="memname">
658        <tr>
659          <td class="memname">const char * libevdev_get_phys </td>
660          <td>(</td>
661          <td class="paramtype">const struct libevdev *&#160;</td>
662          <td class="paramname"><em>dev</em></td><td>)</td>
663          <td></td>
664        </tr>
665      </table>
666</div><div class="memdoc">
667
668<p>Retrieve the device's physical location, either as set by the caller or as read from the kernel. </p>
669<p>The string returned is valid until <a class="el" href="group__init.html#gacd9fe760d15be25fc99ce469034bd78c" title="Clean up and free the libevdev struct.">libevdev_free()</a> or until <a class="el" href="group__kernel.html#gacd57c8d6ace8e0b1417809a9c1c67af3" title="Change the device&#39;s physical location as returned by libevdev_get_phys().">libevdev_set_phys()</a>, whichever comes earlier.</p>
670<p>Virtual devices such as uinput devices have no phys location.</p>
671<dl class="params"><dt>Parameters</dt><dd>
672  <table class="params">
673    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a></td></tr>
674  </table>
675  </dd>
676</dl>
677<dl class="section return"><dt>Returns</dt><dd>The physical location of this device, or NULL if there is none</dd></dl>
678<dl class="section note"><dt>Note</dt><dd>This function is signal safe. </dd></dl>
679
680</div>
681</div>
682<a id="gaf12fa199bb9497b38358d72e7505d770" name="gaf12fa199bb9497b38358d72e7505d770"></a>
683<h2 class="memtitle"><span class="permalink"><a href="#gaf12fa199bb9497b38358d72e7505d770">&#9670;&#160;</a></span>libevdev_get_repeat()</h2>
684
685<div class="memitem">
686<div class="memproto">
687      <table class="memname">
688        <tr>
689          <td class="memname">int libevdev_get_repeat </td>
690          <td>(</td>
691          <td class="paramtype">const struct libevdev *&#160;</td>
692          <td class="paramname"><em>dev</em>, </td>
693        </tr>
694        <tr>
695          <td class="paramkey"></td>
696          <td></td>
697          <td class="paramtype">int *&#160;</td>
698          <td class="paramname"><em>delay</em>, </td>
699        </tr>
700        <tr>
701          <td class="paramkey"></td>
702          <td></td>
703          <td class="paramtype">int *&#160;</td>
704          <td class="paramname"><em>period</em>&#160;</td>
705        </tr>
706        <tr>
707          <td></td>
708          <td>)</td>
709          <td></td><td></td>
710        </tr>
711      </table>
712</div><div class="memdoc">
713
714<p>Get the repeat delay and repeat period values for this device. </p>
715<p>This function is a convenience function only, EV_REP is supported by <a class="el" href="group__bits.html#ga6259f4c6bdba950329ff9cd48c2ef8a3" title="Behaviour of this function is undefined if the device does not provide the event.">libevdev_get_event_value()</a>.</p>
716<dl class="params"><dt>Parameters</dt><dd>
717  <table class="params">
718    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
719    <tr><td class="paramname">delay</td><td>If not null, set to the repeat delay value </td></tr>
720    <tr><td class="paramname">period</td><td>If not null, set to the repeat period value</td></tr>
721  </table>
722  </dd>
723</dl>
724<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 if this device does not have repeat settings.</dd></dl>
725<dl class="section note"><dt>Note</dt><dd>This function is signal-safe</dd></dl>
726<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__bits.html#ga6259f4c6bdba950329ff9cd48c2ef8a3" title="Behaviour of this function is undefined if the device does not provide the event.">libevdev_get_event_value</a> </dd></dl>
727
728</div>
729</div>
730<a id="ga431af41e8a73ec664d50f956167db965" name="ga431af41e8a73ec664d50f956167db965"></a>
731<h2 class="memtitle"><span class="permalink"><a href="#ga431af41e8a73ec664d50f956167db965">&#9670;&#160;</a></span>libevdev_get_uniq()</h2>
732
733<div class="memitem">
734<div class="memproto">
735      <table class="memname">
736        <tr>
737          <td class="memname">const char * libevdev_get_uniq </td>
738          <td>(</td>
739          <td class="paramtype">const struct libevdev *&#160;</td>
740          <td class="paramname"><em>dev</em></td><td>)</td>
741          <td></td>
742        </tr>
743      </table>
744</div><div class="memdoc">
745
746<p>Retrieve the device's unique identifier, either as set by the caller or as read from the kernel. </p>
747<p>The string returned is valid until <a class="el" href="group__init.html#gacd9fe760d15be25fc99ce469034bd78c" title="Clean up and free the libevdev struct.">libevdev_free()</a> or until <a class="el" href="group__kernel.html#ga4e4fd2627744fd5811c50c7403f27ad7" title="Change the device&#39;s unique identifier as returned by libevdev_get_uniq().">libevdev_set_uniq()</a>, whichever comes earlier.</p>
748<dl class="params"><dt>Parameters</dt><dd>
749  <table class="params">
750    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a></td></tr>
751  </table>
752  </dd>
753</dl>
754<dl class="section return"><dt>Returns</dt><dd>The unique identifier for this device, or NULL if there is none</dd></dl>
755<dl class="section note"><dt>Note</dt><dd>This function is signal safe. </dd></dl>
756
757</div>
758</div>
759<a id="gab2ab9dad417f33daa79fa0c3d682df0b" name="gab2ab9dad417f33daa79fa0c3d682df0b"></a>
760<h2 class="memtitle"><span class="permalink"><a href="#gab2ab9dad417f33daa79fa0c3d682df0b">&#9670;&#160;</a></span>libevdev_has_event_code()</h2>
761
762<div class="memitem">
763<div class="memproto">
764      <table class="memname">
765        <tr>
766          <td class="memname">int libevdev_has_event_code </td>
767          <td>(</td>
768          <td class="paramtype">const struct libevdev *&#160;</td>
769          <td class="paramname"><em>dev</em>, </td>
770        </tr>
771        <tr>
772          <td class="paramkey"></td>
773          <td></td>
774          <td class="paramtype">unsigned int&#160;</td>
775          <td class="paramname"><em>type</em>, </td>
776        </tr>
777        <tr>
778          <td class="paramkey"></td>
779          <td></td>
780          <td class="paramtype">unsigned int&#160;</td>
781          <td class="paramname"><em>code</em>&#160;</td>
782        </tr>
783        <tr>
784          <td></td>
785          <td>)</td>
786          <td></td><td></td>
787        </tr>
788      </table>
789</div><div class="memdoc">
790<dl class="params"><dt>Parameters</dt><dd>
791  <table class="params">
792    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
793    <tr><td class="paramname">type</td><td>The event type for the code to query (EV_SYN, EV_REL, etc.) </td></tr>
794    <tr><td class="paramname">code</td><td>The event code to query for, one of ABS_X, REL_X, etc.</td></tr>
795  </table>
796  </dd>
797</dl>
798<dl class="section return"><dt>Returns</dt><dd>1 if the device supports this event type and code, or 0 otherwise.</dd></dl>
799<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
800
801</div>
802</div>
803<a id="ga398bef155fa4a0cfb832de30723ebd14" name="ga398bef155fa4a0cfb832de30723ebd14"></a>
804<h2 class="memtitle"><span class="permalink"><a href="#ga398bef155fa4a0cfb832de30723ebd14">&#9670;&#160;</a></span>libevdev_has_event_type()</h2>
805
806<div class="memitem">
807<div class="memproto">
808      <table class="memname">
809        <tr>
810          <td class="memname">int libevdev_has_event_type </td>
811          <td>(</td>
812          <td class="paramtype">const struct libevdev *&#160;</td>
813          <td class="paramname"><em>dev</em>, </td>
814        </tr>
815        <tr>
816          <td class="paramkey"></td>
817          <td></td>
818          <td class="paramtype">unsigned int&#160;</td>
819          <td class="paramname"><em>type</em>&#160;</td>
820        </tr>
821        <tr>
822          <td></td>
823          <td>)</td>
824          <td></td><td></td>
825        </tr>
826      </table>
827</div><div class="memdoc">
828<dl class="params"><dt>Parameters</dt><dd>
829  <table class="params">
830    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
831    <tr><td class="paramname">type</td><td>The event type to query for, one of EV_SYN, EV_REL, etc.</td></tr>
832  </table>
833  </dd>
834</dl>
835<dl class="section return"><dt>Returns</dt><dd>1 if the device supports this event type, or 0 otherwise.</dd></dl>
836<dl class="section note"><dt>Note</dt><dd>This function is signal-safe. </dd></dl>
837
838</div>
839</div>
840<a id="ga36d529ea53f4522004bc7d16c051464b" name="ga36d529ea53f4522004bc7d16c051464b"></a>
841<h2 class="memtitle"><span class="permalink"><a href="#ga36d529ea53f4522004bc7d16c051464b">&#9670;&#160;</a></span>libevdev_has_property()</h2>
842
843<div class="memitem">
844<div class="memproto">
845      <table class="memname">
846        <tr>
847          <td class="memname">int libevdev_has_property </td>
848          <td>(</td>
849          <td class="paramtype">const struct libevdev *&#160;</td>
850          <td class="paramname"><em>dev</em>, </td>
851        </tr>
852        <tr>
853          <td class="paramkey"></td>
854          <td></td>
855          <td class="paramtype">unsigned int&#160;</td>
856          <td class="paramname"><em>prop</em>&#160;</td>
857        </tr>
858        <tr>
859          <td></td>
860          <td>)</td>
861          <td></td><td></td>
862        </tr>
863      </table>
864</div><div class="memdoc">
865<dl class="params"><dt>Parameters</dt><dd>
866  <table class="params">
867    <tr><td class="paramname">dev</td><td>The evdev device, already initialized with <a class="el" href="group__init.html#ga6658ac490d68c307ff8b8d1536c12b44" title="Set the fd for this struct and initialize internal data.">libevdev_set_fd()</a> </td></tr>
868    <tr><td class="paramname">prop</td><td>The input property to query for, one of INPUT_PROP_...</td></tr>
869  </table>
870  </dd>
871</dl>
872<dl class="section return"><dt>Returns</dt><dd>1 if the device provides this input property, or 0 otherwise.</dd></dl>
873<dl class="section note"><dt>Note</dt><dd>This function is signal-safe </dd></dl>
874
875</div>
876</div>
877</div><!-- contents -->
878<!-- HTML footer for doxygen 1.8.8-->
879<!-- start footer part -->
880</div>
881</div>
882</div>
883</div>
884</div>
885<hr class="footer"/><address class="footer"><small>
886Generated by &#160;<a href="http://www.doxygen.org/index.html">
887<img class="footer" src="doxygen.png" alt="doxygen"/>
888</a> 1.9.6
889</small></address>
890</body>
891</html>
892