mouse-data/cadMousePro.xml
branchv_0
changeset 137 8e583c8df660
parent 136 025ec3d898c4
child 140 7927050ea73b
--- a/mouse-data/cadMousePro.xml	Tue Sep 03 23:28:46 2019 +0200
+++ b/mouse-data/cadMousePro.xml	Thu Sep 05 01:12:12 2019 +0200
@@ -8,7 +8,119 @@
 
 	<text xmlns="http://www.w3.org/1999/xhtml">
 		<p>
+			The cadMousePro is an independent free tool for configuring 3DConnexion CadMouse Pro.
 		</p>
+		
+		<h2>Architecture</h2>
+		
+		<p>
+			The cadMousePro consists of two parts:
+		</p>
+		
+		<p>
+			The first one is a command line utility which sends configuration to the mouse as a USB HID message.
+			This utility can also run in daemon mode and expose a D-Bus interface that could be called by other apllication.
+			This tool must run under <code>root</code> or other user who has permissions to access the USB device.
+		</p>
+		
+		<p>
+			The second part is a simple GUI apllication which shows mouse status (name and battery level) and can configure the mouse.
+			This GUI layer connects to the daemon using the D-Bus interface.
+			Thus the GUI can run under any user (can be restricted using the D-Bus rules, if needed).
+			The information about the battery level is provided by the UPower daemon (also over a D-Bus interface).
+		</p>
+		
+		<m:diagram><![CDATA[
+			node            [shape="box", fontname="Ubuntu,Sans"];
+			
+			usb             [label="USB HID"]
+			daemon          [label="cadMousePro Daemon"]
+			cli             [label="cadMousePro CLI"]
+			gui             [label="cadMousePro GUI"]
+			other           [label="Other D-Bus client"]
+			upower          [label="UPower"]
+			
+			other -> daemon;
+			gui -> daemon;
+			gui -> upower;
+			
+			cli -> usb;
+			daemon -> usb;
+			upower -> usb;
+		]]></m:diagram>
+		
+		<h2>Features</h2>
+		
+		<p>Mouse status:</p>
+		<m:img src="img/cadMousePro-status-adwaita-v0.3.png"/>
+		
+		<p>Mouse configuration:</p>
+		<m:img src="img/cadMousePro-configuration-adwaita-v0.3.png"/>
+		
+		<p>About:</p>
+		<m:img src="img/cadMousePro-about-adwaita-v0.3.png"/>
+		
+		<h2>Disable Smart scrolling (free wheel)</h2>
+		
+		<p>
+			The CadMouse Pro has a feature called „smart“ scrolling (also know as „free wheel“)
+			which is actually not so smart and is rather an anti-feature and most users will probably want to disable it.
+		</p>
+		
+		<p>
+			This feature simulates the momentum – if you scroll bit faster, the mouse continue to send scroll events even if you have already stopped scrolling the wheel.
+			So you scroll, stop scrolling, move cursor to another window… but the mouse still scrolls and you get angry 
+			(especially it that another window was a taskbar and your windows are now fiercely switching).
+		</p>
+		
+		<h2>Build and installation</h2>
+
+		<p>We use the CMake build system, so the steps are basically:</p>
+		
+		<pre><![CDATA[mkdir build && cd build && cmake .. && make]]></pre>
+		
+		<p>Required libraries:</p>
+		
+		<ul>
+			<li>hidapi-hidraw</li>
+			<li>Qt</li>
+		</ul>
+		
+		<p>
+			Old version <code>v0.1</code> requires only <code>hidapi-hidraw</code> and has no GUI nor D-Bus interface.
+		</p>
+		
+		<p>
+			The daemon mode requires instalation of the D-Bus policy (in order to expose the service on the system bus and allow others to use it).
+			Template for policy is in file: 
+		</p>
+		<pre>config/etc/dbus-1/system.d/info.globalcode.mouse.cadMousePro.conf</pre>
+		
+		<p>
+			If we want to configure the mouse automatically when it is connected, we should install a udev rule.
+			Template for udev rule is in file:
+		</p>
+		<pre>config/etc/udev/rules.d/99-cadMousePro.rules</pre>
+		
+		<h2>Usage</h2>
+
+		<p>
+			For ad-hoc configuration we just run:
+		</p>
+		
+		<pre>sudo ./cadMousePro --frequency 250 --smart-scrolling false --lift-off-detection true</pre>
+		
+		<p>
+			The daemon is started in this way:
+		</p>
+		
+		<pre>sudo ./cadMousePro --daemon true</pre>
+						
+		<h2>3DConnexion CadMouse Pro Wireless</h2>
+		<p>Our software works with this mouse:</p>
+		<m:img src="img/3DConnexion-CadMouse-Pro-1.jpeg"/>
+		<m:usb-id/>
+		
 	</text>
 
 </stránka>