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&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&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 * </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"> </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"> </td></tr> 86<tr class="memitem:ga5df483b0b24d7b96ea1181808fab851d"><td class="memItemLeft" align="right" valign="top">const char * </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"> </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"> </td></tr> 89<tr class="memitem:ga6d9f7d44bff8828ead3d251177035ca4"><td class="memItemLeft" align="right" valign="top">const char * </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"> </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"> </td></tr> 92<tr class="memitem:ga1dc66cfef646878d58be72f8902a6bac"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 94<tr class="memitem:ga08891c3285da5b8d26769c9a34f063f3"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 96<tr class="memitem:ga9bf55d416401642bad0c435735682308"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 98<tr class="memitem:ga75a07d0c96dfe09d2194c104c429d0ae"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 100<tr class="memitem:ga31e9e7a99215a03bcdc339b53e1be2fa"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 102<tr class="memitem:ga36d529ea53f4522004bc7d16c051464b"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 104<tr class="memitem:ga398bef155fa4a0cfb832de30723ebd14"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 106<tr class="memitem:gab2ab9dad417f33daa79fa0c3d682df0b"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 108<tr class="memitem:ga482ce989a3f62f7e67e4ea7ad534189e"><td class="memItemLeft" align="right" valign="top">int </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"> </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"> </td></tr> 111<tr class="memitem:ga97a3411ae85f1f3b5c5eb1d5351b11ca"><td class="memItemLeft" align="right" valign="top">int </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"> </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"> </td></tr> 114<tr class="memitem:ga1a3dfeb3bb2db0b4323c836c7ab10f1a"><td class="memItemLeft" align="right" valign="top">int </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"> </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"> </td></tr> 117<tr class="memitem:ga6b3f7ebae2324524dc41384acd724b92"><td class="memItemLeft" align="right" valign="top">int </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"> </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"> </td></tr> 120<tr class="memitem:ga75751e637a845201b6d1c419ecfa6ba4"><td class="memItemLeft" align="right" valign="top">int </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"> </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"> </td></tr> 123<tr class="memitem:ga6d8e2caf87fa536fad979346671838d7"><td class="memItemLeft" align="right" valign="top">const struct input_absinfo * </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"> </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"> </td></tr> 126<tr class="memitem:ga6259f4c6bdba950329ff9cd48c2ef8a3"><td class="memItemLeft" align="right" valign="top">int </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"> </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"> </td></tr> 129<tr class="memitem:ga0a7be80d769294bf9758adf79c3c7147"><td class="memItemLeft" align="right" valign="top">int </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"> </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"> </td></tr> 132<tr class="memitem:gaf12fa199bb9497b38358d72e7505d770"><td class="memItemLeft" align="right" valign="top">int </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"> </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"> </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">◆ </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 * </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 </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 </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 * </td> 168 <td class="paramname"><em>value</em> </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) && <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">◆ </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 * </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 </td> 218 <td class="paramname"><em>code</em> </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">◆ </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 * </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 </td> 257 <td class="paramname"><em>code</em> </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">◆ </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 * </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 </td> 296 <td class="paramname"><em>code</em> </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">◆ </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 * </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 </td> 335 <td class="paramname"><em>code</em> </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">◆ </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 * </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 </td> 374 <td class="paramname"><em>code</em> </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">◆ </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 * </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 </td> 413 <td class="paramname"><em>code</em> </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">◆ </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 * </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">◆ </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 * </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 </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 </td> 484 <td class="paramname"><em>code</em> </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">◆ </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 * </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">◆ </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 * </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">◆ </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 * </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">◆ </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 * </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">◆ </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 * </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'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">◆ </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 * </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'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">◆ </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 * </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 * </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 * </td> 697 <td class="paramname"><em>period</em> </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">◆ </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 * </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'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">◆ </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 * </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 </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 </td> 774 <td class="paramname"><em>code</em> </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">◆ </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 * </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 </td> 812 <td class="paramname"><em>type</em> </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">◆ </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 * </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 </td> 849 <td class="paramname"><em>prop</em> </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  <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