<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ClearChain &#187; FreeDesktop</title>
	<atom:link href="http://www.clearchain.com/blog/categories/computers/freedesktop/feed" rel="self" type="application/rss+xml" />
	<link>http://www.clearchain.com/blog</link>
	<description>-= Daily Happenings =-</description>
	<lastBuildDate>Wed, 05 Oct 2011 23:02:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Bugs.freedesktop.org gets Official SSL certificate thanks to StartCom</title>
		<link>http://www.clearchain.com/blog/posts/bugs-freedesktop-org-gets-official-ssl-certificate-thanks-to-startcom</link>
		<comments>http://www.clearchain.com/blog/posts/bugs-freedesktop-org-gets-official-ssl-certificate-thanks-to-startcom#comments</comments>
		<pubDate>Wed, 23 Feb 2011 03:39:12 +0000</pubDate>
		<dc:creator>Benjamin Close</dc:creator>
				<category><![CDATA[FreeDesktop]]></category>
		<category><![CDATA[bugs.freedesktop.org]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[startcom]]></category>

		<guid isPermaLink="false">http://www.clearchain.com/blog/?p=899</guid>
		<description><![CDATA[<a href="http://www.clearchain.com/blog/posts/bugs-freedesktop-org-gets-official-ssl-certificate-thanks-to-startcom"><img align="left" hspace="5" width="150" height="150" src="http://www.clearchain.com/blog/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Hi Folks, as of today https://bugs.freedesktop.org/ should now no longer give any warnings in a browser. The SSL certificate being provided by StartCom for free. Manythanks to StartCom for their Free SSL certificate service!]]></description>
			<content:encoded><![CDATA[<p>Hi Folks, as of today <a href="http://bugs.freedesktop.org">https://bugs.freedesktop.org/</a> should now no longer give any warnings in a browser. The SSL certificate being provided by StartCom for free. Manythanks to <a href="http://www.startcom.org">StartCom</a> for their <a href="http://www.startssl.com">Free SSL certificate service</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clearchain.com/blog/posts/bugs-freedesktop-org-gets-official-ssl-certificate-thanks-to-startcom/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>user:  Gaetan Nadon (gnadon) Joins Xorg Team</title>
		<link>http://www.clearchain.com/blog/posts/user-gaetan-nadon-gnadon-joins-xorg-team</link>
		<comments>http://www.clearchain.com/blog/posts/user-gaetan-nadon-gnadon-joins-xorg-team#comments</comments>
		<pubDate>Fri, 06 Nov 2009 00:12:01 +0000</pubDate>
		<dc:creator>Benjamin Close</dc:creator>
				<category><![CDATA[FreeDesktop]]></category>

		<guid isPermaLink="false">http://www.clearchain.com/blog/posts/user-gaetan-nadon-gnadon-joins-xorg-team</guid>
		<description><![CDATA[<a href="http://www.clearchain.com/blog/posts/user-gaetan-nadon-gnadon-joins-xorg-team"><img align="left" hspace="5" width="150" height="150" src="http://www.clearchain.com/blog/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Please welcome Gaetan Nadon to the Xorg development team, mentored initially by Peter Hutterer (whot)]]></description>
			<content:encoded><![CDATA[<p>Please welcome  Gaetan Nadon to the Xorg development team, mentored initially by Peter Hutterer (whot)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clearchain.com/blog/posts/user-gaetan-nadon-gnadon-joins-xorg-team/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xinput 1 -&gt; XInput 2 conversion guide</title>
		<link>http://www.clearchain.com/blog/posts/xinput-1-xinput-2-conversion-guide</link>
		<comments>http://www.clearchain.com/blog/posts/xinput-1-xinput-2-conversion-guide#comments</comments>
		<pubDate>Thu, 30 Jul 2009 01:30:14 +0000</pubDate>
		<dc:creator>Benjamin Close</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[FreeDesktop]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[examples]]></category>
		<category><![CDATA[gtk+]]></category>
		<category><![CDATA[MPX]]></category>
		<category><![CDATA[protocol]]></category>
		<category><![CDATA[toolkit]]></category>
		<category><![CDATA[XI1]]></category>
		<category><![CDATA[XI2]]></category>
		<category><![CDATA[XInput 1.5]]></category>
		<category><![CDATA[XInput1]]></category>
		<category><![CDATA[Xinput2]]></category>

		<guid isPermaLink="false">http://www.clearchain.com/blog/?p=415</guid>
		<description><![CDATA[<a href="http://www.clearchain.com/blog/posts/xinput-1-xinput-2-conversion-guide"><img align="left" hspace="5" width="150" height="150" src="http://www.clearchain.com/blog/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Details about the API changes between Xinput 1(XI1) and XInput 2 (XI2)]]></description>
			<content:encoded><![CDATA[<p>Recently I was tasked with porting <a href="http://www.gtk.org/">GTK+</a> to support Xinput 2 (XI2), and whilst the port isn&#8217;t finished I quickly discovered just how big the conversion was. This page is designed to help someone who is familiar with XInput 1 switch to XInput 2 &#8211; it&#8217;s certainly is by no means a complete guide and anyone reading this should also take a look at the various <a href="http://who-t.blogspot.com/">Input2 recipies published.</a></p>
<p>XI2 is the first major rewrite of the <a href="http://www.x.org/wiki/XInputSpec">XInput specification</a> in years and with it comes a lot of enhanced functionality, but also a <a href="http://cgit.freedesktop.org/xorg/lib/libXi/tree/man">new API</a>. The API was deliberately designed not to be backward compatible. Why? To prevent both XI1 and XI2 features to be intermingled. XI2 brings with it a new device model and a new input model. Both of these are incompatible with XI1. The decision to break the API was not a light one by <a href="http://who-t.blogspot.com/">Peter Hutterer</a>, the main XI2 developer.  Supporting XI1 would have ment future changes to XI2 would be impossible &#8211; there&#8217;s only so far you can push an out dated protocol and api. The added complexity of trying to maintain 2 code paths was also determined to be too high. XI2 is more than just a api/abi change. It literally change the entire input subsystem of the <a href="http://www.x.org">Xorg</a> Xserver. XI2 supports:</p>
<ul>
<li>Mulitple Independent Master Devices  (MPX)</li>
<li>Subpixel Accuracy for input devices</li>
<li>Support for 32bit key codes</li>
<li>.. lots more See: <a href="http://fedoraproject.org/wiki/Features/XI2">http://fedoraproject.org/wiki/Features/XI2</a> for full details</li>
</ul>
<p>With that in mind, the new XI2 API often leaves someone who&#8217;s been working with the XI1 wondering what the equivilant XI2 API call is.  Most functions have an equivilant in XI2 function though the usage has more often than not, changed dramatically. Below is some examples of how to convert XI1 code to XI2 compatible code and a list of <strong>some</strong> of the changes which have occurred. If you find something missing, please add to the comments.</p>
<h2>Change Overview</h2>
<p>The biggest change that any XI1 developer will notice is the <em><strong>XDevice *</strong></em> type has vanished. All XI2 devices make use of the <em><strong>XID</strong></em> type instead. Under the hoods, in the Xserver and XDevice really equates back to an XID anyway now. The next biggest change XI1 developers will notice is the entire XInput2 API has had shifted namespaces. All XInput2 functions, types, etc are now prefixed with XI (ie XIEventMask). This was designed to force segregation of XI1 -&gt; XI2 code.</p>
<p>The header file you include has also changed. Instead of:</p>
<pre>#include &lt;X11/extensions/XInput.h&gt;</pre>
<p>It&#8217;s now:</p>
<pre>#include &lt;X11/extensions/XInput<span style="text-decoration: underline;"><strong>2</strong></span>.h&gt;</pre>
<h2>Notable Changes</h2>
<ul>
<li>Proximity events are no longer supported, these are now reported as regular events on another axis (ie think of a pressure axis)</li>
<li>Events are  longer use device classes, instead all events are type XIEvent (a type of XEvent). Hence there is no need to pass around an array of integer classes anymore when registering for events, instead a single XIEventMask will do what is needed. The macros XISetMask and XIGetMask help with using the mask.</li>
</ul>
<p>There&#8217;s also been a lot of changes to structures, functions, types and how they are used.</p>
<h2>Event Changes</h2>
<table border="1">
<tbody>
<tr>
<th>XI1 Event</th>
<th>XI2 Event</th>
<th>Notes</th>
</tr>
<tr>
<td>XDeviceKeyEvent,  XDeviceKeyPressedEvent, XDeviceKeyReleasedEvent, XDeviceButtonEvent,  XDeviceButtonPressedEvent,  XDeviceButtonReleasedEvent ,XDeviceMotionEvent</td>
<td>XIDeviceEvent</td>
<td>The various events are now incorporated into the one event type. XIDeviceEvent-&gt;evtype indicates the subtype of event. Ie XIMotion is a motion event for that device.</td>
</tr>
<tr>
<td>XProximityNotifyEvent, XProximityInEvent, XProximityOutEvent</td>
<td>XIDeviceEvent (See Note)</td>
<td>Proximity Events have been replaced with device events. Proximity is represented as a value in the valuator on one of the axes</td>
</tr>
</tbody>
</table>
<h2>Structure/Type Changes</h2>
<table border="1">
<tbody>
<tr>
<th>XI1 Structure/Type</th>
<th>XI2 Structure/Type</th>
<th>Notes</th>
</tr>
<tr>
<td>XDeviceState</td>
<td>XIDeviceInfo</td>
<td>XIDeviceInfo also contains  a name and classes</td>
</tr>
<tr>
<td>XAnyClassPtr</td>
<td>XIAnyClassInfo *</td>
<td></td>
</tr>
<tr>
<td>XValuatorInfo</td>
<td>XIValuatorClassInfo</td>
<td></td>
</tr>
<tr>
<td>XInputClass</td>
<td>XIAnyClassInfo</td>
<td></td>
</tr>
<tr>
<td>XEventClass</td>
<td>XIEventMask</td>
<td>Used for selecting events to be monitored.<br />
One mask is used per device.  Standard usage is:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">XIEventMask mask<span style="color: #339933;">;</span>
mask.<span style="color: #202020;">deviceid</span><span style="color: #339933;">=</span><span style="color: #666666; font-style: italic;">//some device or XIAllDevices for all devices&amp;lt;</span>
mask.<span style="color: #202020;">mask_len</span><span style="color: #339933;">=</span><span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
mask.<span style="color: #202020;">mask</span><span style="color: #339933;">=</span>calloc<span style="color: #009900;">&#40;</span>mask.<span style="color: #202020;">mask_len</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
XISetMask<span style="color: #009900;">&#40;</span>mask.<span style="color: #202020;">mask</span><span style="color: #339933;">,</span> XI_ButtonPress<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
..
<span style="color: #202020;">XISelectEvents</span><span style="color: #009900;">&#40;</span>display<span style="color: #339933;">,</span> win<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>mask<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span></pre></div></div>

</td>
</tr>
<tr>
<td>XExtensionVersion</td>
<td>Struct Removed</td>
<td>XIQueryVersion should be used instead</td>
</tr>
<tr>
<td>XDeviceKeyEvent, XDeviceKeyPressedEvent, XDeviceKeyReleasedEvent, XDeviceButtonEvent, XDeviceButtonPressedEvent, XDeviceButtonReleasedEvent,</td>
<td>Structs Removed</td>
<td>XIDeviceEvents are now used instead</td>
</tr>
<tr>
<td>XDeviceFocusChangeEvnet, XDeviceFocusInEvent, XDeviceFocusOutEvent</td>
<td>Structs Removed</td>
<td>XIDeviceEvents are now used</td>
</tr>
<tr>
<td>XProximityNotifyEvent, XProximityInEvent, XProximityOutEvent</td>
<td>Structs Removed</td>
<td>XIDeviceEvents are now used</td>
</tr>
</tbody>
</table>
<h2>Function/Macro Changes</h2>
<table border="1">
<tbody>
<tr>
<th>XI1 Function</th>
<th>XI2 Function</th>
<th>Notes</th>
</tr>
<tr>
<td>XFreeDeviceList</td>
<td>XIFreeDeviceInfo</td>
<td></td>
</tr>
<tr>
<td>XDefineDeviceCursor</td>
<td>XIDefineCursor</td>
<td></td>
</tr>
<tr>
<td>DeviceButton1Motion</p>
<p>DeviceButton2Motion</p>
<p>&#8230;</td>
<td>(No Equivelant)</td>
<td></td>
</tr>
<tr>
<td>XWarpPointer</p>
<p>XWarpDevicePointer</td>
<td>XIWarpPointer</td>
<td>XIWarpPointer makes use of the device id like XWarpDevicePointer (XI1.5).   XWarpPointer is considered obsolete as it has no concept of a device</td>
</tr>
<tr>
<td>XQueryDeviceState</td>
<td>XIQueryDevice</td>
<td>Return type is XIDeviceInfo *, can be called with deviceid = XIAllDevices to query all devices hence the ndevices return</td>
</tr>
<tr>
<td>XFreeDeviceState</td>
<td>XIFreeDeviceInfo</td>
<td></td>
</tr>
<tr>
<td>DeviceGrabButton</td>
<td>XIGrabButton</td>
<td></td>
</tr>
<tr>
<td>XSelectExtensionEvent</td>
<td>XISelectEvents</td>
<td>Instead of a list of classes now a list of XIEventMask is used, one mask per device. XSelectExtensionEvent is still used for other extension events not related to XInput2</td>
</tr>
<tr>
<td>XGetExtensionVersion</td>
<td>XIQueryVersion</td>
<td>If only XI1 is present this will be returned vi the major/minor numbers (ie major = 1)</td>
</tr>
</tbody>
</table>
<h2>Examples</h2>
<p>Below are some examples of how to use some of the new XI2 functions.</p>
<h3>Event Processing &#8211; Registering For Events</h3>
<p>A simple indication how to register for events (XI2 greatly simplifies this)</p>
<ul>
<li><strong>XInput 1 (Taken from: <a href="http://cgit.freedesktop.org/xorg/app/xinput/tree/src/test.c">http://cgit.freedesktop.org/xorg/app/xinput/tree/src/test.c)</a> </strong></li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">static</span> <span style="color: #993333;">int</span>           motion_type <span style="color: #339933;">=</span> INVALID_EVENT_TYPE<span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span>           button_press_type <span style="color: #339933;">=</span> INVALID_EVENT_TYPE<span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span>           button_release_type <span style="color: #339933;">=</span> INVALID_EVENT_TYPE<span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span>           key_press_type <span style="color: #339933;">=</span> INVALID_EVENT_TYPE<span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span>           key_release_type <span style="color: #339933;">=</span> INVALID_EVENT_TYPE<span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span>           proximity_in_type <span style="color: #339933;">=</span> INVALID_EVENT_TYPE<span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span>           proximity_out_type <span style="color: #339933;">=</span> INVALID_EVENT_TYPE<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> register_event<span style="color: #009900;">&#40;</span>Display <span style="color: #339933;">*</span>dpy<span style="color: #339933;">,</span> XDeviceInfo <span style="color: #339933;">*</span>info<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    XEventClass         event_list<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">7</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">int</span>                 i<span style="color: #339933;">;</span>
    XDevice             <span style="color: #339933;">*</span>device<span style="color: #339933;">;</span>
    XInputClassInfo     <span style="color: #339933;">*</span>ip<span style="color: #339933;">;</span>
&nbsp;
    device <span style="color: #339933;">=</span> XOpenDevice<span style="color: #009900;">&#40;</span>dpy<span style="color: #339933;">,</span> info<span style="color: #339933;">-&gt;</span>id<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Check for open error</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>device<span style="color: #339933;">-&gt;</span>num_classes <span style="color: #339933;">&gt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>ip <span style="color: #339933;">=</span> device<span style="color: #339933;">-&gt;</span>classes<span style="color: #339933;">,</span> i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>info<span style="color: #339933;">-&gt;</span>num_classes<span style="color: #339933;">;</span> ip<span style="color: #339933;">++,</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>ip<span style="color: #339933;">-&gt;</span>input_class<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">case</span> ButtonClass<span style="color: #339933;">:</span>
                DeviceButtonPress<span style="color: #009900;">&#40;</span>device<span style="color: #339933;">,</span> button_press_type<span style="color: #339933;">,</span> event_list<span style="color: #009900;">&#91;</span>number<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> number<span style="color: #339933;">++;</span>
                DeviceButtonRelease<span style="color: #009900;">&#40;</span>device<span style="color: #339933;">,</span> button_release_type<span style="color: #339933;">,</span> event_list<span style="color: #009900;">&#91;</span>number<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> number<span style="color: #339933;">++;</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #b1b100;">case</span> ValuatorClass<span style="color: #339933;">:</span>
                DeviceMotionNotify<span style="color: #009900;">&#40;</span>device<span style="color: #339933;">,</span> motion_type<span style="color: #339933;">,</span> event_list<span style="color: #009900;">&#91;</span>number<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> number<span style="color: #339933;">++;</span>
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>handle_proximity<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    ProximityIn<span style="color: #009900;">&#40;</span>device<span style="color: #339933;">,</span> proximity_in_type<span style="color: #339933;">,</span> event_list<span style="color: #009900;">&#91;</span>number<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> number<span style="color: #339933;">++;</span>
                    ProximityOut<span style="color: #009900;">&#40;</span>device<span style="color: #339933;">,</span> proximity_out_type<span style="color: #339933;">,</span> event_list<span style="color: #009900;">&#91;</span>number<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> number<span style="color: #339933;">++;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
                fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;unknown class<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>XSelectExtensionEvent<span style="color: #009900;">&#40;</span>dpy<span style="color: #339933;">,</span> root_win<span style="color: #339933;">,</span> event_list<span style="color: #339933;">,</span> number<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            fprintf<span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;error selecting extended events<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span></pre></div></div>

<ul>
<li><strong>XInput 2:<br />
(Taken from: <a href="http://who-t.blogspot.com/2009/05/xi2-recipes-part-1.html">http://who-t.blogspot.com/2009/05/xi2-recipes-part-1.html</a>)<br />
</strong></li>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">XIEventMask eventmask<span style="color: #339933;">;</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> mask<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* the actual mask */</span>
&nbsp;
eventmask.<span style="color: #202020;">deviceid</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
eventmask.<span style="color: #202020;">mask_len</span> <span style="color: #339933;">=</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>mask<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* always in bytes */</span>
eventmask.<span style="color: #202020;">mask</span> <span style="color: #339933;">=</span> mask<span style="color: #339933;">;</span>
<span style="color: #808080; font-style: italic;">/* now set the mask */</span>
XISetMask<span style="color: #009900;">&#40;</span>mask<span style="color: #339933;">,</span> XI_ButtonPress<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
XISetMask<span style="color: #009900;">&#40;</span>mask<span style="color: #339933;">,</span> XI_Motion<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
XISetMask<span style="color: #009900;">&#40;</span>mask<span style="color: #339933;">,</span> XI_KeyPress<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* select on the window */</span>
XISelectEvents<span style="color: #009900;">&#40;</span>display<span style="color: #339933;">,</span> window<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>eventmask<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

</ul>
<h3>Event Processing &#8211; Listening/Processing Events</h3>
<p>A simple indication how to get events from XI1 and XI2</p>
<ul>
<li><strong>XInput 1: </strong>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//setup via other means</span>
<span style="color: #993333;">int</span> motion_type<span style="color: #339933;">,</span> button_press_type<span style="color: #339933;">,</span>button_release_type<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> doEvents<span style="color: #009900;">&#40;</span>Display    <span style="color: #339933;">*</span>dpy<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
&nbsp;
 XEvent        Event<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        XNextEvent<span style="color: #009900;">&#40;</span>dpy<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>Event<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>Event.<span style="color: #202020;">type</span> <span style="color: #339933;">==</span> motion_type<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            XDeviceMotionEvent <span style="color: #339933;">*</span>motion <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>XDeviceMotionEvent <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>Event<span style="color: #339933;">;</span>
            ...
&nbsp;
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>Event.<span style="color: #202020;">type</span> <span style="color: #339933;">==</span> button_press_type<span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span>
                   <span style="color: #009900;">&#40;</span>Event.<span style="color: #202020;">type</span> <span style="color: #339933;">==</span> button_release_type<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                      XDeviceButtonEvent <span style="color: #339933;">*</span>button <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>XDeviceButtonEvent <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>Event<span style="color: #339933;">;</span>
&nbsp;
            ...
        <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>Event.<span style="color: #202020;">type</span><span style="color: #339933;">=</span> .... <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            ...
     <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

</li>
<li><strong>XInput 2 </strong><strong> </strong>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//Somewhere else...</span>
&nbsp;
<span style="color: #993333;">int</span> xi_opcode<span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>XQueryExtension<span style="color: #009900;">&#40;</span>display<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;XInputExtension&quot;</span><span style="color: #339933;">,&amp;</span>xi_opcode<span style="color: #339933;">,&amp;</span>event<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>error<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;X Input extension not available.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> EXIT_FAILURE<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong> </strong></p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> doEvents <span style="color: #009900;">&#40;</span>Display <span style="color: #339933;">*</span>dpy <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        XEvent        ev<span style="color: #339933;">;</span>
        XGenericEventCookie <span style="color: #339933;">*</span>cookie <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span>ev.<span style="color: #202020;">xcookie</span><span style="color: #339933;">;</span>
        XNextEvent<span style="color: #009900;">&#40;</span>dpy<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>ev<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>XGetEventData<span style="color: #009900;">&#40;</span>dpy<span style="color: #339933;">,</span> cookie<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> cookie<span style="color: #339933;">-&gt;</span>type <span style="color: #339933;">==</span> GenericEvent
            <span style="color: #339933;">&amp;&amp;</span> cookie<span style="color: #339933;">-&gt;</span>extension<span style="color: #339933;">==</span>xi_opcode<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            XIDeviceEvent <span style="color: #339933;">*</span>event <span style="color: #339933;">=</span> cookie<span style="color: #339933;">-&gt;</span>data<span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;EVENT type %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> event<span style="color: #339933;">-&gt;</span>evtype<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>event<span style="color: #339933;">-&gt;</span>evtype<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #666666; font-style: italic;">//</span>
                <span style="color: #666666; font-style: italic;">// In all below event&gt;deviceid contains the id of the device</span>
                <span style="color: #666666; font-style: italic;">//</span>
                <span style="color: #b1b100;">case</span> XI_DeviceChanged<span style="color: #339933;">:</span>
                    XIDeviceChangedEvent <span style="color: #339933;">*</span>dc <span style="color: #339933;">=</span> cookie<span style="color: #339933;">-&gt;</span>data<span style="color: #339933;">;</span>
                    ...
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">case</span> XI_HierarchyChanged<span style="color: #339933;">:</span>
                    XIHierarchyEvent <span style="color: #339933;">*</span>he <span style="color: #339933;">=</span> cookie<span style="color: #339933;">-&gt;</span>data<span style="color: #339933;">;</span>
                    ...
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">case</span> XI_RawEvent<span style="color: #339933;">:</span>
                    XIRawEvent <span style="color: #339933;">*</span>re <span style="color: #339933;">=</span> cookie<span style="color: #339933;">-&gt;</span>data<span style="color: #339933;">;</span>
                    ...
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">case</span> XI_FocusIn<span style="color: #339933;">:</span>
                <span style="color: #b1b100;">case</span> XI_Enter<span style="color: #339933;">:</span>
                    XIEnterEvent <span style="color: #339933;">*</span>ee <span style="color: #339933;">=</span> cookie<span style="color: #339933;">-&gt;</span>data<span style="color: #339933;">;</span>
                    ...
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">case</span> XI_FocusOut<span style="color: #339933;">:</span>
                <span style="color: #b1b100;">case</span> XI_Leave<span style="color: #339933;">:</span>
                    XILeaveEvent <span style="color: #339933;">*</span>le <span style="color: #339933;">=</span> cookie<span style="color: #339933;">-&gt;</span>data<span style="color: #339933;">;</span>
                    ...
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">case</span> XI_PropertyEvent<span style="color: #339933;">:</span>
                    XIPropertyEvent <span style="color: #339933;">*</span>pe <span style="color: #339933;">=</span> cookie<span style="color: #339933;">-&gt;</span>data<span style="color: #339933;">;</span>
                    ...
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">case</span> XI_Motion<span style="color: #339933;">:</span>
                <span style="color: #b1b100;">case</span> XI_ButtonPress<span style="color: #339933;">:</span>
                <span style="color: #b1b100;">case</span> XI_ButtonRelease<span style="color: #339933;">:</span>
                <span style="color: #b1b100;">case</span> XI_KeyPress<span style="color: #339933;">:</span>
                <span style="color: #b1b100;">case</span> XI_KeyRelease<span style="color: #339933;">:</span>
                    <span style="color: #666666; font-style: italic;">// do something with event (XIDeviceEvent contains data)</span>
                    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
     <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.clearchain.com/blog/posts/xinput-1-xinput-2-conversion-guide/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>user: Yang Zhao (yzhao) Joins xf86-video-radeonhd</title>
		<link>http://www.clearchain.com/blog/posts/user-yan-zhao-yzhao-joins-xf86-video-radeonhd</link>
		<comments>http://www.clearchain.com/blog/posts/user-yan-zhao-yzhao-joins-xf86-video-radeonhd#comments</comments>
		<pubDate>Mon, 27 Jul 2009 01:18:26 +0000</pubDate>
		<dc:creator>Benjamin Close</dc:creator>
				<category><![CDATA[FreeDesktop]]></category>

		<guid isPermaLink="false">http://www.clearchain.com/blog/?p=496</guid>
		<description><![CDATA[<a href="http://www.clearchain.com/blog/posts/user-yan-zhao-yzhao-joins-xf86-video-radeonhd"><img align="left" hspace="5" width="150" height="150" src="http://www.clearchain.com/blog/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Please welcome Yang Zhao (yzhao) to the FD.o ranks. Working on Xorg and in particular the xf86-video-radeonhd driver.]]></description>
			<content:encoded><![CDATA[<p>Please welcome Yang Zhao (yzhao) to the FD.o ranks. Working on Xorg and in particular the xf86-video-radeonhd driver.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clearchain.com/blog/posts/user-yan-zhao-yzhao-joins-xf86-video-radeonhd/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>user: Alexander Sack (asac) joins ModemManager &amp; NetworkManager team</title>
		<link>http://www.clearchain.com/blog/posts/user-alexander-sack-asac-joins-modemmanager-networkmanager-team</link>
		<comments>http://www.clearchain.com/blog/posts/user-alexander-sack-asac-joins-modemmanager-networkmanager-team#comments</comments>
		<pubDate>Thu, 23 Jul 2009 00:55:53 +0000</pubDate>
		<dc:creator>Benjamin Close</dc:creator>
				<category><![CDATA[FreeDesktop]]></category>

		<guid isPermaLink="false">http://www.clearchain.com/blog/?p=493</guid>
		<description><![CDATA[<a href="http://www.clearchain.com/blog/posts/user-alexander-sack-asac-joins-modemmanager-networkmanager-team"><img align="left" hspace="5" width="150" height="150" src="http://www.clearchain.com/blog/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Please welcome Alexander Sack (asac) to the Freedesktop team. Alex will be working on ModemManager &#38; NetworkManager]]></description>
			<content:encoded><![CDATA[<p>Please welcome Alexander Sack (asac) to the Freedesktop team. Alex will be working on ModemManager &amp; NetworkManager</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clearchain.com/blog/posts/user-alexander-sack-asac-joins-modemmanager-networkmanager-team/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>user: Arkadiusz Miskiewicz (arekm) join Open Office Team</title>
		<link>http://www.clearchain.com/blog/posts/user-arkadiusz-miskiewicz-arekm-join-open-office-team</link>
		<comments>http://www.clearchain.com/blog/posts/user-arkadiusz-miskiewicz-arekm-join-open-office-team#comments</comments>
		<pubDate>Thu, 23 Jul 2009 00:52:13 +0000</pubDate>
		<dc:creator>Benjamin Close</dc:creator>
				<category><![CDATA[FreeDesktop]]></category>

		<guid isPermaLink="false">http://www.clearchain.com/blog/?p=491</guid>
		<description><![CDATA[<a href="http://www.clearchain.com/blog/posts/user-arkadiusz-miskiewicz-arekm-join-open-office-team"><img align="left" hspace="5" width="150" height="150" src="http://www.clearchain.com/blog/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Please welcome Arkadiusz Miskiewicz (arekm) to the open office team.]]></description>
			<content:encoded><![CDATA[<p>Please welcome Arkadiusz Miskiewicz (arekm) to the open office team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clearchain.com/blog/posts/user-arkadiusz-miskiewicz-arekm-join-open-office-team/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>user: Alex Villacís Lasso (a_villacis) joins xf86-video-savage</title>
		<link>http://www.clearchain.com/blog/posts/user-alex-villacis-lasso-a_villacis-joins-xf86-video-savage</link>
		<comments>http://www.clearchain.com/blog/posts/user-alex-villacis-lasso-a_villacis-joins-xf86-video-savage#comments</comments>
		<pubDate>Wed, 22 Jul 2009 23:16:20 +0000</pubDate>
		<dc:creator>Benjamin Close</dc:creator>
				<category><![CDATA[FreeDesktop]]></category>

		<guid isPermaLink="false">http://www.clearchain.com/blog/?p=488</guid>
		<description><![CDATA[<a href="http://www.clearchain.com/blog/posts/user-alex-villacis-lasso-a_villacis-joins-xf86-video-savage"><img align="left" hspace="5" width="150" height="150" src="http://www.clearchain.com/blog/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Please welcome Alex Villacís Lasso to the FreeDesktop ranks. Alex will be working on improving the Savage driver, mentored by Alex Deucher]]></description>
			<content:encoded><![CDATA[<p>Please welcome Alex Villacís Lasso to the FreeDesktop ranks. Alex will be working on improving the Savage driver, mentored by Alex Deucher</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clearchain.com/blog/posts/user-alex-villacis-lasso-a_villacis-joins-xf86-video-savage/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>user: Eitan Isaacson (eitani) join LDTP group</title>
		<link>http://www.clearchain.com/blog/posts/user-eitan-isaacson-eitani-join-ldtp-group</link>
		<comments>http://www.clearchain.com/blog/posts/user-eitan-isaacson-eitani-join-ldtp-group#comments</comments>
		<pubDate>Wed, 22 Jul 2009 23:09:58 +0000</pubDate>
		<dc:creator>Benjamin Close</dc:creator>
				<category><![CDATA[FreeDesktop]]></category>

		<guid isPermaLink="false">http://www.clearchain.com/blog/?p=485</guid>
		<description><![CDATA[<a href="http://www.clearchain.com/blog/posts/user-eitan-isaacson-eitani-join-ldtp-group"><img align="left" hspace="5" width="150" height="150" src="http://www.clearchain.com/blog/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Please welcome Eitan Isaccson to (eitani) to the ldtp group]]></description>
			<content:encoded><![CDATA[<p>Please welcome Eitan Isaccson to (eitani) to the ldtp group</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clearchain.com/blog/posts/user-eitan-isaacson-eitani-join-ldtp-group/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>user: Fathi Boudra (fabo) joins Portland / xdgutils</title>
		<link>http://www.clearchain.com/blog/posts/user-fathi-boudra-fabo-joins-portland-xdgutils</link>
		<comments>http://www.clearchain.com/blog/posts/user-fathi-boudra-fabo-joins-portland-xdgutils#comments</comments>
		<pubDate>Wed, 22 Jul 2009 23:00:53 +0000</pubDate>
		<dc:creator>Benjamin Close</dc:creator>
				<category><![CDATA[FreeDesktop]]></category>

		<guid isPermaLink="false">http://www.clearchain.com/blog/?p=482</guid>
		<description><![CDATA[<a href="http://www.clearchain.com/blog/posts/user-fathi-boudra-fabo-joins-portland-xdgutils"><img align="left" hspace="5" width="150" height="150" src="http://www.clearchain.com/blog/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Please welcome Fathi Boudra to the Freedesktop ranks. Fabo will be working on portland and xdg utils.]]></description>
			<content:encoded><![CDATA[<p>Please welcome Fathi Boudra to the Freedesktop ranks. Fabo will be working on portland and xdg utils.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.clearchain.com/blog/posts/user-fathi-boudra-fabo-joins-portland-xdgutils/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>user: Siarhei Siamashka (siamashka) Joins Xorg &amp; Cairo</title>
		<link>http://www.clearchain.com/blog/posts/user-siarhei-siamashka-siamashka-joins-xorg-cairo</link>
		<comments>http://www.clearchain.com/blog/posts/user-siarhei-siamashka-siamashka-joins-xorg-cairo#comments</comments>
		<pubDate>Wed, 22 Jul 2009 22:53:27 +0000</pubDate>
		<dc:creator>Benjamin Close</dc:creator>
				<category><![CDATA[FreeDesktop]]></category>

		<guid isPermaLink="false">http://www.clearchain.com/blog/?p=479</guid>
		<description><![CDATA[<a href="http://www.clearchain.com/blog/posts/user-siarhei-siamashka-siamashka-joins-xorg-cairo"><img align="left" hspace="5" width="150" height="150" src="http://www.clearchain.com/blog/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Please welcome Siarhei Siamashka to the Freedesktop world. Siarhei will be working on Xorg and Cairo, mentored by Søren Pedersen]]></description>
			<content:encoded><![CDATA[<p>Please welcome Siarhei Siamashka to the Freedesktop world. Siarhei will be working on Xorg and Cairo, mentored by <span><em> Søren Pedersen </em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.clearchain.com/blog/posts/user-siarhei-siamashka-siamashka-joins-xorg-cairo/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

