<keymap>

<!--
Zaurus Keyboard definition for Latin1 characters.
================================================
This keyboard should allow the entry of all characters used in latin
languages like French or Spanish.

The following rules are implemented:
- Right Shift activate dead keys that allows to compose accentuated characters.
- Keep Right Shift or press Left Shift to change case of letter
- Space can be used to abort a key composition and return to Normal state, printing
the accent.

- Keys not defined are inherited from parent mapping.

Key composition
===============
Use the Right Shift with one of the following keys to compose accentuated
characters.
	Key		Action (Mnemonic)
	/		Accute accent (same slant)
	'		Grave accent (no backslash!)
	,		Cedilla (a comma under the C)
	V		Circumflex accent (reversed circumflex)
	J		Ligature (Join letters)
	B		Trema (Near circumflex)
	N		Tilde (Same shape on N) ******* Bound to M due to a bug in the definition!
	I		Inversed (Inversed !)

All accents are in the same area, around Space bar.


Keyboard navigation (not implemented yet)
===================
To be put into common.xml. Use either Right of Left Shift:
	<-	Home
	->	End
	^	PageUp
	v	PageDown


Report bugs or comments to Pierre M�tras <admin@alterna.tv>
Version 0.1 - 20020901
-->

<!-- The base is English mapping -->
<include file="en.xml"/>


<state name="RShift-Accute" parent="RShift"/>
<state name="RShift-Accute-Lower" parent="Normal"/>
<state name="RShift-Caps-Accute" parent="Caps"/>
<state name="RShift-Caps-Accute-Upper" parent="RShift-Caps"/>

<state name="RShift-Grave" parent="RShift"/>
<state name="RShift-Grave-Lower" parent="Normal"/>
<state name="RShift-Caps-Grave" parent="Caps"/>
<state name="RShift-Caps-Grave-Upper" parent="RShift-Caps"/>

<state name="RShift-Circumflex" parent="RShift"/>
<state name="RShift-Circumflex-Lower" parent="Normal"/>
<state name="RShift-Caps-Circumflex" parent="Caps"/>
<state name="RShift-Caps-Circumflex-Upper" parent="RShift-Caps"/>

<state name="RShift-Cedilla" parent="RShift"/>
<state name="RShift-Cedilla-Lower" parent="Normal"/>
<state name="RShift-Caps-Cedilla" parent="Caps"/>
<state name="RShift-Caps-Cedilla-Upper" parent="RShift-Caps"/>

<state name="RShift-Ligature" parent="RShift"/>
<state name="RShift-Ligature-Lower" parent="Normal"/>
<state name="RShift-Caps-Ligature" parent="Caps"/>
<state name="RShift-Caps-Ligature-Upper" parent="RShift-Caps"/>

<state name="RShift-Trema" parent="RShift"/>
<state name="RShift-Trema-Lower" parent="Normal"/>
<state name="RShift-Caps-Trema" parent="Caps"/>
<state name="RShift-Caps-Trema-Upper" parent="RShift-Caps"/>

<state name="RShift-Tilde" parent="RShift"/>
<state name="RShift-Tilde-Lower" parent="Normal"/>
<state name="RShift-Caps-Tilde" parent="Caps"/>
<state name="RShift-Caps-Tilde-Upper" parent="RShift-Caps"/>

<state name="RShift-Inversed" parent="RShift"/>
<state name="RShift-Caps-Inversed" parent="Caps"/>



<!-- TO BE PLACED INTO COMMON -->
<!-- START: EXTENDED KEY NAVIGATION -->
<state name="LShift">
	<map keycode="Left" pressed="true">
		<event keycode="Home" unicode="-1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Left" pressed="false">
		<event keycode="Home" unicode="-1" pressed="false"/>
	</map>
	
	<map keycode="Up" pressed="true">
		<event keycode="PageUp" unicode="-1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Up" pressed="false">
		<event keycode="PageUp" unicode="-1" pressed="false"/>
	</map>
	
	<map keycode="Right" pressed="true">
		<event keycode="End" unicode="-1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Right" pressed="false">
		<event keycode="End" unicode="-1" pressed="false"/>
	</map>
	
	<map keycode="Down" pressed="true">
		<event keycode="PageDown" unicode="-1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Down" pressed="false">
		<event keycode="PageDown" unicode="-1" pressed="false"/>
	</map>
</state>
<state name="RShift">
	<map keycode="Left" pressed="true">
		<event keycode="Home" unicode="-1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Left" pressed="false">
		<event keycode="Home" unicode="-1" pressed="false"/>
	</map>
	
	<map keycode="Up" pressed="true">
		<event keycode="PageUp" unicode="-1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Up" pressed="false">
		<event keycode="PageUp" unicode="-1" pressed="false"/>
	</map>
	
	<map keycode="Right" pressed="true">
		<event keycode="End" unicode="-1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Right" pressed="false">
		<event keycode="End" unicode="-1" pressed="false"/>
	</map>
	
	<map keycode="Down" pressed="true">
		<event keycode="PageDown" unicode="-1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Down" pressed="false">
		<event keycode="PageDown" unicode="-1" pressed="false"/>
	</map>
</state>
<!-- END: EXTENDED KEY NAVIGATION -->



<!-- RShift activate dead keys -->
<state name="RShift">
	<map keycode="Slash" pressed="true">
		<next-state name="RShift-Accute"/>
	</map>
	<map keycode="Apostrophe" pressed="true">
		<next-state name="RShift-Grave"/>
	</map>
	<map keycode="Comma" pressed="true">
		<next-state name="RShift-Cedilla"/>
	</map>
	<map keycode="J" pressed="true">
		<next-state name="RShift-Ligature"/>
	</map>
	<map keycode="V" pressed="true">
		<next-state name="RShift-Circumflex"/>
	</map>
	<map keycode="B" pressed="true">
		<next-state name="RShift-Trema"/>
	</map>
	<map keycode="M" pressed="true">
		<next-state name="RShift-Tilde"/>
	</map>
	<map keycode="I" pressed="true">
		<next-state name="RShift-Inversed"/>
	</map>
</state>


<!-- RShift activate dead keys in CAPS mode -->
<state name="RShift-Caps">
	<map keycode="Slash" pressed="true">
		<next-state name="RShift-Caps-Accute"/>
	</map>
	<map keycode="Apostrophe" pressed="true">
		<next-state name="RShift-Caps-Grave"/>
	</map>
	<map keycode="Comma" pressed="true">
		<next-state name="RShift-Caps-Cedilla"/>
	</map>
	<map keycode="J" pressed="true">
		<next-state name="RShift-Caps-Ligature"/>
	</map>
	<map keycode="V" pressed="true">
		<next-state name="RShift-Caps-Circumflex"/>
	</map>
	<map keycode="B" pressed="true">
		<next-state name="RShift-Caps-Trema"/>
	</map>
	<map keycode="M" pressed="true">
		<next-state name="RShift-Caps-Tilde"/>
	</map>
	<map keycode="I" pressed="true">
		<next-state name="RShift-Caps-Inversed"/>
	</map>
</state>


<!-- Accute Accentuated Upper-Case Characters: �, �... because we still press Shift -->
<state name="RShift-Accute">
	<!-- RS + (/) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC1" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC1" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (/) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xC9" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xC9" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (/) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xCD" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xCD" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (/) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xD3" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xD3" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (/) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xDA" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xDA" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (/) + Y = � -->
	<map keycode="Y" pressed="true">
		<event keycode="Y" unicode="0xDD" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="Y" pressed="false">
		<event keycode="Y" unicode="0xDD" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- Release shift to do lower-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Accute-Lower"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Accute-Lower"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="Slash" unicode="0xB4" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Slash" unicode="0xB4" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Accute Accentuated Lower-Case Characters: �, �... because we have released RShift -->
<state name="RShift-Accute-Lower">
	<!-- RS + (/) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE1" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (/) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xE9" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xE9" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (/) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xED" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xED" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (/) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xF3" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xF3" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (/) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xFA" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xFA" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (/) + Y = � -->
	<map keycode="Y" pressed="true">
		<event keycode="Y" unicode="0xFD" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Y" pressed="false">
		<event keycode="Y" unicode="0xFD" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- Simple shift second time goes Upper-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Accute"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Accute"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="Slash" unicode="0xB4" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Slash" unicode="0xB4" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Accute Accentuated Lower-Case Characters: �, �... because we still press Shift and we are in Caps -->
<state name="RShift-Caps-Accute">
	<!-- Caps + RS + (/) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE1" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (/) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xE9" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xE9" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (/) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xED" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xED" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (/) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xF3" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xF3" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (/) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xFA" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xFA" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (/) + Y = � -->
	<map keycode="Y" pressed="true">
		<event keycode="Y" unicode="0xFD" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Y" pressed="false">
		<event keycode="Y" unicode="0xFD" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Release shift to go upper-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Caps-Accute-Upper"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Caps-Accute-Upper"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="Slash" unicode="0xB4" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Slash" unicode="0xB4" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>


<!-- Accute Accentuated Upper-Case Characters: �, �... because we have released RShift but we are in Caps -->
<state name="RShift-Caps-Accute-Upper">
	<!-- Caps + RS + (/) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC1" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC1" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (/) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xC9" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xC9" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (/) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xCD" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xCD" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (/) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xD3" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xD3" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (/) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xDA" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xDA" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (/) + Y = � -->
	<map keycode="Y" pressed="true">
		<event keycode="Y" unicode="0xDD" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="Y" pressed="false">
		<event keycode="Y" unicode="0xDD" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Simple shift second time goes Lower-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Caps-Accute"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Caps-Accute"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="Slash" unicode="0xB4" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Slash" unicode="0xB4" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>




<!-- Grave Accentuated Upper-Case Characters: �, �, �... because we still press Shift -->
<state name="RShift-Grave">
	<!-- RS + (') + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC0" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC0" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (') + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xC8" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xC8" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (') + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xCC" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xCC" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (') + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xD2" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xD2" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (') + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xD9" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xD9" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- Release shift to do lower-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Grave-Lower"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Grave-Lower"/>
	</map>

	<!-- Abort operation: print ` -->
	<map keycode="Space" pressed="true">
		<event keycode="Apostrophe" unicode="0x60" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Apostrophe" unicode="0x60" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Grave Accentuated Lower-Case Characters: �, �, �... because we have released RShift -->
<state name="RShift-Grave-Lower">
	<!-- RS + (') + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE0" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE0" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (') + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xE8" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xE8" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (') + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xEC" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xEC" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (') + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xF2" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xF2" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (') + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xF9" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xF9" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- Simple shift second time goes Upper-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Grave"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Grave"/>
	</map>

	<!-- Abort operation: print ` -->
	<map keycode="Space" pressed="true">
		<event keycode="Apostrophe" unicode="0x60" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Apostrophe" unicode="0x60" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Grave Accentuated Lower-Case Characters: �, �... because we still press Shift and we are in Caps -->
<state name="RShift-Caps-Grave">
	<!-- Caps + RS + (') + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE0" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE0" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (') + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xE8" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xE8" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (') + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xEC" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xEC" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (') + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xF2" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xF2" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (') + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xF9" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xF9" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Release shift to go upper-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Caps-Grave-Upper"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Caps-Grave-Upper"/>
	</map>

	<!-- Abort operation: print ` -->
	<map keycode="Space" pressed="true">
		<event keycode="Apostrophe" unicode="0x60" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Apostrophe" unicode="0x60" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>


<!-- Grave Accentuated Upper-Case Characters: �, �, �... because we have released RShift and we are in Caps -->
<state name="RShift-Caps-Grave-Upper">
	<!-- Caps + RS + (') + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC0" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC0" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (') + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xC8" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xC8" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (') + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xCC" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xCC" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (') + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xD2" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xD2" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (') + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xD9" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xD9" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Simple shift second time goes Lower-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Caps-Grave"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Caps-Grave"/>
	</map>

	<!-- Abort operation: print ` -->
	<map keycode="Space" pressed="true">
		<event keycode="Apostrophe" unicode="0x60" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Apostrophe" unicode="0x60" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>




<!-- Circumflex Accentuated Upper-Case Characters: �, �, �... because we still press Shift -->
<state name="RShift-Circumflex">
	<!-- RS + (V) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC2" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC2" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (V) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xCA" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xCA" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (V) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xCE" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xCE" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (V) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xD4" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xD4" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (V) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xDB" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xDB" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- Release shift to do lower-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Circumflex-Lower"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Circumflex-Lower"/>
	</map>

	<!-- Abort operation: print ^ -->
	<map keycode="Space" pressed="true">
		<event keycode="V" unicode="0x5E" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="V" unicode="0x5E" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Circumflex Accentuated Lower-Case Characters: �, �, �... because we have released RShift -->
<state name="RShift-Circumflex-Lower">
	<!-- RS + (V) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE2" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE2" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (V) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xEA" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xEA" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (V) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xEE" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xEE" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (V) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xF4" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xF4" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (V) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xFB" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xFB" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- Simple shift second time goes Upper-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Circumflex"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Circumflex"/>
	</map>

	<!-- Abort operation: print ^ -->
	<map keycode="Space" pressed="true">
		<event keycode="V" unicode="0x5E" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="V" unicode="0x5E" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Circumflex Accentuated Lower-Case Characters: �, �... because we still press Shift and we are in Caps -->
<state name="RShift-Caps-Circumflex">
	<!-- Caps + RS + (V) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE2" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE2" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (V) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xEA" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xEA" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (V) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xEE" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xEE" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (V) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xF4" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xF4" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (V) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xFB" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xFB" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Release shift to go upper-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Caps-Circumflex-Upper"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Caps-Circumflex-Upper"/>
	</map>

	<!-- Abort operation: print ^ -->
	<map keycode="Space" pressed="true">
		<event keycode="V" unicode="0x5E" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="V" unicode="0x5E" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>


<!-- Circumflex Accentuated Upper-Case Characters: �, �, �... because we have released RShift and we are in Caps -->
<state name="RShift-Caps-Circumflex-Upper">
	<!-- Caps + RS + (V) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC2" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC2" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (V) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xCA" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xCA" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (V) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xCE" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xCE" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (V) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xD4" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xD4" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (V) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xDB" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xDB" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Simple shift second time goes Lower-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Caps-Circumflex"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Caps-Circumflex"/>
	</map>

	<!-- Abort operation: print ^ -->
	<map keycode="Space" pressed="true">
		<event keycode="V" unicode="0x5E" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="V" unicode="0x5E" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>




<!-- Cedilla Upper-Case Characters: �... because we still press Shift -->
<state name="RShift-Cedilla">
	<!-- RS + (,) + C = � -->
	<map keycode="C" pressed="true">
		<event keycode="C" unicode="0xC7" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="C" pressed="false">
		<event keycode="C" unicode="0xC7" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- Release shift to do lower-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Cedilla-Lower"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Cedilla-Lower"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="Comma" unicode="0xB8" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Comma" unicode="0xB8" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Cedilla Lower-Case Characters: �... because we have released RShift -->
<state name="RShift-Cedilla-Lower">
	<!-- RS + (,) + C = � -->
	<map keycode="C" pressed="true">
		<event keycode="C" unicode="0xE7" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="C" pressed="false">
		<event keycode="C" unicode="0xE7" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- Simple shift second time goes Upper-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Cedilla"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Cedilla"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="Comma" unicode="0xB8" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Comma" unicode="0xB8" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Cedilla Lower-Case Characters: �... because we still press Shift and we are in Caps -->
<state name="RShift-Caps-Cedilla">
	<!-- Caps + RS + (,) + C = � -->
	<map keycode="C" pressed="true">
		<event keycode="C" unicode="0xE7" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="C" pressed="false">
		<event keycode="C" unicode="0xE7" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Release shift to go upper-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Caps-Cedilla-Upper"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Caps-Cedilla-Upper"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="Comma" unicode="0xB8" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Comma" unicode="0xB8" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>


<!-- Cedilla Upper-Case Characters: �... because we have released RShift but we are in Caps -->
<state name="RShift-Caps-Cedilla-Upper">
	<!-- Caps + RS + (,) + C = � -->
	<map keycode="C" pressed="true">
		<event keycode="C" unicode="0xC7" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="C" pressed="false">
		<event keycode="C" unicode="0xC7" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Simple shift second time goes Lower-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Caps-Cedilla"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Caps-Cedilla"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="Comma" unicode="0xB8" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="Comma" unicode="0xB8" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>




<!-- Ligatured Upper-Case Characters: �, � ... because we still press Shift -->
<state name="RShift-Ligature">
	<!-- RS + (J) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC6" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC6" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (J) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0x152" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0x152" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- Release shift to do lower-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Ligature-Lower"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Ligature-Lower"/>
	</map>

	<!-- Abort operation: print J -->
	<map keycode="Space" pressed="true">
		<event keycode="J" unicode="0x4A" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="J" unicode="0x4A" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Ligatured Lower-Case Characters: �, �... because we have released RShift -->
<state name="RShift-Ligature-Lower">
	<!-- RS + (J) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE6" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE6" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (J) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0x153" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0x153" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- Simple shift second time goes Upper-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Ligature"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Ligature"/>
	</map>

	<!-- Abort operation: print j -->
	<map keycode="Space" pressed="true">
		<event keycode="J" unicode="0x6A" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="J" unicode="0x6A" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Ligatured Lower-Case Characters: �, �... because we still press Shift and we are in Caps -->
<state name="RShift-Caps-Ligature">
	<!-- Caps + RS + (J) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE6" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE6" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (J) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0x153" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0x153" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Release shift to go upper-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Caps-Ligature-Upper"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Caps-Ligature-Upper"/>
	</map>

	<!-- Abort operation: print j -->
	<map keycode="Space" pressed="true">
		<event keycode="J" unicode="0x6A" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="J" unicode="0x6A" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>


<!-- Ligatured Upper-Case Characters: �, �... because we have released RShift but we are in Caps -->
<state name="RShift-Caps-Ligature-Upper">
	<!-- Caps + RS + (J) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC6" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC6" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (J) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0x152" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0x152" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Simple shift second time goes Lower-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Caps-Ligature"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Caps-Ligature"/>
	</map>

	<!-- Abort operation: print J -->
	<map keycode="Space" pressed="true">
		<event keycode="J" unicode="0x4A" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="J" unicode="0x4A" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>




<!-- Trema Accentuated Upper-Case Characters: �, �... because we still press Shift -->
<state name="RShift-Trema">
	<!-- RS + (B) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC4" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC4" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (B) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xCB" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xCB" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (B) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xCF" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xCF" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (B) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xD6" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xD6" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (B) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xDC" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xDC" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- Release shift to do lower-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Trema-Lower"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Trema-Lower"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="B" unicode="0xA8" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="B" unicode="0xA8" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Trema Accentuated Lower-Case Characters: �, �... because we have released RShift -->
<state name="RShift-Trema-Lower">
	<!-- RS + (B) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE4" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE4" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (B) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xEB" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xEB" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (B) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xEF" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xEF" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (B) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xF6" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xF6" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (B) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xFC" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xFC" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (B) + Y = � -->
	<map keycode="Y" pressed="true">
		<event keycode="Y" unicode="0xFF" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Y" pressed="false">
		<event keycode="Y" unicode="0xFF" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- Simple shift second time goes Upper-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Trema"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Trema"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="B" unicode="0xA8" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="B" unicode="0xA8" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Trema Accentuated Lower-Case Characters: �, �... because we still press Shift and we are in Caps -->
<state name="RShift-Caps-Trema">
	<!-- Caps + RS + (B) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE4" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE4" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (B) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xEB" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xEB" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (B) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xEF" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xEF" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (B) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xF6" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xF6" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (B) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xFC" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xFC" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (B) + Y = � -->
	<map keycode="Y" pressed="true">
		<event keycode="Y" unicode="0xFF" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Y" pressed="false">
		<event keycode="Y" unicode="0xFF" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Release shift to go upper-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Caps-Trema-Upper"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Caps-Trema-Upper"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="B" unicode="0xA8" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="B" unicode="0xA8" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>


<!-- Trema Accentuated Upper-Case Characters: �, �... because we have released RShift but we are in Caps -->
<state name="RShift-Caps-Trema-Upper">
	<!-- Caps + RS + (B) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC4" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC4" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (B) + E = � -->
	<map keycode="E" pressed="true">
		<event keycode="E" unicode="0xCB" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="E" pressed="false">
		<event keycode="E" unicode="0xCB" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (B) + I = � -->
	<map keycode="I" pressed="true">
		<event keycode="I" unicode="0xCF" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="I" pressed="false">
		<event keycode="I" unicode="0xCF" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (B) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xD6" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xD6" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (B) + U = � -->
	<map keycode="U" pressed="true">
		<event keycode="U" unicode="0xDC" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="U" pressed="false">
		<event keycode="U" unicode="0xDC" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Simple shift second time goes Lower-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Caps-Trema"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Caps-Trema"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="B" unicode="0xA8" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="B" unicode="0xA8" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>




<!-- Tilde Upper-Case Characters: �, �... because we still press Shift -->
<state name="RShift-Tilde">
	<!-- RS + (N) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC3" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC3" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (N) + N = � -->
	<map keycode="N" pressed="true">
		<event keycode="N" unicode="0xD1" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="N" pressed="false">
		<event keycode="N" unicode="0xD1" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (N) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xD5" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xD5" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- Release shift to do lower-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Tilde-Lower"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Tilde-Lower"/>
	</map>

	<!-- Abort operation: print ~ -->
	<map keycode="Space" pressed="true">
		<event keycode="N" unicode="0x7E" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="N" unicode="0x7E" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Tilde Lower-Case Characters: �, �, �... because we have released RShift -->
<state name="RShift-Tilde-Lower">
	<!-- RS + (N) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE3" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE3" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (N) + N = � -->
	<map keycode="N" pressed="true">
		<event keycode="N" unicode="0xF1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="N" pressed="false">
		<event keycode="N" unicode="0xF1" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (N) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xF5" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xF5" pressed="false"/>
		<next-state name="Normal"/>
	</map>

	<!-- Simple shift second time goes Upper-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Tilde"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Tilde"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="B" unicode="0xA8" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="B" unicode="0xA8" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Tilde Lower-Case Characters: �, �, �... because we still press Shift and we are in Caps -->
<state name="RShift-Caps-Tilde">
	<!-- Caps + RS + (N) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xE3" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xE3" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (N) + N = � -->
	<map keycode="N" pressed="true">
		<event keycode="N" unicode="0xF1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="N" pressed="false">
		<event keycode="N" unicode="0xF1" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (N) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xF5" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xF5" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Release shift to go upper-case -->
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Caps-Tilde-Upper"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Caps-Tilde-Upper"/>
	</map>

	<!-- Abort operation: print ~ -->
	<map keycode="Space" pressed="true">
		<event keycode="N" unicode="0x7E" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="N" unicode="0x7E" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>


<!-- Tilde Upper-Case Characters: �, �, �... because we have released RShift but we are in Caps -->
<state name="RShift-Caps-Tilde-Upper">
	<!-- Caps + RS + (N) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xC3" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xC3" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (N) + N = � -->
	<map keycode="N" pressed="true">
		<event keycode="N" unicode="0xD1" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="N" pressed="false">
		<event keycode="N" unicode="0xD1" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (N) + O = � -->
	<map keycode="O" pressed="true">
		<event keycode="O" unicode="0xD5" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="O" pressed="false">
		<event keycode="O" unicode="0xD5" pressed="false" modifiers="Shift"/>
		<next-state name="Caps"/>
	</map>

	<!-- Simple shift second time goes Lower-Case -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Caps-Tilde"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Caps-Tilde"/>
	</map>

	<!-- Abort operation: print ~ -->
	<map keycode="Space" pressed="true">
		<event keycode="N" unicode="0x7E" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="N" unicode="0x7E" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>




<!-- Inversed Characters: �, �... -->
<state name="RShift-Inversed">
	<!-- RS + (I) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xA1" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xA1" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- RS + (I) + / = � -->
	<map keycode="Slash" pressed="true">
		<event keycode="Slash" unicode="0xBF" pressed="true" modifiers="Shift" autorepeat="true"/>
	</map>
	<map keycode="N" pressed="false">
		<event keycode="N" unicode="0xBF" pressed="false" modifiers="Shift"/>
		<next-state name="Normal"/>
	</map>

	<!-- Shift has no action -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Inversed"/>
	</map>
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Inversed"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Inversed"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Inversed"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="I" unicode="0xAC" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="I" unicode="0xAC" pressed="false"/>
		<next-state name="Normal"/>
	</map>
</state>


<!-- Inversed Characters: �, �... -->
<state name="RShift-Caps-Inversed">
	<!-- Caps + RS + (I) + A = � -->
	<map keycode="A" pressed="true">
		<event keycode="A" unicode="0xA1" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="A" pressed="false">
		<event keycode="A" unicode="0xA1" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Caps + RS + (I) + / = � -->
	<map keycode="Slash" pressed="true">
		<event keycode="Slash" unicode="0xBF" pressed="true" autorepeat="true"/>
	</map>
	<map keycode="Slash" pressed="false">
		<event keycode="Slash" unicode="0xBF" pressed="false"/>
		<next-state name="Caps"/>
	</map>

	<!-- Shift has no effect -->
	<map keycode="Right Shift" pressed="true">
		<next-state name="RShift-Caps-Inversed"/>
	</map>
	<map keycode="Right Shift" pressed="false">
		<next-state name="RShift-Caps-Inversed"/>
	</map>
	<map keycode="Left Shift" pressed="true">
		<event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
		<next-state name="RShift-Caps-Inversed"/>
	</map>
	<map keycode="Left Shift" pressed="false">
		<event keycode="Shift" unicode="-1" pressed="false"/>
		<next-state name="RShift-Caps-Inversed"/>
	</map>

	<!-- Abort operation: print � -->
	<map keycode="Space" pressed="true">
		<event keycode="I" unicode="0xAC" pressed="true" autorepeat="false"/>
	</map>
	<map keycode="Space" pressed="false">
		<event keycode="I" unicode="0xAC" pressed="false"/>
		<next-state name="Caps"/>
	</map>
</state>


</keymap>