/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 | -> | API | -> | hw-driver | -> | protocol | -> 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  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
|