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