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