This file is indexed.

/usr/share/doc/libratbag-dev/html/index.html is in libratbag-doc 0.9-4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<!-- HTML header for doxygen 1.8.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!-- For Mobile Devices -->
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
        <meta name="generator" content="Doxygen 1.8.13"/>
        <script type="text/javascript" src="file:///usr/share/javascript/jquery/jquery.js"></script>
        <title>libratbag: libratbag</title>
        <!--<link href="tabs.css" rel="stylesheet" type="text/css"/>-->
        <script type="text/javascript" src="dynsections.js"></script>
        <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
        <script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="file:///usr/share/javascript/mathjax/MathJax.js"></script>
        <link href="doxygen.css" rel="stylesheet" type="text/css" />
        <link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
<link href="bootstrap.css" rel="stylesheet" type="text/css"/>
        <link href="bootstrap.css" rel="stylesheet" type="text/css" />
        <script src="file:///usr/share/javascript/bootstrap/js/bootstrap.js"></script>
        <script type="text/javascript" src="doxy-boot.js"></script>
    </head>
    <body>
        <nav class="navbar navbar-default" role="navigation">
            <div class="container">
                <div class="navbar-header">
                    <a class="navbar-brand">libratbag 0.9.0</a>
                </div>
            </div>
        </nav>
        <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
            <div class="content" id="content">
                <div class="container">
                    <div class="row">
                        <div class="col-sm-12 panel panel-default" style="padding-bottom: 15px;">
                            <div style="margin-bottom: 15px;">
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">libratbag </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>libratbag is a configuration library for gaming mice. It provides a generic way to access the various features exposed by these mice and abstracts away hardware-specific and kernel-specific quirks.</p>
<h2>Documentation </h2>
<p>API documentation is available here: </p><pre class="fragment">    http://libratbag.github.io/libratbag/
</pre><h2>Architecture </h2>
<p>libratbag has two main components, the front-end API and wrapper code, and the back-end HW-specific drivers: </p><pre class="fragment">+-----+    +-----+    +-----------+    +----------+
| app | -&gt; | API | -&gt; | hw-driver | -&gt; | protocol | -&gt; device
+-----+    +-----+    +-----------+    +----------+
</pre><p>The API layer is HW agnostic. Depend on the HW, the protocol may be part of the driver implementation (e.g. etekcity) or a separate set of files (HID++). Where the protocol is separate, the whole known protocol should be implemented. The HW driver then only accesses the bits required for libratbag. This allows us to optionally export the protocol as separate library in the future, if other projects require it.</p>
<h2>Adding Devices </h2>
<p>As of commit 3605bede4 libratbag now uses a hwdb entry to match the device with the drivers. To access a device through libratbag, the udev property RATBAG_DRIVER must be set for a device's event node. Check with </p><pre class="fragment"> sudo udevadm info /sys/class/input/eventX | grep RATBAG_DRIVER
</pre><p>If your device is not yet assigned the property, it is not in the hwdb. It may however be supported by one of our existing drivers. Try enabling it by adding the device vendor-id/product-id to the hwdb file in <code>hwdb/70-libratbag-mouse.hwdb</code>. For example, for a HID++ 1.0 device, edit the 70-libratbag-mouse.hwdb file and add an entry with <code>RATBAG_DRIVER=hidpp10</code>. For the other drivers, look for the id of the driver in driver-{drivername}.c file and do the same.</p>
<p>Once your device is added to the hwdb, install libratbag and trigger a hwdb update: </p><pre class="fragment">sudo udevadm hwdb --update
sudo udevadm control --reload
</pre><p>Then unplug/replug your mouse. <code>RATBAG_DRIVER</code> should appear in the udev properties of your device with the value you previously set. If the property is not assigned, the hwdb entry does not correctly match your device or the installed udev rules/hwdb entries are not picked up by udev.</p>
<p>If the device doesn't work, you'll have to start reverse-engineering the device-specific protocol. Good luck :)</p>
<h2>Source </h2>
<pre class="fragment">git clone https://github.com/libratbag/libratbag.git
</pre><h2>Building </h2>
<p>libratbag uses the meson build system, see <a href="http://mesonbuild.com">http://mesonbuild.com</a> which in turn uses ninja to invoke the compiler (<code>ninja</code> may be <code>ninja-build</code> on your distribution). From a fresh git checkout, run the following commands to init the repository: </p><pre class="fragment">meson builddir --prefix=/usr/
</pre><p>And to build or re-build after code-changes, run: </p><pre class="fragment">ninja -C builddir
sudo ninja -C builddir install
</pre><p>Note: 'builddir' is the build output directory and can be changed to any other directory name. To set configure-time options, use e.g. </p><pre class="fragment">mesonconf builddir -Denable-documentation=no
</pre><p>Run 'mesonconf builddir' to list the options.</p>
<h2>Bugs </h2>
<p>Bugs can be reported in the issue tracker on our github repo: <a href="https://github.com/libratbag/libratbag/issues">https://github.com/libratbag/libratbag/issues</a></p>
<h2>Mailing list </h2>
<p>libratbag discussions happen on the input-tools mailing list hosted on freedesktop.org: <a href="http://lists.freedesktop.org/archives/input-tools/">http://lists.freedesktop.org/archives/input-tools/</a></p>
<h2>Device-specific notes </h2>
<p>A number of device-specific notes and observations can be found in our "device-notes" repository: <a href="http://libratbag.github.io/device-notes/">http://libratbag.github.io/device-notes/</a></p>
<h2>License </h2>
<p>libratbag is licensed under the MIT license.</p>
<blockquote class="doxtable">
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: [...] </p>
</blockquote>
<p>See the COPYING file for the full license information.</p>
<p><a href="https://semaphoreci.com/libratbag/libratbag"></a> </p>
</div></div><!-- contents -->
<!-- HTML footer for doxygen 1.8.8-->
<!-- start footer part -->
</div>
</div>
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 10 2018 18:56:06 for libratbag by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>