cadMousePro, Spacenav Demo, Spacenav Simulator, Spacenav Hack v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Thu, 05 Sep 2019 01:12:12 +0200
branchv_0
changeset 137 8e583c8df660
parent 136 025ec3d898c4
child 138 66827ad5208a
cadMousePro, Spacenav Demo, Spacenav Simulator, Spacenav Hack
mouse-data/.seznam.xml
mouse-data/cadMousePro.xml
mouse-data/contact.xml
mouse-data/download.xml
mouse-data/img/3DConnexion-CadMouse-Pro-1.jpeg
mouse-data/img/3DConnexion-CadMouse-Pro-1.xcf
mouse-data/img/3DConnexion-SpaceMouse-1.jpeg
mouse-data/img/3DConnexion-SpaceMouse-1.xcf
mouse-data/img/cadMousePro-about-adwaita-v0.3.png
mouse-data/img/cadMousePro-about-breeze-v0.3.png
mouse-data/img/cadMousePro-about-cleanlooks-v0.3.png
mouse-data/img/cadMousePro-about-oxygen-v0.3.png
mouse-data/img/cadMousePro-configuration-adwaita-v0.3.png
mouse-data/img/cadMousePro-configuration-breeze-v0.3.png
mouse-data/img/cadMousePro-configuration-cleanlooks-v0.3.png
mouse-data/img/cadMousePro-configuration-oxygen-v0.3.png
mouse-data/img/cadMousePro-status-adwaita-v0.3.png
mouse-data/img/cadMousePro-status-breeze-v0.3.png
mouse-data/img/cadMousePro-status-cleanlooks-v0.3.png
mouse-data/img/cadMousePro-status-oxygen-v0.3.png
mouse-data/img/spacenavDemo-adwaita-v0.1.png
mouse-data/img/spacenavDemo-breeze-v0.1.png
mouse-data/img/spacenavDemo-cleanlooks-v0.1.png
mouse-data/img/spacenavDemo-oxygen-v0.1.png
mouse-data/img/spacenavHack-freecad-v0.1.png
mouse-data/img/spacenavSimulator-adwaita-v0.1.png
mouse-data/img/spacenavSimulator-breeze-v0.1.png
mouse-data/img/spacenavSimulator-cleanlooks-v0.1.png
mouse-data/img/spacenavSimulator-oxygen-v0.1.png
mouse-data/index.xml
mouse-data/makra/escape-xml.xsl
mouse-data/makra/usb-id.xsl
mouse-data/screenshots.xml
mouse-data/spacenav-demo.xml
mouse-data/spacenav-hack.xml
mouse-data/spacenav-simulator.xml
scripts/image-comment.sh
--- a/mouse-data/.seznam.xml	Tue Sep 03 23:28:46 2019 +0200
+++ b/mouse-data/.seznam.xml	Thu Sep 05 01:12:12 2019 +0200
@@ -10,35 +10,35 @@
          <a href="index.xhtml">Mouse utilities</a>

 			Introduction to the mouse utilities.
-			(3.9. 2019 22:04)
+			(4.9. 2019 23:19)
 		</p>
       <p xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
          style="seznamStranek">
          <a href="cadMousePro.xhtml">cadMousePro</a>

 			CLI tool, D-Bus service and a GUI application for configuring the CadMouse Pro.
-			(3.9. 2019 22:04)
+			(4.9. 2019 23:19)
 		</p>
       <p xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
          style="seznamStranek">
          <a href="spacenav-demo.xhtml">Spacenav Demo</a>

 			Demo program that shows current state of 3D mouse.
-			(3.9. 2019 22:04)
+			(5.9. 2019 0:10)
 		</p>
       <p xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
          style="seznamStranek">
          <a href="spacenav-simulator.xhtml">Spacenav Simulator</a>

 			A tool that simulates 3D mouse (resp. the socket) and allows control of a CAD or other client program.
-			(3.9. 2019 22:04)
+			(5.9. 2019 0:26)
 		</p>
       <p xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
          style="seznamStranek">
          <a href="spacenav-hack.xhtml">Spacenav Hack</a>

 			An LD_PRELOAD hack that translates socket messages to the X11 events.
-			(3.9. 2019 22:04)
+			(5.9. 2019 1:05)
 		</p>
       <p xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
          style="seznamStranek">
@@ -52,14 +52,21 @@
          <a href="download.xhtml">Download</a>

 			Sources and distribution of Mouse utilities
-			(3.9. 2019 23:26)
+			(4.9. 2019 23:38)
 		</p>
       <p xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
          style="seznamStranek">
          <a href="contact.xhtml">Support &amp; contact</a>

 			Support and contact information
-			(3.9. 2019 23:21)
+			(4.9. 2019 23:38)
+		</p>
+      <p xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
+         style="seznamStranek">
+         <a href="screenshots.xhtml">Screenshots</a>
+			–
+			Pictures of the GUI
+			(5.9. 2019 0:18)
 		</p>
    </text>
 </stránka>
\ No newline at end of file
--- 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>
--- a/mouse-data/contact.xml	Tue Sep 03 23:28:46 2019 +0200
+++ b/mouse-data/contact.xml	Thu Sep 05 01:12:12 2019 +0200
@@ -10,7 +10,7 @@
 		<slovo>contact</slovo>
 		<slovo>public keys</slovo>
 	</klíčováSlova>
-	<pořadí>100</pořadí>
+	<pořadí>900</pořadí>
 
 	<text xmlns="http://www.w3.org/1999/xhtml">
 		<p>
--- a/mouse-data/download.xml	Tue Sep 03 23:28:46 2019 +0200
+++ b/mouse-data/download.xml	Thu Sep 05 01:12:12 2019 +0200
@@ -4,7 +4,7 @@
 	
 	<nadpis>Download</nadpis>
 	<perex>Sources and distribution of Mouse utilities</perex>
-	<pořadí>090</pořadí>
+	<pořadí>100</pořadí>
 
 	<text xmlns="http://www.w3.org/1999/xhtml">
 		<p>
Binary file mouse-data/img/3DConnexion-CadMouse-Pro-1.jpeg has changed
Binary file mouse-data/img/3DConnexion-CadMouse-Pro-1.xcf has changed
Binary file mouse-data/img/3DConnexion-SpaceMouse-1.jpeg has changed
Binary file mouse-data/img/3DConnexion-SpaceMouse-1.xcf has changed
Binary file mouse-data/img/cadMousePro-about-adwaita-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-about-breeze-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-about-cleanlooks-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-about-oxygen-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-configuration-adwaita-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-configuration-breeze-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-configuration-cleanlooks-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-configuration-oxygen-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-status-adwaita-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-status-breeze-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-status-cleanlooks-v0.3.png has changed
Binary file mouse-data/img/cadMousePro-status-oxygen-v0.3.png has changed
Binary file mouse-data/img/spacenavDemo-adwaita-v0.1.png has changed
Binary file mouse-data/img/spacenavDemo-breeze-v0.1.png has changed
Binary file mouse-data/img/spacenavDemo-cleanlooks-v0.1.png has changed
Binary file mouse-data/img/spacenavDemo-oxygen-v0.1.png has changed
Binary file mouse-data/img/spacenavHack-freecad-v0.1.png has changed
Binary file mouse-data/img/spacenavSimulator-adwaita-v0.1.png has changed
Binary file mouse-data/img/spacenavSimulator-breeze-v0.1.png has changed
Binary file mouse-data/img/spacenavSimulator-cleanlooks-v0.1.png has changed
Binary file mouse-data/img/spacenavSimulator-oxygen-v0.1.png has changed
--- a/mouse-data/index.xml	Tue Sep 03 23:28:46 2019 +0200
+++ b/mouse-data/index.xml	Thu Sep 05 01:12:12 2019 +0200
@@ -11,6 +11,16 @@
 			<m:name/> are free software utilities for computer mice and similar hardware.
 			They are developed on and for GNU/Linux, but should work also on other unix-like systems.
 		</p>
+		
+		<m:img src="img/cadMousePro-status-adwaita-v0.3.png"/>
+		
+		<p>
+			<em>
+				n.b. We (GlobalCode) are not affiliated to any manufacturer of hardware mentioned on this website.
+				And this website is not intended as a product review or a recommendation to purchase any hardware.
+				However, if you already have such piece of hardware, we hope our software will help you to use it on your free operating system.
+			</em>
+		</p>
 	</text>
 
 </stránka>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mouse-data/makra/escape-xml.xsl	Thu Sep 05 01:12:12 2019 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+	xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://www.w3.org/1999/xhtml"
+	xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
+	xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
+	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+	xmlns:fn="http://www.w3.org/2005/xpath-functions"
+	xmlns:svg="http://www.w3.org/2000/svg"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	exclude-result-prefixes="fn h s k m xs">
+
+	<!--
+		Should be used as a pipe filter in scripts with výstup="xhtml"
+	-->
+	<xsl:template match="m:escape-xml"><![CDATA[sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/"/\&quot;/g' -e "s/'/\\&apos;/g"]]></xsl:template>
+
+</xsl:stylesheet>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mouse-data/makra/usb-id.xsl	Thu Sep 05 01:12:12 2019 +0200
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+	xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://www.w3.org/1999/xhtml"
+	xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
+	xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
+	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+	xmlns:fn="http://www.w3.org/2005/xpath-functions"
+	xmlns:svg="http://www.w3.org/2000/svg"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	exclude-result-prefixes="fn h s k m xs">
+
+	<xsl:template match="m:usb-id">
+		<p>The mouse connects using a wireless USB adapter with ID: <code>256f:c652</code> and identifies itself as <code>3Dconnexion Universal Receiver</code></p>
+	</xsl:template>
+
+</xsl:stylesheet>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mouse-data/screenshots.xml	Thu Sep 05 01:12:12 2019 +0200
@@ -0,0 +1,38 @@
+<stránka
+	xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
+	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro">
+	
+	<nadpis>Screenshots</nadpis>
+	<perex>Pictures of the GUI</perex>
+	<pořadí>090</pořadí>
+
+	<text xmlns="http://www.w3.org/1999/xhtml">
+		<p>
+			Our GUI applications are build with the Qt toolkit
+			and can be styled (themed) in various ways to fit your desktop environment.
+		</p>
+
+		<p>Adwaita:</p>		
+		<m:img src="img/cadMousePro-status-adwaita-v0.3.png"/>
+		<m:img src="img/spacenavDemo-adwaita-v0.1.png"/>
+		<m:img src="img/spacenavSimulator-adwaita-v0.1.png"/>
+		
+		<p>Oxygen:</p>		
+		<m:img src="img/cadMousePro-status-oxygen-v0.3.png"/>
+		<m:img src="img/spacenavDemo-oxygen-v0.1.png"/>
+		<m:img src="img/spacenavSimulator-oxygen-v0.1.png"/>
+		
+		<p>Breeze:</p>		
+		<m:img src="img/cadMousePro-status-breeze-v0.3.png"/>
+		<m:img src="img/spacenavDemo-breeze-v0.1.png"/>
+		<m:img src="img/spacenavSimulator-breeze-v0.1.png"/>
+		
+		<p>Cleanlooks:</p>		
+		<m:img src="img/cadMousePro-status-cleanlooks-v0.3.png"/>
+		<m:img src="img/spacenavDemo-cleanlooks-v0.1.png"/>
+		<m:img src="img/spacenavSimulator-cleanlooks-v0.1.png"/>
+		
+	</text>
+
+</stránka>
+
--- a/mouse-data/spacenav-demo.xml	Tue Sep 03 23:28:46 2019 +0200
+++ b/mouse-data/spacenav-demo.xml	Thu Sep 05 01:12:12 2019 +0200
@@ -8,7 +8,31 @@
 
 	<text xmlns="http://www.w3.org/1999/xhtml">
 		<p>
+			The Spacenav Demo is a simple client program for the <a href="http://spacenav.sourceforge.net/">Spacenav</a> library and daemon.
+			This demo just shows current status of the 6DoF 3D mouse
+			and can be used for testing. 
 		</p>
+		
+		<m:img src="img/spacenavDemo-adwaita-v0.1.png"/>
+		
+		<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>spnav</li>
+			<li>Qt</li>
+		</ul>
+		
+		<h2>3DConnexion SpaceMouse Wireless</h2>
+		<p>Our software works with this mouse:</p>
+		<m:img src="img/3DConnexion-SpaceMouse-1.jpeg"/>
+		<m:usb-id/>
+		
 	</text>
 
 </stránka>
--- a/mouse-data/spacenav-hack.xml	Tue Sep 03 23:28:46 2019 +0200
+++ b/mouse-data/spacenav-hack.xml	Thu Sep 05 01:12:12 2019 +0200
@@ -8,7 +8,54 @@
 
 	<text xmlns="http://www.w3.org/1999/xhtml">
 		<p>
+			There are two ways how the <a href="http://spacenav.sourceforge.net/">Spacenav</a> client (e.g. Blender, OpenSCAD or FreeCAD) and the Spacenav server (Spacenav daemon connected to the 6DoF 3D mouse or our simulator)
+			can reach each other:
 		</p>
+		
+		<ul>
+			<li>unix domain socket</li>
+			<li>X11</li>
+		</ul>
+		
+		<p>
+			The client might be compiled with both options (like X11 with fallback to socket interface) or only with one (like X11 only).
+			The server can be configured to provide both interfaces (it needs the <code>~/.Xauthority</code> X11 magic cookie)
+			or only the socket interface (if the cookie is missing).
+		</p>
+		
+		<p>
+			If we have socket-only server and X11-only client, we can of course recompile the client or reconfigure the server.
+			Or we can have some fun, hack it in the <code>LD_PRELOAD</code> fashion and translate the socket interface to the X11 one.
+			So we make X11 client talking to the socket server.
+		</p>
+		
+		<m:img src="img/spacenavHack-freecad-v0.1.png"/>
+		
+		<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>spnav</li>
+		</ul>
+		
+		<h2>Usage</h2>
+
+		<p>We just run our favourite CAD with our hackish library preloaded:</p>
+				
+		<pre>LD_PRELOAD="./libspnav-lib-hack.so" freecad</pre>
+		
+		<p>and it translates the X11 API calls to the socket ones.</p>
+		
+		<h2>3DConnexion SpaceMouse Wireless</h2>
+		<p>Our software works with this mouse:</p>
+		<m:img src="img/3DConnexion-SpaceMouse-1.jpeg"/>
+		<m:usb-id/>
+		
 	</text>
 
 </stránka>
--- a/mouse-data/spacenav-simulator.xml	Tue Sep 03 23:28:46 2019 +0200
+++ b/mouse-data/spacenav-simulator.xml	Thu Sep 05 01:12:12 2019 +0200
@@ -8,7 +8,31 @@
 
 	<text xmlns="http://www.w3.org/1999/xhtml">
 		<p>
+			The Spacenav Simulator is a simple server program that simulates the <a href="http://spacenav.sourceforge.net/">Spacenav</a> unix domain socket.
+			This simulator pretends that it is a 6DoF 3D mouse and Spacenav daemon.
+			It can be used for testing and development even if we do not have given hardware.
+			We can control e.g. Blender or OpenSCAD using this simulator.
 		</p>
+		
+		<m:img src="img/spacenavSimulator-adwaita-v0.1.png"/>
+		
+		<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>Qt</li>
+		</ul>
+		
+		
+		<h2>3DConnexion SpaceMouse Wireless</h2>
+		<p>Our software simulates this mouse:</p>
+		<m:img src="img/3DConnexion-SpaceMouse-1.jpeg"/>
+		
 	</text>
 
 </stránka>
--- a/scripts/image-comment.sh	Tue Sep 03 23:28:46 2019 +0200
+++ b/scripts/image-comment.sh	Thu Sep 05 01:12:12 2019 +0200
@@ -2,7 +2,7 @@
 
 FILE="$1";
 COMMENT="$2";
-COPYRIGHT="Mouse utilities (c) $(date +%Y) Frantisek Kucera, Frantovo.cz, GlobalCode.info; copylefted under the GNU FDLv1.3+ license"; # this tag should be in ASCII, see http://www.exiv2.org/tags.html
+COPYRIGHT="Mouse utilities (c) $(date +%Y) Frantisek Kucera, Frantovo.cz, GlobalCode.info; copylefted under the GNU FDLv1.3+ license; source: https://mouse.globalcode.info/"; # this tag should be in ASCII, see http://www.exiv2.org/tags.html
 
 [ -n "$FILE"    ] && exiv2 -M "set Exif.Image.Copyright $COPYRIGHT" "$FILE";
 [ -n "$COMMENT" ] && exiv2 -M "set Exif.Photo.UserComment charset=Unicode $COMMENT" "$FILE";