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