feat(developer): move testfiles to seperate folders for each conversion

This commit is contained in:
Sabine 2026-05-07 09:21:30 +02:00
parent a1ceb539c2
commit cbf3dee04f
71 changed files with 4264 additions and 128 deletions

View file

@ -0,0 +1,596 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated April 15 2025
Generated by S. Schmitt
a test with lots of shiftstates, behaviours and C0, C1, C2 C3 rules
-->
<keyboard group="126" id="-1272" name="Test" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
<modifier keys="shift? caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="shift? leftShift caps? "/>
<modifier keys="anyShift caps?"/>
<modifier keys="shift leftShift caps "/>
<modifier keys="shift? rightShift caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="anyShift? anyOption caps? anyControl"/>
<modifier keys="anyShift? anyOption? caps? anyControl"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="anyShift caps? anyOption ?"/>
</keyMapSelect>
<keyMapSelect mapIndex="5">
<modifier keys="anyOption"/>
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="6">
<modifier keys="anyOption "/>
</keyMapSelect>
<keyMapSelect mapIndex="7">
<modifier keys="caps anyOption ?"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="A_9"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="5" output="g"/>
<key code="6" output="z"/>
<key code="7" output="x"/>
<key code="8" output="c"/>
<key code="9" output="v"/>
<key code="10" output="\"/>
<key code="11" output="b"/>
<key code="12" output="q"/>
<key code="13" output="w"/>
<key code="14" action="A_10"/>
<key code="15" output="r"/>
<key code="16" action="A_15"/>
<key code="17" output="t"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" action="A_18"/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x0027;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="+"/>
<key code="31" action="A_13"/>
<key code="32" action="A_14"/>
<key code="33" output="è"/>
<key code="34" action="A_11"/>
<key code="35" output="p"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="l"/>
<key code="38" output="j"/>
<key code="39" output="à"/>
<key code="40" output="k"/>
<key code="41" output="ò"/>
<key code="42" output="ù"/>
<key code="43" output=","/>
<key code="44" output="-"/>
<key code="45" action="A_12"/>
<key code="46" output="m"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="1">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="@"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="\"/>
<key code="11" output="B"/>
<key code="12" output="Q"/>
<key code="13" output="W"/>
<key code="14" action="A_2"/>
<key code="15" output="R"/>
<key code="16" action="A_7"/>
<key code="17" output="T"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="ì"/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x0027;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="+"/>
<key code="31" action="A_5"/>
<key code="32" action="A_6"/>
<key code="33" output="è"/>
<key code="34" action="A_3"/>
<key code="35" output="P"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="L"/>
<key code="38" output="J"/>
<key code="39" output="à"/>
<key code="40" output="K"/>
<key code="41" output="ò"/>
<key code="42" output="ù"/>
<key code="43" output=","/>
<key code="44" output="-"/>
<key code="45" action="A_4"/>
<key code="46" output="M"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="2">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="H"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="|"/>
<key code="11" output="B"/>
<key code="12" output="Q"/>
<key code="13" output="W"/>
<key code="14" action="A_2"/>
<key code="15" output="R"/>
<key code="16" action="A_7"/>
<key code="17" output="T"/>
<key code="18" output="!"/>
<key code="19" output="&#x0022;"/>
<key code="20" output="£"/>
<key code="21" output="$"/>
<key code="22" output="&#x0026;"/>
<key code="23" output="%"/>
<key code="24" output="^"/>
<key code="25" output=")"/>
<key code="26" output="/"/>
<key code="27" output="?"/>
<key code="28" output="("/>
<key code="29" output="="/>
<key code="30" output="*"/>
<key code="31" action="A_5"/>
<key code="32" action="A_6"/>
<key code="33" output="é"/>
<key code="34" action="A_3"/>
<key code="35" output="P"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="L"/>
<key code="38" output="J"/>
<key code="39" output="°"/>
<key code="40" output="K"/>
<key code="41" output="ç"/>
<key code="42" output="§"/>
<key code="43" output=";"/>
<key code="44" output="_"/>
<key code="45" action="A_4"/>
<key code="46" output="M"/>
<key code="47" output=":"/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="3">
<key code="0" output="U+1F600"/>
<key code="1" output="&#x1F601;"/>
<key code="2" output="&#x1234;"/>
<key code="3" output="ሴ"/>
<key code="4" output="😎"/>
<key code="5" output="&#x0007;"/>
<key code="6" output="&#x0017;"/>
<key code="7" output="&#x0018;"/>
<key code="8" output="&#x0003;"/>
<key code="9" output="&#x0016;"/>
<key code="10" output="&#x001C;"/>
<key code="11" output="&#x0002;"/>
<key code="12" output="&#x0011;"/>
<key code="13" output="&#x001A;"/>
<key code="14" output="&#x0005;"/>
<key code="15" output="&#x0012;"/>
<key code="16" output="&#x0019;"/>
<key code="17" output="&#x0014;"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="="/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x001F;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="&#x001D;"/>
<key code="31" output="&#x000F;"/>
<key code="32" output="&#x0015;"/>
<key code="33" output="&#x001E;"/>
<key code="34" output="&#x0009;"/>
<key code="35" output="&#x0010;"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="&#x000C;"/>
<key code="38" output="&#x000A;"/>
<key code="39" output="%"/>
<key code="40" output="&#x000B;"/>
<key code="41" output="&#x000D;"/>
<key code="42" output="°"/>
<key code="43" output="."/>
<key code="44" output="!"/>
<key code="45" output="&#x000E;"/>
<key code="46" output="?"/>
<key code="47" output="/"/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="4">
<key code="0" output="Å"/>
<key code="1" output="¯"/>
<key code="2" output="˘"/>
<key code="3" output="˙"/>
<key code="4" output="¸"/>
<key code="5" output="˚"/>
<key code="6" action="A_0"/>
<key code="7" output="‡"/>
<key code="8" output="Á"/>
<key code="9" output="É"/>
<key code="10" output="ı"/>
<key code="11" output="Í"/>
<key code="12" output="‚"/>
<key code="13" output="À"/>
<key code="14" output="È"/>
<key code="15" output="Ì"/>
<key code="16" output="Æ"/>
<key code="17" output="Ò"/>
<key code="18" output="»"/>
<key code="19" output="”"/>
<key code="20" output="’"/>
<key code="21" output="¢"/>
<key code="22" output="›"/>
<key code="23" output="‰"/>
<key code="24" output="±"/>
<key code="25" action="A_0"/>
<key code="26" output="⁄"/>
<key code="27" output="¿"/>
<key code="28" output=""/>
<key code="29" output="≈"/>
<key code="30" output="}"/>
<key code="31" output="Ø"/>
<key code="32" output="Ù"/>
<key code="33" output="{"/>
<key code="34" output="Œ"/>
<key code="35" output="∏"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="ˇ"/>
<key code="38" output="˝"/>
<key code="39" output="∞"/>
<key code="40" output="˛"/>
<key code="41" output="Ç"/>
<key code="42" output="◊"/>
<key code="43" action="A_0"/>
<key code="44" output="—"/>
<key code="45" output="Ó"/>
<key code="46" output="Ú"/>
<key code="47" output="·"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="5">
<key code="0" output="å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="∆"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" action="A_18"/>
<key code="25" action="A_8"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" action="A_17"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="ø"/>
<key code="32" action="A_16"/>
<key code="33" output="["/>
<key code="34" output="œ"/>
<key code="35" output="π"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" action="A_19"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="6">
<key code="0" output="å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="ẞ"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" output="ˆ"/>
<key code="25" output="`"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" output="´"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="ø"/>
<key code="32" output="¨"/>
<key code="33" output="["/>
<key code="34" output="œ"/>
<key code="35" output="π"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" output="˜"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="7">
<key code="0" output="Å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="€"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="Æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" output="ˆ"/>
<key code="25" output="`"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" output="´"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="Ø"/>
<key code="32" output="¨"/>
<key code="33" output="["/>
<key code="34" output="Œ"/>
<key code="35" output="∏"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" output="˜"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A_0">
<when state="none" output=" "/>
<when state="1" output="ˆ"/>
<when state="2" output="`"/>
<when state="3" output="´"/>
<when state="4" output="¨"/>
<when state="5" output="˜"/>
</action>
<action id="A_1">
<when state="none" output="A"/>
<when state="1" output="Â"/>
<when state="2" output="À"/>
<when state="3" output="Á"/>
<when state="4" output="Ä"/>
<when state="5" output="Ã"/>
</action>
<action id="A_10">
<when state="none" output="e"/>
<when state="1" output="ê"/>
<when state="2" output="è"/>
<when state="3" output="é"/>
<when state="4" output="ë"/>
</action>
<action id="A_11">
<when state="none" output="i"/>
<when state="1" output="î"/>
<when state="2" output="ì"/>
<when state="3" output="í"/>
<when state="4" output="ï"/>
</action>
<action id="A_12">
<when state="none" output="n"/>
<when state="5" output="ñ"/>
</action>
<action id="A_13">
<when state="none" output="o"/>
<when state="1" output="ô"/>
<when state="2" output="ò"/>
<when state="3" output="ó"/>
<when state="4" output="ö"/>
<when state="5" output="õ"/>
</action>
<action id="A_14">
<when state="none" output="u"/>
<when state="1" output="û"/>
<when state="2" output="ù"/>
<when state="3" output="ú"/>
<when state="4" output="ü"/>
</action>
<action id="A_15">
<when state="none" output="y"/>
<when state="4" output="ÿ"/>
</action>
<action id="A_16">
<when state="none" next="4"/>
<when state="3" next="1"/>
</action>
<action id="A_17">
<when state="none" next="3"/>
</action>
<action id="A_18">
<when state="none" next="1"/>
</action>
<action id="A_19">
<when state="none" next="5"/>
</action>
<action id="A_2">
<when state="none" output="E"/>
<when state="1" output="Ê"/>
<when state="2" output="È"/>
<when state="3" output="É"/>
<when state="4" output="Ë"/>
</action>
<action id="A_3">
<when state="none" output="I"/>
<when state="1" output="Î"/>
<when state="2" output="Ì"/>
<when state="3" output="Í"/>
<when state="4" output="Ï"/>
</action>
<action id="A_4">
<when state="none" output="N"/>
<when state="5" output="Ñ"/>
</action>
<action id="A_5">
<when state="none" output="O"/>
<when state="1" output="Ô"/>
<when state="2" output="Ò"/>
<when state="3" output="Ó"/>
<when state="4" output="Ö"/>
<when state="5" output="Õ"/>
</action>
<action id="A_6">
<when state="none" output="U"/>
<when state="1" output="Û"/>
<when state="2" output="Ù"/>
<when state="3" output="Ú"/>
<when state="4" output="Ü"/>
</action>
<action id="A_7">
<when state="none" output="Y"/>
<when state="4" output="Ÿ"/>
</action>
<action id="A_8">
<when state="none" next="2"/>
</action>
<action id="A_9">
<when state="none" output="A"/>
<when state="1" output="â"/>
<when state="2" output="à"/>
<when state="3" output="á"/>
<when state="4" output="ä"/>
<when state="5" output="ã"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
<when state="2" output="`"/>
<when state="3" output="´"/>
<when state="4" output="¨"/>
<when state="5" output="˜"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,596 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated April 15 2025
Generated by S. Schmitt
a test with lots of shiftstates, behaviours and C0, C1, C2 C3 rules
-->
<keyboard group="126" id="-1272" name="Test" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
<modifier keys="shift? caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="shift? leftShift caps? "/>
<modifier keys="anyShift caps?"/>
<modifier keys="shift leftShift caps "/>
<modifier keys="shift? rightShift caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="anyShift? anyOption caps? anyControl"/>
<modifier keys="anyShift? anyOption? caps? anyControl"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="anyShift caps? anyOption ?"/>
</keyMapSelect>
<keyMapSelect mapIndex="5">
<modifier keys="anyOption"/>
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="6">
<modifier keys="anyOption "/>
</keyMapSelect>
<keyMapSelect mapIndex="7">
<modifier keys="caps anyOption ?"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="A_9"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="5" output="g"/>
<key code="6" output="z"/>
<key code="7" output="x"/>
<key code="8" output="c"/>
<key code="9" output="v"/>
<key code="10" output="\"/>
<key code="11" output="b"/>
<key code="12" output="q"/>
<key code="13" output="w"/>
<key code="14" action="A_10"/>
<key code="15" output="r"/>
<key code="16" action="A_15"/>
<key code="17" output="t"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" action="A_18"/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x0027;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="+"/>
<key code="31" action="A_13"/>
<key code="32" action="A_14"/>
<key code="33" output="è"/>
<key code="34" action="A_11"/>
<key code="35" output="p"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="l"/>
<key code="38" output="j"/>
<key code="39" output="à"/>
<key code="40" output="k"/>
<key code="41" output="ò"/>
<key code="42" output="ù"/>
<key code="43" output=","/>
<key code="44" output="-"/>
<key code="45" action="A_12"/>
<key code="46" output="m"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="1">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="@"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="\"/>
<key code="11" output="B"/>
<key code="12" output="Q"/>
<key code="13" output="W"/>
<key code="14" action="A_2"/>
<key code="15" output="R"/>
<key code="16" action="A_7"/>
<key code="17" output="T"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="ì"/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x0027;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="+"/>
<key code="31" action="A_5"/>
<key code="32" action="A_6"/>
<key code="33" output="è"/>
<key code="34" action="A_3"/>
<key code="35" output="P"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="L"/>
<key code="38" output="J"/>
<key code="39" output="à"/>
<key code="40" output="K"/>
<key code="41" output="ò"/>
<key code="42" output="ù"/>
<key code="43" output=","/>
<key code="44" output="-"/>
<key code="45" action="A_4"/>
<key code="46" output="M"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="2">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="H"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="|"/>
<key code="11" output="B"/>
<key code="12" output="Q"/>
<key code="13" output="W"/>
<key code="14" action="A_2"/>
<key code="15" output="R"/>
<key code="16" action="A_7"/>
<key code="17" output="T"/>
<key code="18" output="!"/>
<key code="19" output="&#x0022;"/>
<key code="20" output="£"/>
<key code="21" output="$"/>
<key code="22" output="&#x0026;"/>
<key code="23" output="%"/>
<key code="24" output="^"/>
<key code="25" output=")"/>
<key code="26" output="/"/>
<key code="27" output="?"/>
<key code="28" output="("/>
<key code="29" output="="/>
<key code="30" output="*"/>
<key code="31" action="A_5"/>
<key code="32" action="A_6"/>
<key code="33" output="é"/>
<key code="34" action="A_3"/>
<key code="35" output="P"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="L"/>
<key code="38" output="J"/>
<key code="39" output="°"/>
<key code="40" output="K"/>
<key code="41" output="ç"/>
<key code="42" output="§"/>
<key code="43" output=";"/>
<key code="44" output="_"/>
<key code="45" action="A_4"/>
<key code="46" output="M"/>
<key code="47" output=":"/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="3">
<key code="0" output="U+1F600"/>
<key code="1" output="&#x1F601;"/>
<key code="2" output="&#x1234;"/>
<key code="3" output="ሴ"/>
<key code="4" output="😎"/>
<key code="5" output="&#x0007;"/>
<key code="6" output="&#x0017;"/>
<key code="7" output="&#x0018;"/>
<key code="8" output="&#x0003;"/>
<key code="9" output="&#x0016;"/>
<key code="10" output="&#x001C;"/>
<key code="11" output="&#x0002;"/>
<key code="12" output="&#x0011;"/>
<key code="13" output="&#x001A;"/>
<key code="14" output="&#x0005;"/>
<key code="15" output="&#x0012;"/>
<key code="16" output="&#x0019;"/>
<key code="17" output="&#x0014;"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="="/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x001F;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="&#x001D;"/>
<key code="31" output="&#x000F;"/>
<key code="32" output="&#x0015;"/>
<key code="33" output="&#x001E;"/>
<key code="34" output="&#x0009;"/>
<key code="35" output="&#x0010;"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="&#x000C;"/>
<key code="38" output="&#x000A;"/>
<key code="39" output="%"/>
<key code="40" output="&#x000B;"/>
<key code="41" output="&#x000D;"/>
<key code="42" output="°"/>
<key code="43" output="."/>
<key code="44" output="!"/>
<key code="45" output="&#x000E;"/>
<key code="46" output="?"/>
<key code="47" output="/"/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="4">
<key code="0" output="Å"/>
<key code="1" output="¯"/>
<key code="2" output="˘"/>
<key code="3" output="˙"/>
<key code="4" output="¸"/>
<key code="5" output="˚"/>
<key code="6" action="A_0"/>
<key code="7" output="‡"/>
<key code="8" output="Á"/>
<key code="9" output="É"/>
<key code="10" output="ı"/>
<key code="11" output="Í"/>
<key code="12" output="‚"/>
<key code="13" output="À"/>
<key code="14" output="È"/>
<key code="15" output="Ì"/>
<key code="16" output="Æ"/>
<key code="17" output="Ò"/>
<key code="18" output="»"/>
<key code="19" output="”"/>
<key code="20" output="’"/>
<key code="21" output="¢"/>
<key code="22" output="›"/>
<key code="23" output="‰"/>
<key code="24" output="±"/>
<key code="25" action="A_0"/>
<key code="26" output="⁄"/>
<key code="27" output="¿"/>
<key code="28" output=""/>
<key code="29" output="≈"/>
<key code="30" output="}"/>
<key code="31" output="Ø"/>
<key code="32" output="Ù"/>
<key code="33" output="{"/>
<key code="34" output="Œ"/>
<key code="35" output="∏"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="ˇ"/>
<key code="38" output="˝"/>
<key code="39" output="∞"/>
<key code="40" output="˛"/>
<key code="41" output="Ç"/>
<key code="42" output="◊"/>
<key code="43" action="A_0"/>
<key code="44" output="—"/>
<key code="45" output="Ó"/>
<key code="46" output="Ú"/>
<key code="47" output="·"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="5">
<key code="0" output="å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="∆"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" action="A_18"/>
<key code="25" action="A_8"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" action="A_17"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="ø"/>
<key code="32" action="A_16"/>
<key code="33" output="["/>
<key code="34" output="œ"/>
<key code="35" output="π"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" action="A_19"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="6">
<key code="0" output="å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="ẞ"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" output="ˆ"/>
<key code="25" output="`"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" output="´"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="ø"/>
<key code="32" output="¨"/>
<key code="33" output="["/>
<key code="34" output="œ"/>
<key code="35" output="π"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" output="˜"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="7">
<key code="0" output="Å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="€"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="Æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" output="ˆ"/>
<key code="25" output="`"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" output="´"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="Ø"/>
<key code="32" output="¨"/>
<key code="33" output="["/>
<key code="34" output="Œ"/>
<key code="35" output="∏"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" output="˜"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A_0">
<when state="none" output=" "/>
<when state="1" output="ˆ"/>
<when state="2" output="`"/>
<when state="3" output="´"/>
<when state="4" output="¨"/>
<when state="5" output="˜"/>
</action>
<action id="A_1">
<when state="none" output="A"/>
<when state="1" output="Â"/>
<when state="2" output="À"/>
<when state="3" output="Á"/>
<when state="4" output="Ä"/>
<when state="5" output="Ã"/>
</action>
<action id="A_10">
<when state="none" output="e"/>
<when state="1" output="ê"/>
<when state="2" output="è"/>
<when state="3" output="é"/>
<when state="4" output="ë"/>
</action>
<action id="A_11">
<when state="none" output="i"/>
<when state="1" output="î"/>
<when state="2" output="ì"/>
<when state="3" output="í"/>
<when state="4" output="ï"/>
</action>
<action id="A_12">
<when state="none" output="n"/>
<when state="5" output="ñ"/>
</action>
<action id="A_13">
<when state="none" output="o"/>
<when state="1" output="ô"/>
<when state="2" output="ò"/>
<when state="3" output="ó"/>
<when state="4" output="ö"/>
<when state="5" output="õ"/>
</action>
<action id="A_14">
<when state="none" output="u"/>
<when state="1" output="û"/>
<when state="2" output="ù"/>
<when state="3" output="ú"/>
<when state="4" output="ü"/>
</action>
<action id="A_15">
<when state="none" output="y"/>
<when state="4" output="ÿ"/>
</action>
<action id="A_16">
<when state="none" next="4"/>
<when state="3" next="1"/>
</action>
<action id="A_17">
<when state="none" next="3"/>
</action>
<action id="A_18">
<when state="none" next="1"/>
</action>
<action id="A_19">
<when state="none" next="5"/>
</action>
<action id="A_2">
<when state="none" output="E"/>
<when state="1" output="Ê"/>
<when state="2" output="È"/>
<when state="3" output="É"/>
<when state="4" output="Ë"/>
</action>
<action id="A_3">
<when state="none" output="I"/>
<when state="1" output="Î"/>
<when state="2" output="Ì"/>
<when state="3" output="Í"/>
<when state="4" output="Ï"/>
</action>
<action id="A_4">
<when state="none" output="N"/>
<when state="5" output="Ñ"/>
</action>
<action id="A_5">
<when state="none" output="O"/>
<when state="1" output="Ô"/>
<when state="2" output="Ò"/>
<when state="3" output="Ó"/>
<when state="4" output="Ö"/>
<when state="5" output="Õ"/>
</action>
<action id="A_6">
<when state="none" output="U"/>
<when state="1" output="Û"/>
<when state="2" output="Ù"/>
<when state="3" output="Ú"/>
<when state="4" output="Ü"/>
</action>
<action id="A_7">
<when state="none" output="Y"/>
<when state="4" output="Ÿ"/>
</action>
<action id="A_8">
<when state="none" next="2"/>
</action>
<action id="A_9">
<when state="none" output="A"/>
<when state="1" output="â"/>
<when state="2" output="à"/>
<when state="3" output="á"/>
<when state="4" output="ä"/>
<when state="5" output="ã"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
<when state="2" output="`"/>
<when state="3" output="´"/>
<when state="4" output="¨"/>
<when state="5" output="˜"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,596 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated April 15 2025
Generated by S. Schmitt
a test with lots of shiftstates, behaviours and C0, C1, C2 C3 rules
-->
<keyboard group="126" id="-1272" name="Test" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
<modifier keys="shift? caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="shift? leftShift caps? "/>
<modifier keys="anyShift caps?"/>
<modifier keys="shift leftShift caps "/>
<modifier keys="shift? rightShift caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="anyShift? anyOption caps? anyControl"/>
<modifier keys="anyShift? anyOption? caps? anyControl"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="anyShift caps? anyOption ?"/>
</keyMapSelect>
<keyMapSelect mapIndex="5">
<modifier keys="anyOption"/>
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="6">
<modifier keys="anyOption "/>
</keyMapSelect>
<keyMapSelect mapIndex="7">
<modifier keys="caps anyOption ?"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="A_9"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="5" output="g"/>
<key code="6" output="z"/>
<key code="7" output="x"/>
<key code="8" output="c"/>
<key code="9" output="v"/>
<key code="10" output="\"/>
<key code="11" output="b"/>
<key code="12" output="q"/>
<key code="13" output="w"/>
<key code="14" action="A_10"/>
<key code="15" output="r"/>
<key code="16" action="A_15"/>
<key code="17" output="t"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" action="A_18"/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x0027;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="+"/>
<key code="31" action="A_13"/>
<key code="32" action="A_14"/>
<key code="33" output="è"/>
<key code="34" action="A_11"/>
<key code="35" output="p"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="l"/>
<key code="38" output="j"/>
<key code="39" output="à"/>
<key code="40" output="k"/>
<key code="41" output="ò"/>
<key code="42" output="ù"/>
<key code="43" output=","/>
<key code="44" output="-"/>
<key code="45" action="A_12"/>
<key code="46" output="m"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="1">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="@"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="\"/>
<key code="11" output="B"/>
<key code="12" output="Q"/>
<key code="13" output="W"/>
<key code="14" action="A_2"/>
<key code="15" output="R"/>
<key code="16" action="A_7"/>
<key code="17" output="T"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="ì"/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x0027;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="+"/>
<key code="31" action="A_5"/>
<key code="32" action="A_6"/>
<key code="33" output="è"/>
<key code="34" action="A_3"/>
<key code="35" output="P"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="L"/>
<key code="38" output="J"/>
<key code="39" output="à"/>
<key code="40" output="K"/>
<key code="41" output="ò"/>
<key code="42" output="ù"/>
<key code="43" output=","/>
<key code="44" output="-"/>
<key code="45" action="A_4"/>
<key code="46" output="M"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="2">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="H"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="|"/>
<key code="11" output="B"/>
<key code="12" output="Q"/>
<key code="13" output="W"/>
<key code="14" action="A_2"/>
<key code="15" output="R"/>
<key code="16" action="A_7"/>
<key code="17" output="T"/>
<key code="18" output="!"/>
<key code="19" output="&#x0022;"/>
<key code="20" output="£"/>
<key code="21" output="$"/>
<key code="22" output="&#x0026;"/>
<key code="23" output="%"/>
<key code="24" output="^"/>
<key code="25" output=")"/>
<key code="26" output="/"/>
<key code="27" output="?"/>
<key code="28" output="("/>
<key code="29" output="="/>
<key code="30" output="*"/>
<key code="31" action="A_5"/>
<key code="32" action="A_6"/>
<key code="33" output="é"/>
<key code="34" action="A_3"/>
<key code="35" output="P"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="L"/>
<key code="38" output="J"/>
<key code="39" output="°"/>
<key code="40" output="K"/>
<key code="41" output="ç"/>
<key code="42" output="§"/>
<key code="43" output=";"/>
<key code="44" output="_"/>
<key code="45" action="A_4"/>
<key code="46" output="M"/>
<key code="47" output=":"/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="3">
<key code="0" output="U+1F600"/>
<key code="1" output="&#x1F601;"/>
<key code="2" output="&#x1234;"/>
<key code="3" output="ሴ"/>
<key code="4" output="😎"/>
<key code="5" output="&#x0007;"/>
<key code="6" output="&#x0017;"/>
<key code="7" output="&#x0018;"/>
<key code="8" output="&#x0003;"/>
<key code="9" output="&#x0016;"/>
<key code="10" output="&#x001C;"/>
<key code="11" output="&#x0002;"/>
<key code="12" output="&#x0011;"/>
<key code="13" output="&#x001A;"/>
<key code="14" output="&#x0005;"/>
<key code="15" output="&#x0012;"/>
<key code="16" output="&#x0019;"/>
<key code="17" output="&#x0014;"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="="/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x001F;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="&#x001D;"/>
<key code="31" output="&#x000F;"/>
<key code="32" output="&#x0015;"/>
<key code="33" output="&#x001E;"/>
<key code="34" output="&#x0009;"/>
<key code="35" output="&#x0010;"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="&#x000C;"/>
<key code="38" output="&#x000A;"/>
<key code="39" output="%"/>
<key code="40" output="&#x000B;"/>
<key code="41" output="&#x000D;"/>
<key code="42" output="°"/>
<key code="43" output="."/>
<key code="44" output="!"/>
<key code="45" output="&#x000E;"/>
<key code="46" output="?"/>
<key code="47" output="/"/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="4">
<key code="0" output="Å"/>
<key code="1" output="¯"/>
<key code="2" output="˘"/>
<key code="3" output="˙"/>
<key code="4" output="¸"/>
<key code="5" output="˚"/>
<key code="6" action="A_0"/>
<key code="7" output="‡"/>
<key code="8" output="Á"/>
<key code="9" output="É"/>
<key code="10" output="ı"/>
<key code="11" output="Í"/>
<key code="12" output="‚"/>
<key code="13" output="À"/>
<key code="14" output="È"/>
<key code="15" output="Ì"/>
<key code="16" output="Æ"/>
<key code="17" output="Ò"/>
<key code="18" output="»"/>
<key code="19" output="”"/>
<key code="20" output="’"/>
<key code="21" output="¢"/>
<key code="22" output="›"/>
<key code="23" output="‰"/>
<key code="24" output="±"/>
<key code="25" action="A_0"/>
<key code="26" output="⁄"/>
<key code="27" output="¿"/>
<key code="28" output=""/>
<key code="29" output="≈"/>
<key code="30" output="}"/>
<key code="31" output="Ø"/>
<key code="32" output="Ù"/>
<key code="33" output="{"/>
<key code="34" output="Œ"/>
<key code="35" output="∏"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="ˇ"/>
<key code="38" output="˝"/>
<key code="39" output="∞"/>
<key code="40" output="˛"/>
<key code="41" output="Ç"/>
<key code="42" output="◊"/>
<key code="43" action="A_0"/>
<key code="44" output="—"/>
<key code="45" output="Ó"/>
<key code="46" output="Ú"/>
<key code="47" output="·"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="5">
<key code="0" output="å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="∆"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" action="A_18"/>
<key code="25" action="A_8"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" action="A_17"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="ø"/>
<key code="32" action="A_16"/>
<key code="33" output="["/>
<key code="34" output="œ"/>
<key code="35" output="π"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" action="A_19"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="6">
<key code="0" output="å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="ẞ"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" output="ˆ"/>
<key code="25" output="`"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" output="´"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="ø"/>
<key code="32" output="¨"/>
<key code="33" output="["/>
<key code="34" output="œ"/>
<key code="35" output="π"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" output="˜"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="7">
<key code="0" output="Å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="€"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="Æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" output="ˆ"/>
<key code="25" output="`"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" output="´"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="Ø"/>
<key code="32" output="¨"/>
<key code="33" output="["/>
<key code="34" output="Œ"/>
<key code="35" output="∏"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" output="˜"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A_0">
<when state="none" output=" "/>
<when state="1" output="ˆ"/>
<when state="2" output="`"/>
<when state="3" output="´"/>
<when state="4" output="¨"/>
<when state="5" output="˜"/>
</action>
<action id="A_1">
<when state="none" output="A"/>
<when state="1" output="Â"/>
<when state="2" output="À"/>
<when state="3" output="Á"/>
<when state="4" output="Ä"/>
<when state="5" output="Ã"/>
</action>
<action id="A_10">
<when state="none" output="e"/>
<when state="1" output="ê"/>
<when state="2" output="è"/>
<when state="3" output="é"/>
<when state="4" output="ë"/>
</action>
<action id="A_11">
<when state="none" output="i"/>
<when state="1" output="î"/>
<when state="2" output="ì"/>
<when state="3" output="í"/>
<when state="4" output="ï"/>
</action>
<action id="A_12">
<when state="none" output="n"/>
<when state="5" output="ñ"/>
</action>
<action id="A_13">
<when state="none" output="o"/>
<when state="1" output="ô"/>
<when state="2" output="ò"/>
<when state="3" output="ó"/>
<when state="4" output="ö"/>
<when state="5" output="õ"/>
</action>
<action id="A_14">
<when state="none" output="u"/>
<when state="1" output="û"/>
<when state="2" output="ù"/>
<when state="3" output="ú"/>
<when state="4" output="ü"/>
</action>
<action id="A_15">
<when state="none" output="y"/>
<when state="4" output="ÿ"/>
</action>
<action id="A_16">
<when state="none" next="4"/>
<when state="3" next="1"/>
</action>
<action id="A_17">
<when state="none" next="3"/>
</action>
<action id="A_18">
<when state="none" next="1"/>
</action>
<action id="A_19">
<when state="none" next="5"/>
</action>
<action id="A_2">
<when state="none" output="E"/>
<when state="1" output="Ê"/>
<when state="2" output="È"/>
<when state="3" output="É"/>
<when state="4" output="Ë"/>
</action>
<action id="A_3">
<when state="none" output="I"/>
<when state="1" output="Î"/>
<when state="2" output="Ì"/>
<when state="3" output="Í"/>
<when state="4" output="Ï"/>
</action>
<action id="A_4">
<when state="none" output="N"/>
<when state="5" output="Ñ"/>
</action>
<action id="A_5">
<when state="none" output="O"/>
<when state="1" output="Ô"/>
<when state="2" output="Ò"/>
<when state="3" output="Ó"/>
<when state="4" output="Ö"/>
<when state="5" output="Õ"/>
</action>
<action id="A_6">
<when state="none" output="U"/>
<when state="1" output="Û"/>
<when state="2" output="Ù"/>
<when state="3" output="Ú"/>
<when state="4" output="Ü"/>
</action>
<action id="A_7">
<when state="none" output="Y"/>
<when state="4" output="Ÿ"/>
</action>
<action id="A_8">
<when state="none" next="2"/>
</action>
<action id="A_9">
<when state="none" output="A"/>
<when state="1" output="â"/>
<when state="2" output="à"/>
<when state="3" output="á"/>
<when state="4" output="ä"/>
<when state="5" output="ã"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
<when state="2" output="`"/>
<when state="3" output="´"/>
<when state="4" output="¨"/>
<when state="5" output="˜"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,596 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated April 15 2025
Generated by S. Schmitt
a test with lots of shiftstates, behaviours and C0, C1, C2 C3 rules
-->
<keyboard group="126" id="-1272" name="Test" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
<modifier keys="shift? caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="shift? leftShift caps? "/>
<modifier keys="anyShift caps?"/>
<modifier keys="shift leftShift caps "/>
<modifier keys="shift? rightShift caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="anyShift? anyOption caps? anyControl"/>
<modifier keys="anyShift? anyOption? caps? anyControl"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="anyShift caps? anyOption ?"/>
</keyMapSelect>
<keyMapSelect mapIndex="5">
<modifier keys="anyOption"/>
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="6">
<modifier keys="anyOption "/>
</keyMapSelect>
<keyMapSelect mapIndex="7">
<modifier keys="caps anyOption ?"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="A_9"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="5" output="g"/>
<key code="6" output="z"/>
<key code="7" output="x"/>
<key code="8" output="c"/>
<key code="9" output="v"/>
<key code="10" output="\"/>
<key code="11" output="b"/>
<key code="12" output="q"/>
<key code="13" output="w"/>
<key code="14" action="A_10"/>
<key code="15" output="r"/>
<key code="16" action="A_15"/>
<key code="17" output="t"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" action="A_18"/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x0027;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="+"/>
<key code="31" action="A_13"/>
<key code="32" action="A_14"/>
<key code="33" output="è"/>
<key code="34" action="A_11"/>
<key code="35" output="p"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="l"/>
<key code="38" output="j"/>
<key code="39" output="à"/>
<key code="40" output="k"/>
<key code="41" output="ò"/>
<key code="42" output="ù"/>
<key code="43" output=","/>
<key code="44" output="-"/>
<key code="45" action="A_12"/>
<key code="46" output="m"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="1">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="@"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="\"/>
<key code="11" output="B"/>
<key code="12" output="Q"/>
<key code="13" output="W"/>
<key code="14" action="A_2"/>
<key code="15" output="R"/>
<key code="16" action="A_7"/>
<key code="17" output="T"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="ì"/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x0027;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="+"/>
<key code="31" action="A_5"/>
<key code="32" action="A_6"/>
<key code="33" output="è"/>
<key code="34" action="A_3"/>
<key code="35" output="P"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="L"/>
<key code="38" output="J"/>
<key code="39" output="à"/>
<key code="40" output="K"/>
<key code="41" output="ò"/>
<key code="42" output="ù"/>
<key code="43" output=","/>
<key code="44" output="-"/>
<key code="45" action="A_4"/>
<key code="46" output="M"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="2">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="H"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="|"/>
<key code="11" output="B"/>
<key code="12" output="Q"/>
<key code="13" output="W"/>
<key code="14" action="A_2"/>
<key code="15" output="R"/>
<key code="16" action="A_7"/>
<key code="17" output="T"/>
<key code="18" output="!"/>
<key code="19" output="&#x0022;"/>
<key code="20" output="£"/>
<key code="21" output="$"/>
<key code="22" output="&#x0026;"/>
<key code="23" output="%"/>
<key code="24" output="^"/>
<key code="25" output=")"/>
<key code="26" output="/"/>
<key code="27" output="?"/>
<key code="28" output="("/>
<key code="29" output="="/>
<key code="30" output="*"/>
<key code="31" action="A_5"/>
<key code="32" action="A_6"/>
<key code="33" output="é"/>
<key code="34" action="A_3"/>
<key code="35" output="P"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="L"/>
<key code="38" output="J"/>
<key code="39" output="°"/>
<key code="40" output="K"/>
<key code="41" output="ç"/>
<key code="42" output="§"/>
<key code="43" output=";"/>
<key code="44" output="_"/>
<key code="45" action="A_4"/>
<key code="46" output="M"/>
<key code="47" output=":"/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="3">
<key code="0" output="U+1F600"/>
<key code="1" output="&#x1F601;"/>
<key code="2" output="&#x1234;"/>
<key code="3" output="ሴ"/>
<key code="4" output="😎"/>
<key code="5" output="&#x0007;"/>
<key code="6" output="&#x0017;"/>
<key code="7" output="&#x0018;"/>
<key code="8" output="&#x0003;"/>
<key code="9" output="&#x0016;"/>
<key code="10" output="&#x001C;"/>
<key code="11" output="&#x0002;"/>
<key code="12" output="&#x0011;"/>
<key code="13" output="&#x001A;"/>
<key code="14" output="&#x0005;"/>
<key code="15" output="&#x0012;"/>
<key code="16" output="&#x0019;"/>
<key code="17" output="&#x0014;"/>
<key code="18" output="1"/>
<key code="19" output="2"/>
<key code="20" output="3"/>
<key code="21" output="4"/>
<key code="22" output="6"/>
<key code="23" output="5"/>
<key code="24" output="="/>
<key code="25" output="9"/>
<key code="26" output="7"/>
<key code="27" output="&#x001F;"/>
<key code="28" output="8"/>
<key code="29" output="0"/>
<key code="30" output="&#x001D;"/>
<key code="31" output="&#x000F;"/>
<key code="32" output="&#x0015;"/>
<key code="33" output="&#x001E;"/>
<key code="34" output="&#x0009;"/>
<key code="35" output="&#x0010;"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="&#x000C;"/>
<key code="38" output="&#x000A;"/>
<key code="39" output="%"/>
<key code="40" output="&#x000B;"/>
<key code="41" output="&#x000D;"/>
<key code="42" output="°"/>
<key code="43" output="."/>
<key code="44" output="!"/>
<key code="45" output="&#x000E;"/>
<key code="46" output="?"/>
<key code="47" output="/"/>
<key code="48" output="&#x0009;"/>
<key code="49" action="A_0"/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="4">
<key code="0" output="Å"/>
<key code="1" output="¯"/>
<key code="2" output="˘"/>
<key code="3" output="˙"/>
<key code="4" output="¸"/>
<key code="5" output="˚"/>
<key code="6" action="A_0"/>
<key code="7" output="‡"/>
<key code="8" output="Á"/>
<key code="9" output="É"/>
<key code="10" output="ı"/>
<key code="11" output="Í"/>
<key code="12" output="‚"/>
<key code="13" output="À"/>
<key code="14" output="È"/>
<key code="15" output="Ì"/>
<key code="16" output="Æ"/>
<key code="17" output="Ò"/>
<key code="18" output="»"/>
<key code="19" output="”"/>
<key code="20" output="’"/>
<key code="21" output="¢"/>
<key code="22" output="›"/>
<key code="23" output="‰"/>
<key code="24" output="±"/>
<key code="25" action="A_0"/>
<key code="26" output="⁄"/>
<key code="27" output="¿"/>
<key code="28" output=""/>
<key code="29" output="≈"/>
<key code="30" output="}"/>
<key code="31" output="Ø"/>
<key code="32" output="Ù"/>
<key code="33" output="{"/>
<key code="34" output="Œ"/>
<key code="35" output="∏"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="ˇ"/>
<key code="38" output="˝"/>
<key code="39" output="∞"/>
<key code="40" output="˛"/>
<key code="41" output="Ç"/>
<key code="42" output="◊"/>
<key code="43" action="A_0"/>
<key code="44" output="—"/>
<key code="45" output="Ó"/>
<key code="46" output="Ú"/>
<key code="47" output="·"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="5">
<key code="0" output="å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="∆"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" action="A_18"/>
<key code="25" action="A_8"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" action="A_17"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="ø"/>
<key code="32" action="A_16"/>
<key code="33" output="["/>
<key code="34" output="œ"/>
<key code="35" output="π"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" action="A_19"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="6">
<key code="0" output="å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="ẞ"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" output="ˆ"/>
<key code="25" output="`"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" output="´"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="ø"/>
<key code="32" output="¨"/>
<key code="33" output="["/>
<key code="34" output="œ"/>
<key code="35" output="π"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" output="˜"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
<keyMap index="7">
<key code="0" output="Å"/>
<key code="1" output="ß"/>
<key code="2" output="∂"/>
<key code="3" output="ƒ"/>
<key code="4" output="€"/>
<key code="5" output="∞"/>
<key code="6" output="∑"/>
<key code="7" output="†"/>
<key code="8" output="©"/>
<key code="9" output="√"/>
<key code="10" output="`"/>
<key code="11" output="∫"/>
<key code="12" output="„"/>
<key code="13" output="Ω"/>
<key code="14" output="€"/>
<key code="15" output="®"/>
<key code="16" output="Æ"/>
<key code="17" output="™"/>
<key code="18" output="«"/>
<key code="19" output="“"/>
<key code="20" output="‘"/>
<key code="21" output="¥"/>
<key code="22" output="‹"/>
<key code="23" output="~"/>
<key code="24" output="ˆ"/>
<key code="25" output="`"/>
<key code="26" output="÷"/>
<key code="27" output="¡"/>
<key code="28" output="´"/>
<key code="29" output="≠"/>
<key code="30" output="]"/>
<key code="31" output="Ø"/>
<key code="32" output="¨"/>
<key code="33" output="["/>
<key code="34" output="Œ"/>
<key code="35" output="∏"/>
<key code="36" output="&#x000D;"/>
<key code="37" output="¬"/>
<key code="38" output="ª"/>
<key code="39" output="#"/>
<key code="40" output="º"/>
<key code="41" output="@"/>
<key code="42" output="¶"/>
<key code="43" output="…"/>
<key code="44" output="–"/>
<key code="45" output="˜"/>
<key code="46" output="µ"/>
<key code="47" output="•"/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="50" output="-"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A_0">
<when state="none" output=" "/>
<when state="1" output="ˆ"/>
<when state="2" output="`"/>
<when state="3" output="´"/>
<when state="4" output="¨"/>
<when state="5" output="˜"/>
</action>
<action id="A_1">
<when state="none" output="A"/>
<when state="1" output="Â"/>
<when state="2" output="À"/>
<when state="3" output="Á"/>
<when state="4" output="Ä"/>
<when state="5" output="Ã"/>
</action>
<action id="A_10">
<when state="none" output="e"/>
<when state="1" output="ê"/>
<when state="2" output="è"/>
<when state="3" output="é"/>
<when state="4" output="ë"/>
</action>
<action id="A_11">
<when state="none" output="i"/>
<when state="1" output="î"/>
<when state="2" output="ì"/>
<when state="3" output="í"/>
<when state="4" output="ï"/>
</action>
<action id="A_12">
<when state="none" output="n"/>
<when state="5" output="ñ"/>
</action>
<action id="A_13">
<when state="none" output="o"/>
<when state="1" output="ô"/>
<when state="2" output="ò"/>
<when state="3" output="ó"/>
<when state="4" output="ö"/>
<when state="5" output="õ"/>
</action>
<action id="A_14">
<when state="none" output="u"/>
<when state="1" output="û"/>
<when state="2" output="ù"/>
<when state="3" output="ú"/>
<when state="4" output="ü"/>
</action>
<action id="A_15">
<when state="none" output="y"/>
<when state="4" output="ÿ"/>
</action>
<action id="A_16">
<when state="none" next="4"/>
<when state="3" next="1"/>
</action>
<action id="A_17">
<when state="none" next="3"/>
</action>
<action id="A_18">
<when state="none" next="1"/>
</action>
<action id="A_19">
<when state="none" next="5"/>
</action>
<action id="A_2">
<when state="none" output="E"/>
<when state="1" output="Ê"/>
<when state="2" output="È"/>
<when state="3" output="É"/>
<when state="4" output="Ë"/>
</action>
<action id="A_3">
<when state="none" output="I"/>
<when state="1" output="Î"/>
<when state="2" output="Ì"/>
<when state="3" output="Í"/>
<when state="4" output="Ï"/>
</action>
<action id="A_4">
<when state="none" output="N"/>
<when state="5" output="Ñ"/>
</action>
<action id="A_5">
<when state="none" output="O"/>
<when state="1" output="Ô"/>
<when state="2" output="Ò"/>
<when state="3" output="Ó"/>
<when state="4" output="Ö"/>
<when state="5" output="Õ"/>
</action>
<action id="A_6">
<when state="none" output="U"/>
<when state="1" output="Û"/>
<when state="2" output="Ù"/>
<when state="3" output="Ú"/>
<when state="4" output="Ü"/>
</action>
<action id="A_7">
<when state="none" output="Y"/>
<when state="4" output="Ÿ"/>
</action>
<action id="A_8">
<when state="none" next="2"/>
</action>
<action id="A_9">
<when state="none" output="A"/>
<when state="1" output="â"/>
<when state="2" output="à"/>
<when state="3" output="á"/>
<when state="4" output="ä"/>
<when state="5" output="ã"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
<when state="2" output="`"/>
<when state="3" output="´"/>
<when state="4" output="¨"/>
<when state="5" output="˜"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests several C0 rules
-->
<keyboard group="126" id="-1272" name="Test_C0" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
</keyMap>
<keyMap index="1">
<key code="0" output="A"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output="S"/>
</action>
<action id="a1">
<when state="none" output="s"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests C0, C1, C2, C3 rules
-->
<keyboard group="126" id="-1272" name="Test_C0_C1_C2_C3" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="anyOption"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="A"/> <!-- C0-> keyman rule part 1 -->
<key code="1" action="a1"/> <!-- C1-> keyman rule part 1 -->
<key code="2" action="a0"/> <!-- C2-> keyman rule part 6 -->
<key code="32" action="a4"/> <!-- C1-> keyman rule part 1 -->
</keyMap>
<keyMap index="1">
<key code="24" action="a3"/> <!-- C2-> keyman rule part 3 -->
<key code="28" action="a2"/> <!-- C2-> keyman rule part 3 -->
<key code="32" action="a1"/> <!-- C1-> keyman rule part 1 --> <!-- C3-> keyman rule part 6 -->
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="1" output="Â"/> <!-- C3-> keyman rule part 6 -->
</action>
<action id="a1">
<when state="none" output="S"/> <!-- C1-> keyman rule part 1-->
<when state="3" next="1"/> <!-- C3-> keyman rule part 5 -->
</action>
<action id="a2">
<when state="none" next="3"/> <!-- C3-> keyman rule part 4 -->
</action>
<action id="a3">
<when state="none" next="1"/> <!-- C2-> keyman rule part 3 -->
</action>
<action id="a4">
<when state="none" output="U"/> <!-- C1-> keyman rule part 1 -->
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests several C1 rules
-->
<keyboard group="126" id="-1272" name="Test_C1" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="1" action="a1"/>
</keyMap>
<keyMap index="1">
<key code="1" action="a0"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output="S"/>
</action>
<action id="a1">
<when state="none" output="s"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests C2 rule
-->
<keyboard group="126" id="-1272" name="Test_C2" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="32" action="a1"/>
</keyMap>
<keyMap index="1">
<key code="0" action="a2"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a1">
<when state="none" next="1"/>
</action>
<action id="a2">
<when state="1" output="Â"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated April 15 2025
Generated by S. Schmitt
tests several C2 rules
-->
<keyboard group="126" id="-1272" name="Test_C2_several" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="shift? leftShift caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="anyShift? anyOption caps? anyControl"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="anyOption"/>
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="a3"/>
<key code="24" action="a2"/>
<key code="49" action="a0"/>
</keyMap>
<keyMap index="1">
<key code="0" action="a1"/>
<key code="24" output="ì"/>
<key code="49" action="a0"/>
</keyMap>
<keyMap index="2">
<key code="0" action="a1"/>
<key code="49" action="a0"/>
</keyMap>
<keyMap index="3">
<key code="49" action="a0"/>
</keyMap>
<keyMap index="4">
<key code="24" action="a2"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="1" output="ˆ"/>
</action>
<action id="a1">
<when state="1" output="Â"/>
</action>
<action id="a2">
<when state="none" next="1"/>
</action>
<action id="a3">
<when state="1" output="â"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,53 @@
<?xml version="1.1" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests C3 rules
-->
<keyboard group="126" id="-1272" name="Test_C3" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="shift"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="a2"/>
</keyMap>
<keyMap index="1">
<key code="32" action="a1"/>
</keyMap>
<keyMap index="2">
<key code="2" action="a0"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" next="3"/>
</action>
<action id="a1">
<when state="3" next="1"/>
</action>
<action id="a2">
<when state="1" output="Â"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,59 @@
<?xml version="1.1" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests C3 rules
-->
<keyboard group="126" id="-1272" name="Test_C3" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="anyOption"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="A6"/>
</keyMap>
<keyMap index="2">
<key code="0" action="A7"/>
<key code="32" action="A5"/>
</keyMap>
<keyMap index="3">
<key code="28" action="A4"/>
<key code="32" action="A3"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A3">
<when state="3" next="1"/>
</action>
<action id="A4">
<when state="none" next="3"/>
</action>
<action id="A5">
<when state="3" next="1"/>
</action>
<action id="A6">
<when state="1" output="â"/>
</action>
<action id="A7">
<when state="1" output="â"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,76 @@
<?xml version="1.1" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
<!--
Data generated Tue Apr 9 09:35:00 2024
In rare cases a rule might not be written out therefore we need to inform the user:
usually we write the first occurance of an ambiguous C0/C1 rule and comment out the later
assuming that if several C0/C1 rules are ambiguous the user prefers to use the first C0/C1 rule
for C2/C3 rules we write the last occurance of an ambiguous rule and comment out the earlier
assuming that if a C0/C1 and a C2/C3 rule is ambiguous the user prefers to use the C2/C3 rule over the C0/C1 rule
if both happens, nothing would be written, therefore this messsage
-->
<!--Last edited by Ukelele version 396 on 2024-10-16 at 11:19 (CEST)-->
<keyboard group="126" id="-15248" name="Test_ExtraWarning" maxout="2">
<layouts>
<layout first="0" last="0" mapSet="2a4" modifiers="19c"/>
</layouts>
<modifierMap id="19c" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
<modifier keys="rightShift rightControl"/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="shift rightOption "/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="anyOption"/>
<modifier keys="rightShift option"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="shift option"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="2a4">
<keyMap index="0">
<key code="4" action="a2"/>
</keyMap>
<keyMap index="1">
<key code="4" action="a1"/>
</keyMap>
<keyMap index="2">
<key code="4" output="H"/>
</keyMap>
<keyMap index="3">
<key code="4" action="a3"/>
</keyMap>
<keyMap index="4">
<key code="4" action="a0"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output="̱"/>
</action>
<action id="a1">
<when state="none" output="H"/>
<when state="16" output="H̱"/>
</action>
<action id="a2">
<when state="12" output="ḧ"/>
</action>
<action id="a3">
<when state="none" next="16"/>
</action>
</actions>
<terminators>
<when state="1" output="`"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests if duplicate definitions return a warning
-->
<keyboard group="126" id="-1272" name="Test_ambiguous_keys" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys=""/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<!-- good definition -->
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
</keyMap>
<!-- ambibuous keys in 1 behaviour -->
<keyMap index="1">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="1" output="X"/>
<key code="3" output="Y"/>
</keyMap>
<!-- ambibuous keys in keyMap index="0" vs keyMap index="2" -->
<keyMap index="2">
<key code="0" output="1"/>
<key code="1" output="2"/>
<key code="2" output="3"/>
<key code="3" output="4"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output=" "/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
test different kinds of characters
-->
<keyboard group="126" id="-1272" name="Test_characters" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<!-- empty output will not be written into kmn-->
<key code="1" output=""/>
<key code="2" output="ä"/>
<key code="3" output="@"/>
<key code="4" output="ሴ"/>
<key code="5" output="😎"/>
</keyMap>
<keyMap index="1">
<key code="0" output=" "/>
<key code="1" output="&#x1234;"/>
<key code="2" output="&#2345;"/>
<key code="3" output="U+1F600"/>
<key code="4" output="U+0002"/>
<key code="5" output="&#x0004;"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A_0">
<when state="none" output=" "/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
if keymaps have different amount of keys derfined -> should print all ( here 2+4 rules)
-->
<keyboard group="126" id="-1272" name="Test_nr_elements" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
</keyMap>
<keyMap index="1">
<key code="0" output="A"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A_0">
<when state="none" output=" "/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests C0, C1, C2, C3 rules
-->
<keyboard group="126" id="-1272" name="Test_differentEncodings" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="&#x1F601;"/>
<key code="1" output="U+1F603"/>
<key code="2" output="&#128514;"/>
<key code="3" output="😀"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="1" output="Â"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
duplicate rules will not be printed out into the kmn file
-->
<keyboard group="126" id="-1272" name="Test_duplicate_keys" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys=""/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<!-- good definition -->
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
</keyMap>
<!-- duplicate keys in 1 behaviour -->
<keyMap index="1">
<key code="0" output="A"/>
<key code="1" output="S"/>
<key code="1" output="S"/>
<key code="1" output="S"/>
<key code="1" output="S"/>
<key code="1" output="S"/>
</keyMap>
<!-- some duplicate keys in index="0" vs index="2" =>they will not be printed -->
<keyMap index="2">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="g"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output=" "/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests different order of keys in keymap
tests missing keys in keymap
tests duplicate keys in keymap
-->
<keyboard group="126" id="-1272" name="Test_duplicate_missing_keycode" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="4" output="ሴ"/>
<key code="0" output="a"/>
<key code="3" output="@"/>
<key code="6" output="😎"/>
</keyMap>
<keyMap index="1">
<key code="2" output="&#2345;"/>
<key code="0" output=" "/>
<key code="2" output="&#2345;"/>
<key code="1" output="&#x1244;"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output=" "/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests different order of keys in keymap
tests missing keys in keymap
tests duplicate keys in keymap
-->
<keyboard group="126" id="-1272" name="Test_duplicate_missing_keys" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="shift caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
</keyMap>
<keyMap index="1">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="1" output="s"/>
<key code="1" output="s"/>
<key code="1" output="s"/>
<key code="1" output="s"/>
</keyMap>
<keyMap index="2">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="1" output="d"/>
<key code="1" output="f"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A_0">
<when state="none" output=" "/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests maximum key is 49 (K_SPACE), 50 will not be processed
-->
<keyboard group="126" id="-1272" name="Test_nr_elements" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="49" output="Y"/>
<key code="50" output="Z"/>
<key code="555" output="x"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output=" "/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated April 15 2025
Generated by S. Schmitt
a test showing different warning types
note: if an identical rule is specified multiple times, it is printed only once
-->
<keyboard group="126" id="-1272" name="Test" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="caps"/>
<modifier keys="UNAVAILABLE_MODIFIER"/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="anyShift? anyOption caps? anyControl"/>
<modifier keys="ANOTHER_UNAVAILABLE_MODIFIER"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="anyShift caps? anyOption ?"/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="anyOption"/>
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="anyOption "/>
</keyMapSelect>
<keyMapSelect mapIndex="5">
<modifier keys="caps anyOption ?"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="5" output="G"/>
<key code="5" output="G"/>
</keyMap>
<keyMap index="1">
<key code="5" output="&#x0007;"/>
</keyMap>
<keyMap index="2">
<key code="25" action="a0"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="7" output="ẍ"/>
</keyMap>
<keyMap index="3">
<key code="5" output="∞"/>
<key code="25" action="a8"/>
</keyMap>
<keyMap index="4">
<key code="5" output="∞"/>
<key code="25" output="`"/>
</keyMap>
<keyMap index="5">
<key code="25" output="`"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output=" "/>
<when state="2" output="`"/>
</action>
<action id="a8">
<when state="none" next="2"/>
</action>
<action id="A_9">
<when state="none" output="A"/>
</action>
</actions>
<terminators>
<when state="2" output="`"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests C0, C1, C2, C3 rules for output of "WARNING: use of a control character"
-->
<keyboard group="126" id="-1272" name="Test_messages_controlCharacter" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="anyOption"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="&#x0005;"/>
<key code="1" action="a1"/>
<key code="2" action="a0"/>
<key code="32" action="a4"/>
</keyMap>
<keyMap index="1">
<key code="24" action="a3"/>
<key code="28" action="a2"/>
<key code="32" action="a1"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="1" output="&#x0006;"/>
</action>
<action id="a1">
<when state="none" output="&#x0007;"/>
<when state="3" next="1"/>
</action>
<action id="a2">
<when state="none" next="3"/>
</action>
<action id="a3">
<when state="none" next="1"/>
</action>
<action id="a4">
<when state="none" output="&#x0008;"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated April 15 2025
Generated by S. Schmitt
tests several C2 rules for messages
-->
<keyboard group="126" id="-1272" name="Test_messages_superior_C2" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="shift? leftShift caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="anyShift? anyOption caps? anyControl"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="UNAVAILABLE"/>
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="a3"/>
<key code="24" action="a2"/>
<key code="49" action="a0"/>
</keyMap>
<keyMap index="1">
<key code="0" action="a1"/>
<key code="49" action="a0"/>
</keyMap>
<keyMap index="2">
<key code="0" action="a1"/>
<key code="49" action="a0"/>
</keyMap>
<keyMap index="3">
<key code="49" action="a0"/>
</keyMap>
<keyMap index="4">
<key code="24" action="a2"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="1" output="ˆ"/>
</action>
<action id="a1">
<when state="1" output="Â"/>
</action>
<action id="a2">
<when state="none" next="1"/>
</action>
<action id="a3">
<when state="1" output="â"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,59 @@
<?xml version="1.1" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests C3 rules
-->
<keyboard group="126" id="-1272" name="Test_C3" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="UNAVAILABLE_0"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="UNAVAILABLE_1"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="A6"/>
</keyMap>
<keyMap index="2">
<key code="28" action="A7"/>
<key code="32" action="A5"/>
</keyMap>
<keyMap index="3">
<key code="28" action="A4"/>
<key code="32" action="A3"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A3">
<when state="3" next="1"/>
</action>
<action id="A4">
<when state="none" next="3"/>
</action>
<action id="A5">
<when state="3" next="1"/>
</action>
<action id="A6">
<when state="1" output="â"/>
</action>
<action id="A7">
<when state="1" output="â"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
test how modifiers will be translated into kmn modifieres (includes caps)
-->
<keyboard group="126" id="-1272" name="Test_modifier" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="shift"/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="control"/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="option"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys="caps control"/>
</keyMapSelect>
<keyMapSelect mapIndex="5">
<modifier keys="shift leftShift caps "/>
<modifier keys="shift leftShift caps option"/>
<modifier keys="shift option"/>
<modifier keys="caps option"/>
<modifier keys="shift option control"/>
</keyMapSelect>
<keyMapSelect mapIndex="6">
<modifier keys="WrongModifierName"/>
</keyMapSelect>
<keyMapSelect mapIndex="7">
<modifier keys="Ano therWr ongModi fierName"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
</keyMap>
<keyMap index="1">
<key code="0" output="A"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
</keyMap>
<keyMap index="2">
<key code="0" output="â"/>
<key code="1" output="ŝ"/>
<key code="2" output="ḏ"/>
<key code="3" output="ḟ"/>
</keyMap>
<keyMap index="3">
<key code="0" output="á"/>
<key code="1" output="ş"/>
<key code="2" output="ḍ"/>
<key code="3" output="ff"/>
</keyMap>
<keyMap index="4">
<key code="0" output="å"/>
<key code="1" output="š"/>
<key code="2" output="ḓ"/>
<key code="3" output="ⓕ"/>
</keyMap>
<keyMap index="5">
<key code="0" output="Å"/>
<key code="1" output="ṡ"/>
<key code="2" output="ḓ"/>
<key code="3" output="fl"/>
</keyMap>
<keyMap index="6">
<key code="0" output="Â"/>
<key code="1" output="ś"/>
<key code="2" output="ḓ"/>
<key code="3" output="ᶠ"/>
</keyMap>
<keyMap index="7">
<key code="0" output="Â"/>
<key code="1" output="ś"/>
<key code="2" output="ḓ"/>
<key code="3" output="🐟"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output="D"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests how modifiers will be translated into kmn modifieres (with caps)
this is esentiially the same as Test_modifier.keylayout with every CAPS removed which results in
- skipping NCAPS in these cases
- creating ambiguous rules in some cases since removing caps creates a new shiftstate: shift caps =>shift
-->
<keyboard group="126" id="-1272" name="Test_modifierNoCaps" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="shift"/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="control"/>
</keyMapSelect>
<keyMapSelect mapIndex="3">
<modifier keys="option"/>
</keyMapSelect>
<keyMapSelect mapIndex="4">
<modifier keys=" control"/>
</keyMapSelect>
<keyMapSelect mapIndex="5">
<modifier keys="shift leftShift "/>
<modifier keys="shift leftShift option"/>
<modifier keys="shift option"/>
<modifier keys=" option"/>
<modifier keys="shift option control"/>
</keyMapSelect>
<keyMapSelect mapIndex="6">
<modifier keys="WrongModifierName"/>
</keyMapSelect>
<keyMapSelect mapIndex="7">
<modifier keys="Ano therWr ongModi fierName"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
</keyMap>
<keyMap index="1">
<key code="0" output="A"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
</keyMap>
<keyMap index="2">
<key code="0" output="â"/>
<key code="1" output="ŝ"/>
<key code="2" output="ḏ"/>
<key code="3" output="ḟ"/>
</keyMap>
<keyMap index="3">
<key code="0" output="á"/>
<key code="1" output="ş"/>
<key code="2" output="ḍ"/>
<key code="3" output="ff"/>
</keyMap>
<keyMap index="4">
<key code="0" output="å"/>
<key code="1" output="š"/>
<key code="2" output="ḓ"/>
<key code="3" output="ⓕ"/>
</keyMap>
<keyMap index="5">
<key code="0" output="Å"/>
<key code="1" output="ṡ"/>
<key code="2" output="ḓ"/>
<key code="3" output="fl"/>
</keyMap>
<keyMap index="6">
<key code="0" output="Â"/>
<key code="1" output="ś"/>
<key code="2" output="ḓ"/>
<key code="3" output="ᶠ"/>
</keyMap>
<keyMap index="7">
<key code="0" output="Â"/>
<key code="1" output="ś"/>
<key code="2" output="ḓ"/>
<key code="3" output="🐟"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output="D"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
more keyMapSelect than KeyMap
-->
<keyboard group="126" id="-1272" name="Test_DifferentAmountOfMapSelectInKeyMapERROR" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<!-- different amount of tags MapSelect(2) vs. KeyMap(3) -->
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
<modifier keys="shift? caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<!-- different amount of tags MapSelect(2) vs. KeyMap(3) -->
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="A_9"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="9" output="v"/>
<key code="10" output="\"/>
</keyMap>
<keyMap index="1">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="@"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="\"/>
</keyMap>
<keyMap index="2">
<key code="0" action="A_1"/>
<key code="1" output="ሴ"/>
<key code="2" output="😎"/>
</keyMap>
</keyMapSet>
<keyMapSet id="JIS">
<keyMap index="0">
<key code="0" action="A_9"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="9" output="v"/>
<key code="10" output="\"/>
</keyMap>
<keyMap index="2">
<key code="0" action="A_1"/>
<key code="1" output="ሴ"/>
<key code="2" output="😎"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A_1">
<when state="none" output="A"/>
</action>
<action id="A_9">
<when state="none" output="A"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated April 15 2025
Generated by S. Schmitt
more KeyMap than keyMapSelect
-->
<keyboard group="126" id="-1272" name="Test_DifferentAmountOfMapSelectInKeyMapERROR_1" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<!-- different amount of tags MapSelect(2) vs. KeyMap(3) -->
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
<modifier keys="shift? caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<!-- different amount of tags MapSelect(2) vs. KeyMap(3) -->
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="A_9"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="5" output="g"/>
<key code="6" output="z"/>
<key code="7" output="x"/>
<key code="8" output="c"/>
<key code="9" output="v"/>
<key code="10" output="\"/>
</keyMap>
<keyMap index="1">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="@"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="\"/>
</keyMap>
<keyMap index="2">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="H"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="|"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A_1">
<when state="none" output="A"/>
</action>
<action id="A_9">
<when state="none" output="A"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
more keyMapSelect than KeyMap
-->
<keyboard group="126" id="-1272" name="Test_DifferentAmountOfMapSelectInKeyMapERROR" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<!-- different amount of tags MapSelect(3) vs. KeyMap(2) -->
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
<modifier keys="shift? caps? "/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="shift"/>
</keyMapSelect>
</modifierMap>
<!-- different amount of tags MapSelect(3) vs. KeyMap(2) -->
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" action="A_9"/>
<key code="1" output="s"/>
<key code="2" output="d"/>
<key code="3" output="f"/>
<key code="4" output="h"/>
<key code="9" output="v"/>
<key code="10" output="\"/>
</keyMap>
<keyMap index="1">
<key code="0" action="A_1"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
<key code="4" output="@"/>
<key code="5" output="G"/>
<key code="6" output="Z"/>
<key code="7" output="X"/>
<key code="8" output="C"/>
<key code="9" output="V"/>
<key code="10" output="\"/>
</keyMap>
</keyMapSet>
<actions>
<action id="A_1">
<when state="none" output="A"/>
</action>
<action id="A_9">
<when state="none" output="A"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
if keymaps have different amount of keys defined -> should print all ( here 2+4 rules)
-->
<keyboard group="126" id="-1272" name="Test_nr_elements" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="caps"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output="s"/>
</keyMap>
<keyMap index="1">
<key code="0" output="A"/>
<key code="1" output="S"/>
<key code="2" output="D"/>
<key code="3" output="F"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output=" "/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests if definition of only one Keymap works
-->
<keyboard group="126" id="-1272" name="Test_onlyOneKeymap" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys=""/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="a"/>
<key code="1" output=""/>
<key code="2" output="ä"/>
<key code="3" output="@"/>
<key code="4" output="ሴ"/>
<key code="5" output="😎"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="none" output=" "/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests C0, C1, C2, C3 rules
-->
<keyboard group="126" id="-1272" name="Test_missingAction" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="anyOption"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output="A"/>
<key code="1" action="a1"/>
<key code="2" action="a0"/>
<key code="32" action="a99"/> <!-- use of undefined action here -->
</keyMap>
<keyMap index="1">
<key code="24" action="a3"/>
<key code="28" action="a2"/>
<key code="32" action="a1"/>
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="1" output="Â"/>
</action>
<action id="a1">
<when state="none" output="S"/>
<when state="3" next="1"/>
</action>
<action id="a2">
<when state="none" next="3"/>
</action>
<action id="a3">
<when state="none" next="1"/>
</action>
<action id="a4">
<when state="none" output="U"/>
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "../../../../../resources/standards-data/Keylayout/Keylayout.dtd">
<!--
Data generated August 1st 2025
Generated by S. Schmitt
tests C0, C1, C2, C3 rules
-->
<keyboard group="126" id="-1272" name="Test_unsupportedCharacters" maxout="1">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
<modifierMap id="30" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="caps"/>
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="anyOption"/>
</keyMapSelect>
</modifierMap>
<keyMapSet id="ANSI">
<keyMap index="0">
<key code="0" output=""/> <!-- C0-> keyman rule part 1 -->
<key code="1" action="a1"/> <!-- C1-> keyman rule part 1 -->
<key code="2" action="a0"/> <!-- C2-> keyman rule part 6 -->
<key code="32" action="a4"/> <!-- C1-> keyman rule part 1 -->
</keyMap>
<keyMap index="1">
<key code="24" action="a3"/> <!-- C2-> keyman rule part 3 -->
<key code="28" action="a2"/> <!-- C2-> keyman rule part 3 -->
<key code="32" action="a1"/> <!-- C1-> keyman rule part 1 --> <!-- C3-> keyman rule part 6 -->
</keyMap>
</keyMapSet>
<actions>
<action id="a0">
<when state="1" output="Â"/> <!-- C3-> keyman rule part 6 -->
</action>
<action id="a1">
<when state="none" output="Q"/> <!-- C1-> keyman rule part 1-->
<when state="3" next="1"/> <!-- C3-> keyman rule part 5 -->
</action>
<action id="a2">
<when state="none" next="3"/> <!-- C3-> keyman rule part 4 -->
</action>
<action id="a3">
<when state="none" next="1"/> <!-- C2-> keyman rule part 3 -->
</action>
<action id="a4">
<when state="none" output="U"/> <!-- C1-> keyman rule part 1 -->
</action>
</actions>
<terminators>
<when state="1" output="ˆ"/>
</terminators>
</keyboard>

View file

@ -23,29 +23,29 @@ describe('KeylayoutToKmnConverter', function () {
describe('RunSpecialTestFiles', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
[
[makePathToFixture('../data/Test_C0.keylayout')],
[makePathToFixture('../data/Test_C1.keylayout')],
[makePathToFixture('../data/Test_C2.keylayout')],
[makePathToFixture('../data/Test_C2_several.keylayout')],
[makePathToFixture('../data/Test_C3.keylayout')],
[makePathToFixture('../data/Test_C3_several.keylayout')],
[makePathToFixture('../data/Test_C0_C1_C2_C3.keylayout')],
[makePathToFixture('../data/Test_maxKeyCode.keylayout')],
[makePathToFixture('../data/Test_messages.keylayout')],
[makePathToFixture('../data/Test_messages_controlCharacter.keylayout')],
[makePathToFixture('../data/Test_messages_superior_C2.keylayout')],
[makePathToFixture('../data/Test_messages_superior_C3.keylayout')],
[makePathToFixture('../data/Test_duplicate_missing_keycode.keylayout')],
[makePathToFixture('../data/Test_modifier.keylayout')],
[makePathToFixture('../data/Test_modifierNoCaps.keylayout')],
[makePathToFixture('../data/Test_differentAmountOfKeysInBehaviours.keylayout')],
[makePathToFixture('../data/Test_duplicate_missing_keys.keylayout')],
[makePathToFixture('../data/Test_duplicate_keys.keylayout')],
[makePathToFixture('../data/Test_ambiguous_keys.keylayout')],
[makePathToFixture('../data/Test_nr_elements.keylayout')],
[makePathToFixture('../data/Test.keylayout')],
[makePathToFixture('../data/Test_differentEncodings.keylayout')],
[makePathToFixture('../data/Test_ExtraWarning.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_C0.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_C1.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_C2.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_C2_several.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_C3.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_C3_several.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_C0_C1_C2_C3.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_maxKeyCode.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_messages.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_messages_controlCharacter.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_messages_superior_C2.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_messages_superior_C3.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_duplicate_missing_keycode.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_modifier.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_modifierNoCaps.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_differentAmountOfKeysInBehaviours.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_duplicate_missing_keys.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_duplicate_keys.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_ambiguous_keys.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_nr_elements.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_differentEncodings.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_ExtraWarning.keylayout')],
].forEach(function (files) {
it(files + " should give no errors ", async function () {
sut.run(files[0]);
@ -57,17 +57,17 @@ describe('KeylayoutToKmnConverter', function () {
describe('RunTestFiles resulting in errors ', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
[
[makePathToFixture('../data/Test_moreKeyMapThanKeyMapselectERROR.keylayout')],
[makePathToFixture('../data/Test_moreKeyMapThanKeyMapselectAndJisERROR.keylayout')],
[makePathToFixture('../data/Test_moreKeyMapThanKeyMapselectERROR.keylayout')],
[makePathToFixture('../data/Test_MissingkeyERROR.keylayout')],
[makePathToFixture('../data/Test_MissingkeyMapERROR.keylayout')],
[makePathToFixture('../data/Test_MissingLayoutsERROR.keylayout')],
[makePathToFixture('../data/Test_MissingmodifierMapERROR.keylayout')],
[makePathToFixture('../data/Test_MissingkeyMapSetERROR.keylayout')],
[makePathToFixture('../data/Test_MissingActionsERROR.keylayout')],
[makePathToFixture('../data/Test_MissingTerminatorsERROR.keylayout')],
[makePathToFixture('../data/Test_MissingAllERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_moreKeyMapThanKeyMapselectERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_moreKeyMapThanKeyMapselectAndJisERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_moreKeyMapThanKeyMapselectERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_MissingkeyERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_MissingkeyMapERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_MissingLayoutsERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_MissingmodifierMapERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_MissingkeyMapSetERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_MissingActionsERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_MissingTerminatorsERROR.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_MissingAllERROR.keylayout')],
].forEach(function (files) {
it(files + " should give an error ", async function () {
sut.run(files[0]);
@ -79,7 +79,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('RunSpecialTestFiles - create Error: unsupported characters', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
[
[makePathToFixture('../data/Test_characters.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_characters.keylayout')],
].forEach(function (files) {
it(files + " should give Error: unsupported characters ", async function () {
sut.run(files[0]);
@ -91,7 +91,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('RunSpecialTestFiles - create Error: undefined action', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
[
[makePathToFixture('../data/Test_undefinedAction.keylayout')],
[makePathToFixture('../data/tests-keylayout-kmn/Test_undefinedAction.keylayout')],
].forEach(function (files) {
it(files + " should give Error: undefined action detected", async function () {
sut.run(files[0]);
@ -127,7 +127,7 @@ describe('KeylayoutToKmnConverter', function () {
});
it('run() should throw on unavailable input file name and null output file name', async function () {
const inputFilename = makePathToFixture('../data/Unavailable.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Unavailable.keylayout');
const result = sut.run(inputFilename, null);
assert.isNotNull(result);
assert.equal(compilerTestCallbacks.messages.length, 2);
@ -139,14 +139,14 @@ describe('KeylayoutToKmnConverter', function () {
describe('Run kmc-convert with or without outputfile name', async function () {
this.timeout(5000); // allow longer time for this test
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const infile = '../data/Test.keylayout';
const infile = '../data/tests-keylayout-kmn/Test.keylayout';
[
[makePathToFixture('../data/Test.kmn')],
[makePathToFixture('../data/tests-keylayout-kmn/Test.kmn')],
[makePathToFixture('')],
[],
[null],
[makePathToFixture('../data/test_OtherOutputName.kmn')],
[makePathToFixture('../data/OutputXName.bb')],
[makePathToFixture('../data/tests-keylayout-kmn/test_OtherOutputName.kmn')],
[makePathToFixture('../data/tests-keylayout-kmn/OutputXName.bb')],
].forEach(function (files) {
it(infile + " should run ", async function () {
await NodeAssert.doesNotReject(async () => sut.run(makePathToFixture(infile), files[0]));
@ -160,12 +160,12 @@ describe('KeylayoutToKmnConverter', function () {
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
// ProcessedData from usable file
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const converted = sut.convertBound.convert(read, inputFilename.replace(/\.keylayout$/, '.kmn'));
// ProcessedData from unavailable file
const inputFilenameUnavailable = makePathToFixture('../data/X.keylayout');
const inputFilenameUnavailable = makePathToFixture('../data/tests-keylayout-kmn/X.keylayout');
const readUnavailable = sutR.read(compilerTestCallbacks.loadFile(inputFilenameUnavailable));
const convertedUnavailable = sut.convertBound.convert(readUnavailable, inputFilenameUnavailable.replace(/\.keylayout$/, '.kmn'));
@ -322,7 +322,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('getModifierArrayFromKeyModifierArray ', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const converted = sut.convertBound.convert(read, inputFilename.replace(/\.keylayout$/, '.kmn'));
[
@ -348,7 +348,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('getKeyModifierArrayFromActionID ', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
[
['A_16', [{ "key": "32", "behavior": "5" }]],
@ -374,7 +374,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('getActionIdFromActionNext ', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
[
['none', ''],
@ -400,7 +400,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('getActionIndexFromActionId ', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
[
['none', -1],
@ -424,7 +424,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('getOutputFromActionIdNone ', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
[
['A_14', 'u'],
@ -454,7 +454,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('getKeybehaviorModOutputArrayFromKeyActionbehaviorOutputArray ', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const b1KeycodeArr: KeylayoutFileData[] = [
@ -562,7 +562,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('getActionStateOutputArrayFromActionState ', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
[['1', [
{ "id": "A_0", "state": "1", "output": "ˆ" },
@ -609,7 +609,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('getActionOutputbehaviorKeyModiFromActionIDStateOutput ', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const converted = sut.convertBound.convert(read, inputFilename.replace(/\.keylayout$/, '.kmn'));
[
@ -644,7 +644,7 @@ describe('KeylayoutToKmnConverter', function () {
describe('getKeyActionOutputArrayFromActionStateOutputArray ', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const b6ActionIdArr: ActionStateOutput[] = [
@ -751,35 +751,35 @@ describe('KeylayoutToKmnConverter', function () {
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
[
[
['../data/Test_C0.keylayout'],
['../data/tests-keylayout-kmn/Test_C0.keylayout'],
[new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_A', new TextEncoder().encode('a')),
new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_A', new TextEncoder().encode('A')),
new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_S', new TextEncoder().encode('s')),
new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_D', new TextEncoder().encode('d'))]
],
[
['../data/Test_C1.keylayout'],
['../data/tests-keylayout-kmn/Test_C1.keylayout'],
[new Rule("C1", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_S', new TextEncoder().encode('s')),
new Rule("C1", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_S', new TextEncoder().encode('S'))]
],
[
['../data/Test_C2.keylayout'],
['../data/tests-keylayout-kmn/Test_C2.keylayout'],
[new Rule("C2", '', '', 0, 0, 'NCAPS', 'K_U', 1, 1, 'CAPS', 'K_A', new TextEncoder().encode('Â'))],
],
[
['../data/Test_C3.keylayout'],
['../data/tests-keylayout-kmn/Test_C3.keylayout'],
[new Rule("C3", 'NCAPS SHIFT', 'K_D', 2, 1, 'NCAPS', 'K_U', 1, 2, 'CAPS', 'K_A', new TextEncoder().encode('Â'))]
],
[
['../data/Test_C3_several.keylayout'],
['../data/tests-keylayout-kmn/Test_C3_several.keylayout'],
[new Rule("C3", 'NCAPS RALT', 'K_8', 3, 1, 'CAPS', 'K_U', 1, 3, 'NCAPS', 'K_A', new TextEncoder().encode('â')),
new Rule("C3", 'NCAPS RALT', 'K_8', 3, 0, 'CAPS', 'K_U', 1, 0, 'NCAPS RALT', 'K_A', new TextEncoder().encode('â')),
new Rule("C3", 'NCAPS RALT', 'K_8', 3, 0, 'NCAPS RALT', 'K_U', 2, 2, 'NCAPS', 'K_A', new TextEncoder().encode('â')),
new Rule("C3", 'NCAPS RALT', 'K_8', 3, 0, 'NCAPS RALT', 'K_U', 2, 0, 'NCAPS RALT', 'K_A', new TextEncoder().encode('â'))]
],
[
['../data/Test_C0_C1_C2_C3.keylayout'],
['../data/tests-keylayout-kmn/Test_C0_C1_C2_C3.keylayout'],
[new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_A', new TextEncoder().encode('A')),
new Rule("C2", '', '', 0, 0, 'NCAPS RALT', 'K_EQUAL', 1, 1, 'CAPS', 'K_D', new TextEncoder().encode('Â')),
new Rule("C1", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_S', new TextEncoder().encode('S')),

View file

@ -22,7 +22,7 @@ describe('KeylayoutFileReader', function () {
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
it('read() should return filled array on correct input', async function () {
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const result = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
assert.isNotEmpty(result);
});
@ -38,7 +38,7 @@ describe('KeylayoutFileReader', function () {
});
it('read() should return empty array on unavailable file name', async function () {
const inputFilenameUnavailable = makePathToFixture('../data/X.keylayout');
const inputFilenameUnavailable = makePathToFixture('../data/tests-keylayout-kmn/X.keylayout');
const result = sutR.read(compilerTestCallbacks.loadFile(inputFilenameUnavailable));
assert.isNull(result);
});

View file

@ -22,7 +22,7 @@ describe('KmnFileWriter', function () {
});
describe("writeDataRules() ", function () {
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const sutW = new KmnFileWriter(compilerTestCallbacks, compilerTestOptions);
@ -40,7 +40,7 @@ describe('KmnFileWriter', function () {
const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new KeylayoutFileReader(compilerTestCallbacks);
const sutW = new KmnFileWriter(compilerTestCallbacks, compilerTestOptions);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-keylayout-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const converted = sut.convertBound.convert(read, inputFilename.replace(/\.keylayout$/, '.kmn'));

View file

@ -22,7 +22,7 @@ describe('KmnXKBFileWriter', function () {
});
describe("Xkb-kmn: writeDataRules() ", function () {
const inputFilename = makePathToFixture('../data/Test.xkb');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.xkb');
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const sutW = new KmnXKBFileWriter(compilerTestCallbacks, compilerTestOptions);
@ -40,7 +40,7 @@ describe('KmnXKBFileWriter', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const sutW = new KmnXKBFileWriter(compilerTestCallbacks, compilerTestOptions);
const inputFilename = makePathToFixture('../data/Test.xkb');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.xkb');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const converted = sut.convertBound.convert(read, inputFilename.replace(/\.xkb$/, '.kmn'));
@ -422,7 +422,7 @@ describe('KmnXKBFileWriter', function () {
const sutW = new KmnXKBFileWriter(compilerTestCallbacks, compilerTestOptions);
[
[
[ /* see ../data/Test_C0.xkb */
[ /* see ../data/tests-xkb-kmn/Test_C0.xkb */
new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_A', new TextEncoder().encode('a')),
new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_A', new TextEncoder().encode('A')),
new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_S', new TextEncoder().encode('s')),
@ -434,7 +434,7 @@ describe('KmnXKBFileWriter', function () {
"+ [NCAPS K_D] > 'd'\n"]
],
[
[ /* see ../data/Test_C1.xkb */
[ /* see ../data/tests-xkb-kmn/Test_C1.xkb */
new Rule("C1", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_S', new TextEncoder().encode('s')),
new Rule("C1", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_S', new TextEncoder().encode('S'))
],
@ -442,14 +442,14 @@ describe('KmnXKBFileWriter', function () {
"+ [CAPS K_S] > 'S'\n"]
],
[
[ /* see ../data/Test_C2.xkb */
[ /* see ../data/tests-xkb-kmn/Test_C2.xkb */
new Rule("C2", '', '', 0, 0, 'NCAPS', 'K_U', 1, 1, 'CAPS', 'K_A', new TextEncoder().encode('Â'))
],
["+ [NCAPS K_U] > dk(A1)\n" +
"dk(A1) + [CAPS K_A] > 'Â'\n\n"]
],
[
[ /* see ../data/Test_C3.xkb */
[ /* see ../data/tests-xkb-kmn/Test_C3.xkb */
new Rule("C3", 'NCAPS SHIFT', 'K_D', 2, 1, 'NCAPS', 'K_U', 1, 2, 'CAPS', 'K_A', new TextEncoder().encode('Â'))
],
["+ [NCAPS SHIFT K_D] > dk(A2)\n" +
@ -458,7 +458,7 @@ describe('KmnXKBFileWriter', function () {
]
],
[
[ /* see ../data/Test_C0_C1_C2_C3.xkb */
[ /* see ../data/tests-xkb-kmn/Test_C0_C1_C2_C3.xkb */
new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_A', new TextEncoder().encode('A')),
new Rule("C2", '', '', 0, 0, 'NCAPS RALT', 'K_EQUAL', 1, 1, 'CAPS', 'K_D', new TextEncoder().encode('Â')),
new Rule("C1", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_S', new TextEncoder().encode('S')),
@ -492,7 +492,7 @@ describe('KmnXKBFileWriter', function () {
"dk(B5) + [CAPS K_D] > 'Â'\n\n"]
],
[
[ /* see ../data/Test_C3_several.xkb */
[ /* see ../data/tests-xkb-kmn/Test_C3_several.xkb */
new Rule("C3", 'NCAPS RALT', 'K_8', 3, 1, 'CAPS', 'K_U', 1, 3, 'NCAPS', 'K_A', new TextEncoder().encode('â')),
new Rule("C3", 'NCAPS RALT', 'K_8', 3, 0, 'CAPS', 'K_U', 1, 0, 'NCAPS RALT', 'K_A', new TextEncoder().encode('â')),
new Rule("C3", 'NCAPS RALT', 'K_8', 3, 0, 'NCAPS RALT', 'K_U', 2, 2, 'NCAPS', 'K_A', new TextEncoder().encode('â')),

View file

@ -22,7 +22,7 @@ describe('XkbFileReader', function () {
const sutR = new XkbFileReader(compilerTestCallbacks);
it('read() should return filled array on correct input', async function () {
const inputFilename = makePathToFixture('../data/Test.xkb');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.xkb');
const result = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
assert.isNotEmpty(result);
});
@ -38,7 +38,7 @@ describe('XkbFileReader', function () {
});
it('read() should return empty array on unavailable file name', async function () {
const inputFilenameUnavailable = makePathToFixture('../data/X.xkb');
const inputFilenameUnavailable = makePathToFixture('../data/tests-xkb-kmn/X.xkb');
const result = sutR.read(compilerTestCallbacks.loadFile(inputFilenameUnavailable));
assert.isNull(result);
});

View file

@ -23,29 +23,29 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: RunSpecialTestFiles', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
[
[makePathToFixture('../data/Test_C0.keylayout')],
[makePathToFixture('../data/Test_C1.keylayout')],
[makePathToFixture('../data/Test_C2.keylayout')],
[makePathToFixture('../data/Test_C2_several.keylayout')],
[makePathToFixture('../data/Test_C3.keylayout')],
[makePathToFixture('../data/Test_C3_several.keylayout')],
[makePathToFixture('../data/Test_C0_C1_C2_C3.keylayout')],
[makePathToFixture('../data/Test_maxKeyCode.keylayout')],
[makePathToFixture('../data/Test_messages.keylayout')],
[makePathToFixture('../data/Test_messages_controlCharacter.keylayout')],
[makePathToFixture('../data/Test_messages_superior_C2.keylayout')],
[makePathToFixture('../data/Test_messages_superior_C3.keylayout')],
[makePathToFixture('../data/Test_duplicate_missing_keycode.keylayout')],
[makePathToFixture('../data/Test_modifier.keylayout')],
[makePathToFixture('../data/Test_modifierNoCaps.keylayout')],
[makePathToFixture('../data/Test_differentAmountOfKeysInBehaviours.keylayout')],
[makePathToFixture('../data/Test_duplicate_missing_keys.keylayout')],
[makePathToFixture('../data/Test_duplicate_keys.keylayout')],
[makePathToFixture('../data/Test_ambiguous_keys.keylayout')],
[makePathToFixture('../data/Test_nr_elements.keylayout')],
[makePathToFixture('../data/Test.keylayout')],
[makePathToFixture('../data/Test_differentEncodings.keylayout')],
[makePathToFixture('../data/Test_ExtraWarning.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_C0.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_C1.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_C2.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_C2_several.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_C3.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_C3_several.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_C0_C1_C2_C3.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_maxKeyCode.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_messages.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_messages_controlCharacter.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_messages_superior_C2.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_messages_superior_C3.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_duplicate_missing_keycode.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_modifier.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_modifierNoCaps.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_differentAmountOfKeysInBehaviours.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_duplicate_missing_keys.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_duplicate_keys.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_ambiguous_keys.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_nr_elements.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_differentEncodings.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_ExtraWarning.keylayout')],
].forEach(function (files) {
it(files + " should give no errors ", async function () {
sut.run(files[0]);
@ -57,15 +57,15 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: RunTestFiles resulting in errors ', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
[
[makePathToFixture('../data/Test_DifferentAmountOfMapSelectInKeyMapERROR.keylayout')],
[makePathToFixture('../data/Test_MissingkeyERROR.keylayout')],
[makePathToFixture('../data/Test_MissingkeyMapERROR.keylayout')],
[makePathToFixture('../data/Test_MissingLayoutsERROR.keylayout')],
[makePathToFixture('../data/Test_MissingmodifierMapERROR.keylayout')],
[makePathToFixture('../data/Test_MissingkeyMapSetERROR.keylayout')],
[makePathToFixture('../data/Test_MissingActionsERROR.keylayout')],
[makePathToFixture('../data/Test_MissingTerminatorsERROR.keylayout')],
[makePathToFixture('../data/Test_MissingAllERROR.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_DifferentAmountOfMapSelectInKeyMapERROR.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_MissingkeyERROR.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_MissingkeyMapERROR.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_MissingLayoutsERROR.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_MissingmodifierMapERROR.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_MissingkeyMapSetERROR.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_MissingActionsERROR.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_MissingTerminatorsERROR.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_MissingAllERROR.keylayout')],
].forEach(function (files) {
it(files + " should give an error ", async function () {
sut.run(files[0]);
@ -77,7 +77,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: RunSpecialTestFiles - create Error: unsupported characters', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
[
[makePathToFixture('../data/Test_characters.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_characters.keylayout')],
].forEach(function (files) {
it(files + " should give Error: unsupported characters ", async function () {
sut.run(files[0]);
@ -89,7 +89,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: RunSpecialTestFiles - create Error: undefined action', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
[
[makePathToFixture('../data/Test_undefinedAction.keylayout')],
[makePathToFixture('../data/tests-xkb-kmn/Test_undefinedAction.keylayout')],
].forEach(function (files) {
it(files + " should give Error: undefined action detected", async function () {
sut.run(files[0]);
@ -125,7 +125,7 @@ describe('XkbToKmnConverter', function () {
});
it('run() should throw on unavailable input file name and null output file name', async function () {
const inputFilename = makePathToFixture('../data/Unavailable.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Unavailable.keylayout');
const result = sut.run(inputFilename, null);
assert.isNotNull(result);
assert.equal(compilerTestCallbacks.messages.length, 2);
@ -137,14 +137,14 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: Run kmc-convert with or without outputfile name', async function () {
this.timeout(5000); // allow longer time for this test
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const infile = '../data/Test.keylayout';
const infile = '../data/tests-xkb-kmn/Test.keylayout';
[
[makePathToFixture('../data/Test.kmn')],
[makePathToFixture('../data/tests-xkb-kmn/Test.kmn')],
[makePathToFixture('')],
[],
[null],
[makePathToFixture('../data/test_OtherOutputName.kmn')],
[makePathToFixture('../data/OutputXName.bb')],
[makePathToFixture('../data/tests-xkb-kmn/test_OtherOutputName.kmn')],
[makePathToFixture('../data/tests-xkb-kmn/OutputXName.bb')],
].forEach(function (files) {
it(infile + " should run ", async function () {
await NodeAssert.doesNotReject(async () => sut.run(makePathToFixture(infile), files[0]));
@ -158,12 +158,12 @@ describe('XkbToKmnConverter', function () {
const sutR = new XkbFileReader(compilerTestCallbacks);
// ProcessedData from usable file
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const converted = sut.convertBound.convert(read, inputFilename.replace(/\.keylayout$/, '.kmn'));
// ProcessedData from unavailable file
const inputFilenameUnavailable = makePathToFixture('../data/X.keylayout');
const inputFilenameUnavailable = makePathToFixture('../data/tests-xkb-kmn/X.keylayout');
const readUnavailable = sutR.read(compilerTestCallbacks.loadFile(inputFilenameUnavailable));
const convertedUnavailable = sut.convertBound.convert(readUnavailable, inputFilenameUnavailable.replace(/\.keylayout$/, '.kmn'));
@ -320,7 +320,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: getModifierArrayFromKeyModifierArray ', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const converted = sut.convertBound.convert(read, inputFilename.replace(/\.keylayout$/, '.kmn'));
[
@ -345,7 +345,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: getKeyModifierArrayFromActionID ', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
[
['A_16', [{ "key": "32", "behavior": "5" }]],
@ -371,7 +371,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: getActionIdFromActionNext ', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
[
['none', ''],
@ -397,7 +397,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: getActionIndexFromActionId ', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
[
['none', -1],
@ -421,7 +421,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: getOutputFromActionIdNone ', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
[
['A_14', 'u'],
@ -451,7 +451,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: getKeybehaviorModOutputArrayFromKeyActionbehaviorOutputArray ', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const b1KeycodeArr: KeylayoutFileData[] = [
@ -559,7 +559,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: getActionStateOutputArrayFromActionState ', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
[['1', [
{ "id": "A_0", "state": "1", "output": "ˆ" },
@ -606,7 +606,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: getActionOutputbehaviorKeyModiFromActionIDStateOutput ', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const converted = sut.convertBound.convert(read, inputFilename.replace(/\.keylayout$/, '.kmn'));
[
@ -641,7 +641,7 @@ describe('XkbToKmnConverter', function () {
describe('Xkb-kmn: getKeyActionOutputArrayFromActionStateOutputArray ', function () {
const sut = new XkbToKmnConverter(compilerTestCallbacks, compilerTestOptions);
const sutR = new XkbFileReader(compilerTestCallbacks);
const inputFilename = makePathToFixture('../data/Test.keylayout');
const inputFilename = makePathToFixture('../data/tests-xkb-kmn/Test.keylayout');
const read = sutR.read(compilerTestCallbacks.loadFile(inputFilename));
const b6ActionIdArr: ActionStateOutput[] = [
@ -748,35 +748,35 @@ describe('XkbToKmnConverter', function () {
const sutR = new XkbFileReader(compilerTestCallbacks);
[
[
['../data/Test_C0.keylayout'],
['../data/tests-xkb-kmn/Test_C0.keylayout'],
[new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_A', new TextEncoder().encode('a')),
new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_A', new TextEncoder().encode('A')),
new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_S', new TextEncoder().encode('s')),
new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_D', new TextEncoder().encode('d'))]
],
[
['../data/Test_C1.keylayout'],
['../data/tests-xkb-kmn/Test_C1.keylayout'],
[new Rule("C1", '', '', 0, 0, '', '', 0, 0, 'NCAPS', 'K_S', new TextEncoder().encode('s')),
new Rule("C1", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_S', new TextEncoder().encode('S'))]
],
[
['../data/Test_C2.keylayout'],
['../data/tests-xkb-kmn/Test_C2.keylayout'],
[new Rule("C2", '', '', 0, 0, 'NCAPS', 'K_U', 1, 1, 'CAPS', 'K_A', new TextEncoder().encode('Â'))],
],
[
['../data/Test_C3.keylayout'],
['../data/tests-xkb-kmn/Test_C3.keylayout'],
[new Rule("C3", 'NCAPS SHIFT', 'K_D', 2, 1, 'NCAPS', 'K_U', 1, 2, 'CAPS', 'K_A', new TextEncoder().encode('Â'))]
],
[
['../data/Test_C3_several.keylayout'],
['../data/tests-xkb-kmn/Test_C3_several.keylayout'],
[new Rule("C3", 'NCAPS RALT', 'K_8', 3, 1, 'CAPS', 'K_U', 1, 3, 'NCAPS', 'K_A', new TextEncoder().encode('â')),
new Rule("C3", 'NCAPS RALT', 'K_8', 3, 0, 'CAPS', 'K_U', 1, 0, 'NCAPS RALT', 'K_A', new TextEncoder().encode('â')),
new Rule("C3", 'NCAPS RALT', 'K_8', 3, 0, 'NCAPS RALT', 'K_U', 2, 2, 'NCAPS', 'K_A', new TextEncoder().encode('â')),
new Rule("C3", 'NCAPS RALT', 'K_8', 3, 0, 'NCAPS RALT', 'K_U', 2, 0, 'NCAPS RALT', 'K_A', new TextEncoder().encode('â'))]
],
[
['../data/Test_C0_C1_C2_C3.keylayout'],
['../data/tests-xkb-kmn/Test_C0_C1_C2_C3.keylayout'],
[new Rule("C0", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_A', new TextEncoder().encode('A')),
new Rule("C2", '', '', 0, 0, 'NCAPS RALT', 'K_EQUAL', 1, 1, 'CAPS', 'K_D', new TextEncoder().encode('Â')),
new Rule("C1", '', '', 0, 0, '', '', 0, 0, 'CAPS', 'K_S', new TextEncoder().encode('S')),