fix Greek dead key terminator (Ω→α), enable CapsLock language switch, fix parser key resolution

- change Greek dead key terminator from Ω to α in all layout versions,
  matching the official EurKEY spec (closes #11)
- change dead key state name from "dead: Ω" to "dead: α" in v1.2/v1.3
- enable TICapsLockLanguageSwitchCapable in build script (closes #8)
- fix parser to resolve all key codes from base keyMapSets, not just
  codes in explicit layout entry ranges
- add per-version exceptions for newly-discovered v1.2/v1.4 differences
- add Karabiner-Elements docs section, known issues section to README
- add Windows spec installers for reference
- regenerate all parsed JSON specs with fixed parser

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-04 12:59:46 +01:00
parent 859c26f64c
commit 9592b321b1
31 changed files with 15212 additions and 357 deletions

View File

@@ -7,11 +7,11 @@
<key>CFBundleName</key>
<string>EurKEY-macOS</string>
<key>CFBundleVersion</key>
<string>2026.03.03</string>
<string>2026.03.04</string>
<key>KLInfo_EurKEY v1.2</key>
<dict>
<key>TICapsLockLanguageSwitchCapable</key>
<false/>
<true/>
<key>TISIconIsTemplate</key>
<true/>
<key>TISInputSourceID</key>
@@ -22,7 +22,7 @@
<key>KLInfo_EurKEY v1.3</key>
<dict>
<key>TICapsLockLanguageSwitchCapable</key>
<false/>
<true/>
<key>TISIconIsTemplate</key>
<true/>
<key>TISInputSourceID</key>
@@ -33,7 +33,7 @@
<key>KLInfo_EurKEY v1.4</key>
<dict>
<key>TICapsLockLanguageSwitchCapable</key>
<false/>
<true/>
<key>TISIconIsTemplate</key>
<true/>
<key>TISInputSourceID</key>
@@ -44,7 +44,7 @@
<key>KLInfo_EurKEY v2.0</key>
<dict>
<key>TICapsLockLanguageSwitchCapable</key>
<false/>
<true/>
<key>TISIconIsTemplate</key>
<true/>
<key>TISInputSourceID</key>

View File

@@ -1023,60 +1023,60 @@
<actions>
<action id="!">
<when state="none" output="!"/>
<when state="dead: Ω" output="₁"/>
<when state="dead: α" output="₁"/>
<when state="dead: √" output="≠"/>
</action>
<action id="&#x0022;">
<when state="none" output="&#x0022;"/>
<when state="dead: Ω" output="₊"/>
<when state="dead: α" output="₊"/>
<when state="dead: √" output="″"/>
</action>
<action id="#">
<when state="none" output="#"/>
<when state="dead: ˇ" output="Ǯ"/>
<when state="dead: Ω" output="₃"/>
<when state="dead: α" output="₃"/>
</action>
<action id="$">
<when state="none" output="$"/>
<when state="dead: Ω" output="₄"/>
<when state="dead: α" output="₄"/>
</action>
<action id="%">
<when state="none" output="%"/>
<when state="dead: Ω" output="₅"/>
<when state="dead: α" output="₅"/>
<when state="dead: √" output="‰"/>
</action>
<action id="&#x0026;">
<when state="none" output="&#x0026;"/>
<when state="dead: Ω" output="₇"/>
<when state="dead: α" output="₇"/>
<when state="dead: √" output="∧"/>
</action>
<action id="&#x0027;">
<when state="none" output="&#x0027;"/>
<when state="dead: Ω" output="₌"/>
<when state="dead: α" output="₌"/>
<when state="dead: √" output=""/>
</action>
<action id="(">
<when state="none" output="("/>
<when state="dead: Ω" output="₉"/>
<when state="dead: α" output="₉"/>
</action>
<action id=")">
<when state="none" output=")"/>
<when state="dead: Ω" output="₀"/>
<when state="dead: α" output="₀"/>
</action>
<action id="*">
<when state="none" output="*"/>
<when state="dead: Ω" output="₈"/>
<when state="dead: α" output="₈"/>
<when state="dead: √" output="⊗"/>
</action>
<action id="+">
<when state="none" output="+"/>
<when state="dead: ©" output="⇔"/>
<when state="dead: Ω" output="⁺"/>
<when state="dead: α" output="⁺"/>
<when state="dead: √" output="⊕"/>
</action>
<action id="-">
<when state="none" output="-"/>
<when state="dead: Ω" output="⁻"/>
<when state="dead: α" output="⁻"/>
<when state="dead: √" output="±"/>
</action>
<action id=".">
@@ -1085,32 +1085,32 @@
</action>
<action id="0">
<when state="none" output="0"/>
<when state="dead: Ω" output="⁰"/>
<when state="dead: α" output="⁰"/>
</action>
<action id="1">
<when state="none" output="1"/>
<when state="dead: ©" output="¼"/>
<when state="dead: ¯" output=""/>
<when state="dead: Ω" output="¹"/>
<when state="dead: α" output="¹"/>
</action>
<action id="2">
<when state="none" output="2"/>
<when state="dead: ©" output="½"/>
<when state="dead: ¯" output=""/>
<when state="dead: Ω" output="²"/>
<when state="dead: α" output="²"/>
</action>
<action id="3">
<when state="none" output="3"/>
<when state="dead: ©" output="¾"/>
<when state="dead: ¯" output="—"/>
<when state="dead: ˇ" output="ǯ"/>
<when state="dead: Ω" output="³"/>
<when state="dead: α" output="³"/>
<when state="dead: √" output="∛"/>
</action>
<action id="4">
<when state="none" output="4"/>
<when state="dead: ©" output="⅓"/>
<when state="dead: Ω" output="⁴"/>
<when state="dead: α" output="⁴"/>
<when state="dead: √" output="∜"/>
</action>
<action id="5">
@@ -1120,28 +1120,28 @@
<when state="dead: ´" output="´"/>
<when state="dead: ˇ" output="ˇ"/>
<when state="dead: ˚" output="˚"/>
<when state="dead: Ω" output="⁵"/>
<when state="dead: α" output="⁵"/>
</action>
<action id="6">
<when state="none" output="6"/>
<when state="dead: Ω" output="⁶"/>
<when state="dead: α" output="⁶"/>
</action>
<action id="6 option">
<when state="none" next="dead: ^"/>
</action>
<action id="7">
<when state="none" output="7"/>
<when state="dead: Ω" output="⁷"/>
<when state="dead: α" output="⁷"/>
<when state="dead: √" output="∡"/>
</action>
<action id="8">
<when state="none" output="8"/>
<when state="dead: Ω" output="⁸"/>
<when state="dead: α" output="⁸"/>
<when state="dead: √" output="∠"/>
</action>
<action id="9">
<when state="none" output="9"/>
<when state="dead: Ω" output="⁹"/>
<when state="dead: α" output="⁹"/>
<when state="dead: √" output="∟"/>
</action>
<action id=":">
@@ -1150,7 +1150,7 @@
</action>
<action id=";">
<when state="none" output=";"/>
<when state="dead: Ω" output="₋"/>
<when state="dead: α" output="₋"/>
<when state="dead: √" output="∵"/>
</action>
<action id="&#x003C;">
@@ -1160,7 +1160,7 @@
<action id="=">
<when state="none" output="="/>
<when state="dead: ©" output="↔"/>
<when state="dead: Ω" output="⁼"/>
<when state="dead: α" output="⁼"/>
<when state="dead: √" output="≝"/>
</action>
<action id="&#x003E;">
@@ -1169,7 +1169,7 @@
</action>
<action id="@">
<when state="none" output="@"/>
<when state="dead: Ω" output="₂"/>
<when state="dead: α" output="₂"/>
</action>
<action id="A">
<when state="none" output="A"/>
@@ -1181,14 +1181,14 @@
<when state="dead: ´" output="Á"/>
<when state="dead: ˇ" output="Ǎ"/>
<when state="dead: ˚" output="Å"/>
<when state="dead: Ω" output="Α"/>
<when state="dead: α" output="Α"/>
<when state="dead: √" output="∀"/>
</action>
<action id="B">
<when state="none" output="B"/>
<when state="dead: ¯" output="Ƀ"/>
<when state="dead: ´" output="Ɓ"/>
<when state="dead: Ω" output="Β"/>
<when state="dead: α" output="Β"/>
<when state="dead: √" output="⊇"/>
</action>
<action id="C">
@@ -1198,14 +1198,14 @@
<when state="dead: ´" output="Ć"/>
<when state="dead: ˇ" output="Č"/>
<when state="dead: ˚" output="Ċ"/>
<when state="dead: Ω" output="Χ"/>
<when state="dead: α" output="Χ"/>
<when state="dead: √" output=""/>
</action>
<action id="D">
<when state="none" output="D"/>
<when state="dead: ¯" output="Đ"/>
<when state="dead: ˇ" output="Ď"/>
<when state="dead: Ω" output="Δ"/>
<when state="dead: α" output="Δ"/>
<when state="dead: √" output="∇"/>
</action>
<action id="E">
@@ -1217,12 +1217,12 @@
<when state="dead: ´" output="É"/>
<when state="dead: ˇ" output="Ě"/>
<when state="dead: ˚" output="Ė"/>
<when state="dead: Ω" output="Ε"/>
<when state="dead: α" output="Ε"/>
<when state="dead: √" output="∃"/>
</action>
<action id="F">
<when state="none" output="F"/>
<when state="dead: Ω" output="Φ"/>
<when state="dead: α" output="Φ"/>
<when state="dead: √" output="∎"/>
</action>
<action id="G">
@@ -1232,7 +1232,7 @@
<when state="dead: ´" output="Ǵ"/>
<when state="dead: ˇ" output="Ǧ"/>
<when state="dead: ˚" output="Ġ"/>
<when state="dead: Ω" output="Γ"/>
<when state="dead: α" output="Γ"/>
<when state="dead: √" output="⊃"/>
</action>
<action id="H">
@@ -1242,7 +1242,7 @@
<when state="dead: ©" output="⇐"/>
<when state="dead: ¯" output="Ħ"/>
<when state="dead: ˇ" output="Ȟ"/>
<when state="dead: Ω" output="Θ"/>
<when state="dead: α" output="Θ"/>
<when state="dead: √" output="⊅"/>
</action>
<action id="I">
@@ -1256,20 +1256,20 @@
<when state="dead: ´" output="Í"/>
<when state="dead: ˇ" output="Ǐ"/>
<when state="dead: ˚" output="İ"/>
<when state="dead: Ω" output="Η"/>
<when state="dead: α" output="Η"/>
</action>
<action id="J">
<when state="none" output="J"/>
<when state="dead: ^" output="Ĵ"/>
<when state="dead: ©" output="⇓"/>
<when state="dead: Ω" output="Ι"/>
<when state="dead: α" output="Ι"/>
</action>
<action id="K">
<when state="none" output="K"/>
<when state="dead: ©" output="⇑"/>
<when state="dead: ´" output="Ḱ"/>
<when state="dead: ˇ" output="Ǩ"/>
<when state="dead: Ω" output="Κ"/>
<when state="dead: α" output="Κ"/>
<when state="dead: √" output="∌"/>
</action>
<action id="L">
@@ -1278,14 +1278,14 @@
<when state="dead: ¯" output="Ḻ"/>
<when state="dead: ´" output="Ł"/>
<when state="dead: ˇ" output="Ľ"/>
<when state="dead: Ω" output="Λ"/>
<when state="dead: α" output="Λ"/>
<when state="dead: √" output="∦"/>
</action>
<action id="M">
<when state="none" output="M"/>
<when state="dead: ©" output="⇘"/>
<when state="dead: ´" output="Ḿ"/>
<when state="dead: Ω" output="Μ"/>
<when state="dead: α" output="Μ"/>
<when state="dead: √" output="∉"/>
</action>
<action id="N">
@@ -1294,7 +1294,7 @@
<when state="dead: ©" output="⇙"/>
<when state="dead: ´" output="Ń"/>
<when state="dead: ˇ" output="Ň"/>
<when state="dead: Ω" output="Ν"/>
<when state="dead: α" output="Ν"/>
<when state="dead: √" output=""/>
</action>
<action id="O">
@@ -1306,19 +1306,19 @@
<when state="dead: ¯" output="Ō"/>
<when state="dead: ´" output="Ó"/>
<when state="dead: ˇ" output="Ǒ"/>
<when state="dead: Ω" output="Ο"/>
<when state="dead: α" output="Ο"/>
<when state="dead: √" output="∅"/>
</action>
<action id="P">
<when state="none" output="P"/>
<when state="dead: ©" output="℗"/>
<when state="dead: ´" output="Ṕ"/>
<when state="dead: Ω" output="Π"/>
<when state="dead: α" output="Π"/>
<when state="dead: √" output=""/>
</action>
<action id="Q">
<when state="none" output="Q"/>
<when state="dead: Ω" output="Ω"/>
<when state="dead: α" output="Ω"/>
<when state="dead: √" output=""/>
</action>
<action id="R">
@@ -1326,7 +1326,7 @@
<when state="dead: ©" output="®"/>
<when state="dead: ´" output="Ŕ"/>
<when state="dead: ˇ" output="Ř"/>
<when state="dead: Ω" output="Ρ"/>
<when state="dead: α" output="Ρ"/>
<when state="dead: √" output=""/>
</action>
<action id="S">
@@ -1335,7 +1335,7 @@
<when state="dead: ©" output="℠"/>
<when state="dead: ´" output="Ś"/>
<when state="dead: ˇ" output="Š"/>
<when state="dead: Ω" output="Σ"/>
<when state="dead: α" output="Σ"/>
<when state="dead: √" output="∫"/>
</action>
<action id="T">
@@ -1343,7 +1343,7 @@
<when state="dead: ©" output="™"/>
<when state="dead: ¯" output="Ŧ"/>
<when state="dead: ˇ" output="Ť"/>
<when state="dead: Ω" output="Τ"/>
<when state="dead: α" output="Τ"/>
</action>
<action id="U">
<when state="none" output="U"/>
@@ -1356,24 +1356,24 @@
<when state="dead: ´" output="Ú"/>
<when state="dead: ˇ" output="Ǔ"/>
<when state="dead: ˚" output="Ů"/>
<when state="dead: Ω" output="Ω"/>
<when state="dead: α" output="Ω"/>
<when state="dead: √" output=""/>
</action>
<action id="V">
<when state="none" output="V"/>
<when state="dead: Ω" output="Β"/>
<when state="dead: α" output="Β"/>
</action>
<action id="W">
<when state="none" output="W"/>
<when state="dead: ^" output="Ŵ"/>
<when state="dead: ¨" output="Ẅ"/>
<when state="dead: ´" output="Ẃ"/>
<when state="dead: Ω" output="Ψ"/>
<when state="dead: α" output="Ψ"/>
</action>
<action id="X">
<when state="none" output="X"/>
<when state="dead: ¨" output="Ẍ"/>
<when state="dead: Ω" output="Ξ"/>
<when state="dead: α" output="Ξ"/>
<when state="dead: √" output="∄"/>
</action>
<action id="Y">
@@ -1383,27 +1383,27 @@
<when state="dead: ¨" output="Ÿ"/>
<when state="dead: ¯" output="Ȳ"/>
<when state="dead: ´" output="Ý"/>
<when state="dead: Ω" output="Υ"/>
<when state="dead: α" output="Υ"/>
</action>
<action id="Z">
<when state="none" output="Z"/>
<when state="dead: ´" output="Ź"/>
<when state="dead: ˇ" output="Ž"/>
<when state="dead: ˚" output="Ż"/>
<when state="dead: Ω" output="Ζ"/>
<when state="dead: α" output="Ζ"/>
<when state="dead: √" output=""/>
</action>
<action id="[">
<when state="none" output="["/>
<when state="dead: Ω" output="⁽"/>
<when state="dead: α" output="⁽"/>
</action>
<action id="]">
<when state="none" output="]"/>
<when state="dead: Ω" output="⁾"/>
<when state="dead: α" output="⁾"/>
</action>
<action id="^">
<when state="none" output="^"/>
<when state="dead: Ω" output="₆"/>
<when state="dead: α" output="₆"/>
<when state="dead: √" output="℘"/>
</action>
<action id="_">
@@ -1422,13 +1422,13 @@
<when state="dead: ´" output="á"/>
<when state="dead: ˇ" output="ǎ"/>
<when state="dead: ˚" output="å"/>
<when state="dead: Ω" output="α"/>
<when state="dead: α" output="α"/>
</action>
<action id="b">
<when state="none" output="b"/>
<when state="dead: ¯" output="ƀ"/>
<when state="dead: ´" output="ɓ"/>
<when state="dead: Ω" output="β"/>
<when state="dead: α" output="β"/>
<when state="dead: √" output="⊆"/>
</action>
<action id="c">
@@ -1438,14 +1438,14 @@
<when state="dead: ´" output="ć"/>
<when state="dead: ˇ" output="č"/>
<when state="dead: ˚" output="ċ"/>
<when state="dead: Ω" output="χ"/>
<when state="dead: α" output="χ"/>
<when state="dead: √" output="∝"/>
</action>
<action id="d">
<when state="none" output="d"/>
<when state="dead: ¯" output="đ"/>
<when state="dead: ˇ" output="ď"/>
<when state="dead: Ω" output="δ"/>
<when state="dead: α" output="δ"/>
<when state="dead: √" output="Δ"/>
</action>
<action id="e">
@@ -1457,11 +1457,11 @@
<when state="dead: ´" output="é"/>
<when state="dead: ˇ" output="ě"/>
<when state="dead: ˚" output="ė"/>
<when state="dead: Ω" output="ε"/>
<when state="dead: α" output="ε"/>
</action>
<action id="f">
<when state="none" output="f"/>
<when state="dead: Ω" output="φ"/>
<when state="dead: α" output="φ"/>
<when state="dead: √" output="ƒ"/>
</action>
<action id="g">
@@ -1471,7 +1471,7 @@
<when state="dead: ´" output="ǵ"/>
<when state="dead: ˇ" output="ǧ"/>
<when state="dead: ˚" output="ġ"/>
<when state="dead: Ω" output="γ"/>
<when state="dead: α" output="γ"/>
<when state="dead: √" output="⊂"/>
</action>
<action id="h">
@@ -1481,7 +1481,7 @@
<when state="dead: ©" output="←"/>
<when state="dead: ¯" output="ħ"/>
<when state="dead: ˇ" output="ȟ"/>
<when state="dead: Ω" output="θ"/>
<when state="dead: α" output="θ"/>
<when state="dead: √" output="⊄"/>
</action>
<action id="i">
@@ -1494,7 +1494,7 @@
<when state="dead: ¯" output="ī"/>
<when state="dead: ´" output="í"/>
<when state="dead: ˇ" output="ǐ"/>
<when state="dead: Ω" output="η"/>
<when state="dead: α" output="η"/>
<when state="dead: √" output="∞"/>
</action>
<action id="j">
@@ -1502,14 +1502,14 @@
<when state="dead: ^" output="ĵ"/>
<when state="dead: ©" output="↓"/>
<when state="dead: ˇ" output="ǰ"/>
<when state="dead: Ω" output="ι"/>
<when state="dead: α" output="ι"/>
</action>
<action id="k">
<when state="none" output="k"/>
<when state="dead: ©" output="↑"/>
<when state="dead: ´" output="ḱ"/>
<when state="dead: ˇ" output="ǩ"/>
<when state="dead: Ω" output="κ"/>
<when state="dead: α" output="κ"/>
<when state="dead: √" output="∋"/>
</action>
<action id="l">
@@ -1518,14 +1518,14 @@
<when state="dead: ¯" output="ḻ"/>
<when state="dead: ´" output="ł"/>
<when state="dead: ˇ" output="ľ"/>
<when state="dead: Ω" output="λ"/>
<when state="dead: α" output="λ"/>
<when state="dead: √" output="∥"/>
</action>
<action id="m">
<when state="none" output="m"/>
<when state="dead: ©" output="↘"/>
<when state="dead: ´" output="ḿ"/>
<when state="dead: Ω" output="μ"/>
<when state="dead: α" output="μ"/>
<when state="dead: √" output="∈"/>
</action>
<action id="n">
@@ -1534,7 +1534,7 @@
<when state="dead: ©" output="↙"/>
<when state="dead: ´" output="ń"/>
<when state="dead: ˇ" output="ň"/>
<when state="dead: Ω" output="ν"/>
<when state="dead: α" output="ν"/>
<when state="dead: √" output="ⁿ"/>
</action>
<action id="o">
@@ -1546,26 +1546,26 @@
<when state="dead: ¯" output="ō"/>
<when state="dead: ´" output="ó"/>
<when state="dead: ˇ" output="ǒ"/>
<when state="dead: Ω" output="ο"/>
<when state="dead: α" output="ο"/>
<when state="dead: √" output="∘"/>
</action>
<action id="p">
<when state="none" output="p"/>
<when state="dead: ©" output="℗"/>
<when state="dead: ´" output="ṕ"/>
<when state="dead: Ω" output="π"/>
<when state="dead: α" output="π"/>
<when state="dead: √" output="∂"/>
</action>
<action id="q">
<when state="none" output="q"/>
<when state="dead: Ω" output="ω"/>
<when state="dead: α" output="ω"/>
</action>
<action id="r">
<when state="none" output="r"/>
<when state="dead: ©" output="®"/>
<when state="dead: ´" output="ŕ"/>
<when state="dead: ˇ" output="ř"/>
<when state="dead: Ω" output="ρ"/>
<when state="dead: α" output="ρ"/>
<when state="dead: √" output="√"/>
</action>
<action id="s">
@@ -1574,7 +1574,7 @@
<when state="dead: ©" output="℠"/>
<when state="dead: ´" output="ś"/>
<when state="dead: ˇ" output="š"/>
<when state="dead: Ω" output="σ"/>
<when state="dead: α" output="σ"/>
<when state="dead: √" output="∩"/>
</action>
<action id="space">
@@ -1596,7 +1596,7 @@
<when state="dead: ©" output="™"/>
<when state="dead: ¯" output="ŧ"/>
<when state="dead: ˇ" output="ť"/>
<when state="dead: Ω" output="τ"/>
<when state="dead: α" output="τ"/>
</action>
<action id="u">
<when state="none" output="u"/>
@@ -1609,12 +1609,12 @@
<when state="dead: ´" output="ú"/>
<when state="dead: ˇ" output="ǔ"/>
<when state="dead: ˚" output="ů"/>
<when state="dead: Ω" output="ω"/>
<when state="dead: α" output="ω"/>
<when state="dead: √" output=""/>
</action>
<action id="v">
<when state="none" output="v"/>
<when state="dead: Ω" output="β"/>
<when state="dead: α" output="β"/>
</action>
<action id="w">
<when state="none" output="w"/>
@@ -1622,12 +1622,12 @@
<when state="dead: ¨" output="ẅ"/>
<when state="dead: ´" output="ẃ"/>
<when state="dead: ˚" output="ẘ"/>
<when state="dead: Ω" output="ψ"/>
<when state="dead: α" output="ψ"/>
</action>
<action id="x">
<when state="none" output="x"/>
<when state="dead: ¨" output="ẍ"/>
<when state="dead: Ω" output="ξ"/>
<when state="dead: α" output="ξ"/>
</action>
<action id="y">
<when state="none" output="y"/>
@@ -1637,19 +1637,19 @@
<when state="dead: ¯" output="ȳ"/>
<when state="dead: ´" output="ý"/>
<when state="dead: ˚" output="ẙ"/>
<when state="dead: Ω" output="υ"/>
<when state="dead: α" output="υ"/>
</action>
<action id="z">
<when state="none" output="z"/>
<when state="dead: ´" output="ź"/>
<when state="dead: ˇ" output="ž"/>
<when state="dead: ˚" output="ż"/>
<when state="dead: Ω" output="ζ"/>
<when state="dead: α" output="ζ"/>
<when state="dead: √" output="↯"/>
</action>
<action id="{">
<when state="none" output="{"/>
<when state="dead: Ω" output="₍"/>
<when state="dead: α" output="₍"/>
</action>
<action id="|">
<when state="none" output="|"/>
@@ -1657,7 +1657,7 @@
</action>
<action id="}">
<when state="none" output="}"/>
<when state="dead: Ω" output="₎"/>
<when state="dead: α" output="₎"/>
</action>
<action id="~">
<when state="none" output="~"/>
@@ -1745,7 +1745,7 @@
<when state="none" next="dead: ˚"/>
</action>
<action id="Ω">
<when state="none" next="dead: Ω"/>
<when state="none" next="dead: α"/>
</action>
<action id="√">
<when state="none" next="dead: √"/>
@@ -1761,7 +1761,7 @@
<when state="dead: ´" output="´"/>
<when state="dead: ˇ" output="ˇ"/>
<when state="dead: ˚" output="˚"/>
<when state="dead: Ω" output="Ω"/>
<when state="dead: α" output="α"/>
<when state="dead: √" output=" "/>
</terminators>
</keyboard>

View File

@@ -1023,60 +1023,60 @@
<actions>
<action id="!">
<when state="none" output="!"/>
<when state="dead: Ω" output="₁"/>
<when state="dead: α" output="₁"/>
<when state="dead: √" output="≠"/>
</action>
<action id="&#x0022;">
<when state="none" output="&#x0022;"/>
<when state="dead: Ω" output="₊"/>
<when state="dead: α" output="₊"/>
<when state="dead: √" output="″"/>
</action>
<action id="#">
<when state="none" output="#"/>
<when state="dead: ˇ" output="Ǯ"/>
<when state="dead: Ω" output="₃"/>
<when state="dead: α" output="₃"/>
</action>
<action id="$">
<when state="none" output="$"/>
<when state="dead: Ω" output="₄"/>
<when state="dead: α" output="₄"/>
</action>
<action id="%">
<when state="none" output="%"/>
<when state="dead: Ω" output="₅"/>
<when state="dead: α" output="₅"/>
<when state="dead: √" output="‰"/>
</action>
<action id="&#x0026;">
<when state="none" output="&#x0026;"/>
<when state="dead: Ω" output="₇"/>
<when state="dead: α" output="₇"/>
<when state="dead: √" output="∧"/>
</action>
<action id="&#x0027;">
<when state="none" output="&#x0027;"/>
<when state="dead: Ω" output="₌"/>
<when state="dead: α" output="₌"/>
<when state="dead: √" output=""/>
</action>
<action id="(">
<when state="none" output="("/>
<when state="dead: Ω" output="₉"/>
<when state="dead: α" output="₉"/>
</action>
<action id=")">
<when state="none" output=")"/>
<when state="dead: Ω" output="₀"/>
<when state="dead: α" output="₀"/>
</action>
<action id="*">
<when state="none" output="*"/>
<when state="dead: Ω" output="₈"/>
<when state="dead: α" output="₈"/>
<when state="dead: √" output="⊗"/>
</action>
<action id="+">
<when state="none" output="+"/>
<when state="dead: ¬" output="⇔"/>
<when state="dead: Ω" output="⁺"/>
<when state="dead: α" output="⁺"/>
<when state="dead: √" output="⊕"/>
</action>
<action id="-">
<when state="none" output="-"/>
<when state="dead: Ω" output="⁻"/>
<when state="dead: α" output="⁻"/>
<when state="dead: √" output="±"/>
</action>
<action id=".">
@@ -1085,32 +1085,32 @@
</action>
<action id="0">
<when state="none" output="0"/>
<when state="dead: Ω" output="⁰"/>
<when state="dead: α" output="⁰"/>
</action>
<action id="1">
<when state="none" output="1"/>
<when state="dead: ¬" output="№"/>
<when state="dead: ¯" output=""/>
<when state="dead: Ω" output="¹"/>
<when state="dead: α" output="¹"/>
</action>
<action id="2">
<when state="none" output="2"/>
<when state="dead: ¬" output="½"/>
<when state="dead: ¯" output=""/>
<when state="dead: Ω" output="²"/>
<when state="dead: α" output="²"/>
</action>
<action id="3">
<when state="none" output="3"/>
<when state="dead: ¬" output="⅓"/>
<when state="dead: ¯" output="—"/>
<when state="dead: ˇ" output="ǯ"/>
<when state="dead: Ω" output="³"/>
<when state="dead: α" output="³"/>
<when state="dead: √" output="∛"/>
</action>
<action id="4">
<when state="none" output="4"/>
<when state="dead: ¬" output="¼"/>
<when state="dead: Ω" output="⁴"/>
<when state="dead: α" output="⁴"/>
<when state="dead: √" output="∜"/>
</action>
<action id="5">
@@ -1120,29 +1120,29 @@
<when state="dead: ´" output="´"/>
<when state="dead: ˇ" output="ˇ"/>
<when state="dead: ˚" output="˚"/>
<when state="dead: Ω" output="⁵"/>
<when state="dead: α" output="⁵"/>
</action>
<action id="6">
<when state="none" output="6"/>
<when state="dead: ¬" output="¾"/>
<when state="dead: Ω" output="⁶"/>
<when state="dead: α" output="⁶"/>
</action>
<action id="6 option">
<when state="none" next="dead: ^"/>
</action>
<action id="7">
<when state="none" output="7"/>
<when state="dead: Ω" output="⁷"/>
<when state="dead: α" output="⁷"/>
<when state="dead: √" output="∡"/>
</action>
<action id="8">
<when state="none" output="8"/>
<when state="dead: Ω" output="⁸"/>
<when state="dead: α" output="⁸"/>
<when state="dead: √" output="∠"/>
</action>
<action id="9">
<when state="none" output="9"/>
<when state="dead: Ω" output="⁹"/>
<when state="dead: α" output="⁹"/>
<when state="dead: √" output="∟"/>
</action>
<action id=":">
@@ -1151,7 +1151,7 @@
</action>
<action id=";">
<when state="none" output=";"/>
<when state="dead: Ω" output="₋"/>
<when state="dead: α" output="₋"/>
<when state="dead: √" output="∵"/>
</action>
<action id="&#x003C;">
@@ -1161,7 +1161,7 @@
<action id="=">
<when state="none" output="="/>
<when state="dead: ¬" output="↔"/>
<when state="dead: Ω" output="⁼"/>
<when state="dead: α" output="⁼"/>
<when state="dead: √" output="≝"/>
</action>
<action id="&#x003E;">
@@ -1170,7 +1170,7 @@
</action>
<action id="@">
<when state="none" output="@"/>
<when state="dead: Ω" output="₂"/>
<when state="dead: α" output="₂"/>
</action>
<action id="A">
<when state="none" output="A"/>
@@ -1182,14 +1182,14 @@
<when state="dead: ´" output="Á"/>
<when state="dead: ˇ" output="Ǎ"/>
<when state="dead: ˚" output="Å"/>
<when state="dead: Ω" output="Α"/>
<when state="dead: α" output="Α"/>
<when state="dead: √" output="∀"/>
</action>
<action id="B">
<when state="none" output="B"/>
<when state="dead: ¯" output="Ƀ"/>
<when state="dead: ´" output="Ɓ"/>
<when state="dead: Ω" output="Β"/>
<when state="dead: α" output="Β"/>
<when state="dead: √" output="⊇"/>
</action>
<action id="C">
@@ -1199,14 +1199,14 @@
<when state="dead: ´" output="Ć"/>
<when state="dead: ˇ" output="Č"/>
<when state="dead: ˚" output="Ċ"/>
<when state="dead: Ω" output="Χ"/>
<when state="dead: α" output="Χ"/>
<when state="dead: √" output=""/>
</action>
<action id="D">
<when state="none" output="D"/>
<when state="dead: ¯" output="Đ"/>
<when state="dead: ˇ" output="Ď"/>
<when state="dead: Ω" output="Δ"/>
<when state="dead: α" output="Δ"/>
<when state="dead: √" output="∇"/>
</action>
<action id="E">
@@ -1218,12 +1218,12 @@
<when state="dead: ´" output="É"/>
<when state="dead: ˇ" output="Ě"/>
<when state="dead: ˚" output="Ė"/>
<when state="dead: Ω" output="Ε"/>
<when state="dead: α" output="Ε"/>
<when state="dead: √" output="∃"/>
</action>
<action id="F">
<when state="none" output="F"/>
<when state="dead: Ω" output="Φ"/>
<when state="dead: α" output="Φ"/>
<when state="dead: √" output="∎"/>
</action>
<action id="G">
@@ -1233,7 +1233,7 @@
<when state="dead: ´" output="Ǵ"/>
<when state="dead: ˇ" output="Ǧ"/>
<when state="dead: ˚" output="Ġ"/>
<when state="dead: Ω" output="Γ"/>
<when state="dead: α" output="Γ"/>
<when state="dead: √" output="⊃"/>
</action>
<action id="H">
@@ -1243,7 +1243,7 @@
<when state="dead: ¬" output="⇐"/>
<when state="dead: ¯" output="Ħ"/>
<when state="dead: ˇ" output="Ȟ"/>
<when state="dead: Ω" output="Θ"/>
<when state="dead: α" output="Θ"/>
<when state="dead: √" output="⊅"/>
</action>
<action id="I">
@@ -1257,20 +1257,20 @@
<when state="dead: ´" output="Í"/>
<when state="dead: ˇ" output="Ǐ"/>
<when state="dead: ˚" output="İ"/>
<when state="dead: Ω" output="Η"/>
<when state="dead: α" output="Η"/>
</action>
<action id="J">
<when state="none" output="J"/>
<when state="dead: ^" output="Ĵ"/>
<when state="dead: ¬" output="⇓"/>
<when state="dead: Ω" output="Ι"/>
<when state="dead: α" output="Ι"/>
</action>
<action id="K">
<when state="none" output="K"/>
<when state="dead: ¬" output="⇑"/>
<when state="dead: ´" output="Ḱ"/>
<when state="dead: ˇ" output="Ǩ"/>
<when state="dead: Ω" output="Κ"/>
<when state="dead: α" output="Κ"/>
<when state="dead: √" output="∌"/>
</action>
<action id="L">
@@ -1279,14 +1279,14 @@
<when state="dead: ¯" output="Ḻ"/>
<when state="dead: ´" output="Ł"/>
<when state="dead: ˇ" output="Ľ"/>
<when state="dead: Ω" output="Λ"/>
<when state="dead: α" output="Λ"/>
<when state="dead: √" output="∦"/>
</action>
<action id="M">
<when state="none" output="M"/>
<when state="dead: ¬" output="⇘"/>
<when state="dead: ´" output="Ḿ"/>
<when state="dead: Ω" output="Μ"/>
<when state="dead: α" output="Μ"/>
<when state="dead: √" output="∉"/>
</action>
<action id="N">
@@ -1295,7 +1295,7 @@
<when state="dead: ¬" output="⇙"/>
<when state="dead: ´" output="Ń"/>
<when state="dead: ˇ" output="Ň"/>
<when state="dead: Ω" output="Ν"/>
<when state="dead: α" output="Ν"/>
<when state="dead: √" output=""/>
</action>
<action id="O">
@@ -1307,19 +1307,19 @@
<when state="dead: ¯" output="Ō"/>
<when state="dead: ´" output="Ó"/>
<when state="dead: ˇ" output="Ǒ"/>
<when state="dead: Ω" output="Ο"/>
<when state="dead: α" output="Ο"/>
<when state="dead: √" output="∅"/>
</action>
<action id="P">
<when state="none" output="P"/>
<when state="dead: ¬" output="℗"/>
<when state="dead: ´" output="Ṕ"/>
<when state="dead: Ω" output="Π"/>
<when state="dead: α" output="Π"/>
<when state="dead: √" output=""/>
</action>
<action id="Q">
<when state="none" output="Q"/>
<when state="dead: Ω" output="Ω"/>
<when state="dead: α" output="Ω"/>
<when state="dead: √" output=""/>
</action>
<action id="R">
@@ -1327,7 +1327,7 @@
<when state="dead: ¬" output="®"/>
<when state="dead: ´" output="Ŕ"/>
<when state="dead: ˇ" output="Ř"/>
<when state="dead: Ω" output="Ρ"/>
<when state="dead: α" output="Ρ"/>
<when state="dead: √" output=""/>
</action>
<action id="S">
@@ -1336,7 +1336,7 @@
<when state="dead: ¬" output="℠"/>
<when state="dead: ´" output="Ś"/>
<when state="dead: ˇ" output="Š"/>
<when state="dead: Ω" output="Σ"/>
<when state="dead: α" output="Σ"/>
<when state="dead: √" output="∫"/>
</action>
<action id="T">
@@ -1344,7 +1344,7 @@
<when state="dead: ¬" output="℠"/>
<when state="dead: ¯" output="Ŧ"/>
<when state="dead: ˇ" output="Ť"/>
<when state="dead: Ω" output="Τ"/>
<when state="dead: α" output="Τ"/>
</action>
<action id="U">
<when state="none" output="U"/>
@@ -1357,24 +1357,24 @@
<when state="dead: ´" output="Ú"/>
<when state="dead: ˇ" output="Ǔ"/>
<when state="dead: ˚" output="Ů"/>
<when state="dead: Ω" output="Ω"/>
<when state="dead: α" output="Ω"/>
<when state="dead: √" output=""/>
</action>
<action id="V">
<when state="none" output="V"/>
<when state="dead: Ω" output="Β"/>
<when state="dead: α" output="Β"/>
</action>
<action id="W">
<when state="none" output="W"/>
<when state="dead: ^" output="Ŵ"/>
<when state="dead: ¨" output="Ẅ"/>
<when state="dead: ´" output="Ẃ"/>
<when state="dead: Ω" output="Ψ"/>
<when state="dead: α" output="Ψ"/>
</action>
<action id="X">
<when state="none" output="X"/>
<when state="dead: ¨" output="Ẍ"/>
<when state="dead: Ω" output="Ξ"/>
<when state="dead: α" output="Ξ"/>
<when state="dead: √" output="∄"/>
</action>
<action id="Y">
@@ -1384,27 +1384,27 @@
<when state="dead: ¨" output="Ÿ"/>
<when state="dead: ¯" output="Ȳ"/>
<when state="dead: ´" output="Ý"/>
<when state="dead: Ω" output="Υ"/>
<when state="dead: α" output="Υ"/>
</action>
<action id="Z">
<when state="none" output="Z"/>
<when state="dead: ´" output="Ź"/>
<when state="dead: ˇ" output="Ž"/>
<when state="dead: ˚" output="Ż"/>
<when state="dead: Ω" output="Ζ"/>
<when state="dead: α" output="Ζ"/>
<when state="dead: √" output=""/>
</action>
<action id="[">
<when state="none" output="["/>
<when state="dead: Ω" output="⁽"/>
<when state="dead: α" output="⁽"/>
</action>
<action id="]">
<when state="none" output="]"/>
<when state="dead: Ω" output="⁾"/>
<when state="dead: α" output="⁾"/>
</action>
<action id="^">
<when state="none" output="^"/>
<when state="dead: Ω" output="₆"/>
<when state="dead: α" output="₆"/>
<when state="dead: √" output="℘"/>
</action>
<action id="_">
@@ -1423,13 +1423,13 @@
<when state="dead: ´" output="á"/>
<when state="dead: ˇ" output="ǎ"/>
<when state="dead: ˚" output="å"/>
<when state="dead: Ω" output="α"/>
<when state="dead: α" output="α"/>
</action>
<action id="b">
<when state="none" output="b"/>
<when state="dead: ¯" output="ƀ"/>
<when state="dead: ´" output="ɓ"/>
<when state="dead: Ω" output="β"/>
<when state="dead: α" output="β"/>
<when state="dead: √" output="⊆"/>
</action>
<action id="c">
@@ -1439,14 +1439,14 @@
<when state="dead: ´" output="ć"/>
<when state="dead: ˇ" output="č"/>
<when state="dead: ˚" output="ċ"/>
<when state="dead: Ω" output="χ"/>
<when state="dead: α" output="χ"/>
<when state="dead: √" output="∝"/>
</action>
<action id="d">
<when state="none" output="d"/>
<when state="dead: ¯" output="đ"/>
<when state="dead: ˇ" output="ď"/>
<when state="dead: Ω" output="δ"/>
<when state="dead: α" output="δ"/>
<when state="dead: √" output="Δ"/>
</action>
<action id="dead: ©">
@@ -1461,11 +1461,11 @@
<when state="dead: ´" output="é"/>
<when state="dead: ˇ" output="ě"/>
<when state="dead: ˚" output="ė"/>
<when state="dead: Ω" output="ε"/>
<when state="dead: α" output="ε"/>
</action>
<action id="f">
<when state="none" output="f"/>
<when state="dead: Ω" output="φ"/>
<when state="dead: α" output="φ"/>
<when state="dead: √" output="ƒ"/>
</action>
<action id="g">
@@ -1475,7 +1475,7 @@
<when state="dead: ´" output="ǵ"/>
<when state="dead: ˇ" output="ǧ"/>
<when state="dead: ˚" output="ġ"/>
<when state="dead: Ω" output="γ"/>
<when state="dead: α" output="γ"/>
<when state="dead: √" output="⊂"/>
</action>
<action id="h">
@@ -1485,7 +1485,7 @@
<when state="dead: ¬" output="←"/>
<when state="dead: ¯" output="ħ"/>
<when state="dead: ˇ" output="ȟ"/>
<when state="dead: Ω" output="θ"/>
<when state="dead: α" output="θ"/>
<when state="dead: √" output="⊄"/>
</action>
<action id="i">
@@ -1498,7 +1498,7 @@
<when state="dead: ¯" output="ī"/>
<when state="dead: ´" output="í"/>
<when state="dead: ˇ" output="ǐ"/>
<when state="dead: Ω" output="η"/>
<when state="dead: α" output="η"/>
<when state="dead: √" output="∞"/>
</action>
<action id="j">
@@ -1506,14 +1506,14 @@
<when state="dead: ^" output="ĵ"/>
<when state="dead: ¬" output="↓"/>
<when state="dead: ˇ" output="ǰ"/>
<when state="dead: Ω" output="ι"/>
<when state="dead: α" output="ι"/>
</action>
<action id="k">
<when state="none" output="k"/>
<when state="dead: ¬" output="↑"/>
<when state="dead: ´" output="ḱ"/>
<when state="dead: ˇ" output="ǩ"/>
<when state="dead: Ω" output="κ"/>
<when state="dead: α" output="κ"/>
<when state="dead: √" output="∋"/>
</action>
<action id="l">
@@ -1522,14 +1522,14 @@
<when state="dead: ¯" output="ḻ"/>
<when state="dead: ´" output="ł"/>
<when state="dead: ˇ" output="ľ"/>
<when state="dead: Ω" output="λ"/>
<when state="dead: α" output="λ"/>
<when state="dead: √" output="∥"/>
</action>
<action id="m">
<when state="none" output="m"/>
<when state="dead: ¬" output="↘"/>
<when state="dead: ´" output="ḿ"/>
<when state="dead: Ω" output="μ"/>
<when state="dead: α" output="μ"/>
<when state="dead: √" output="∈"/>
</action>
<action id="n">
@@ -1538,7 +1538,7 @@
<when state="dead: ¬" output="↙"/>
<when state="dead: ´" output="ń"/>
<when state="dead: ˇ" output="ň"/>
<when state="dead: Ω" output="ν"/>
<when state="dead: α" output="ν"/>
<when state="dead: √" output="ⁿ"/>
</action>
<action id="o">
@@ -1550,26 +1550,26 @@
<when state="dead: ¯" output="ō"/>
<when state="dead: ´" output="ó"/>
<when state="dead: ˇ" output="ǒ"/>
<when state="dead: Ω" output="ο"/>
<when state="dead: α" output="ο"/>
<when state="dead: √" output="∘"/>
</action>
<action id="p">
<when state="none" output="p"/>
<when state="dead: ¬" output="℗"/>
<when state="dead: ´" output="ṕ"/>
<when state="dead: Ω" output="π"/>
<when state="dead: α" output="π"/>
<when state="dead: √" output="∂"/>
</action>
<action id="q">
<when state="none" output="q"/>
<when state="dead: Ω" output="ω"/>
<when state="dead: α" output="ω"/>
</action>
<action id="r">
<when state="none" output="r"/>
<when state="dead: ¬" output="®"/>
<when state="dead: ´" output="ŕ"/>
<when state="dead: ˇ" output="ř"/>
<when state="dead: Ω" output="ρ"/>
<when state="dead: α" output="ρ"/>
<when state="dead: √" output="√"/>
</action>
<action id="s">
@@ -1578,7 +1578,7 @@
<when state="dead: ¬" output="§"/>
<when state="dead: ´" output="ś"/>
<when state="dead: ˇ" output="š"/>
<when state="dead: Ω" output="σ"/>
<when state="dead: α" output="σ"/>
<when state="dead: √" output="∩"/>
</action>
<action id="space">
@@ -1600,7 +1600,7 @@
<when state="dead: ¬" output="™"/>
<when state="dead: ¯" output="ŧ"/>
<when state="dead: ˇ" output="ť"/>
<when state="dead: Ω" output="τ"/>
<when state="dead: α" output="τ"/>
</action>
<action id="u">
<when state="none" output="u"/>
@@ -1613,12 +1613,12 @@
<when state="dead: ´" output="ú"/>
<when state="dead: ˇ" output="ǔ"/>
<when state="dead: ˚" output="ů"/>
<when state="dead: Ω" output="ω"/>
<when state="dead: α" output="ω"/>
<when state="dead: √" output=""/>
</action>
<action id="v">
<when state="none" output="v"/>
<when state="dead: Ω" output="β"/>
<when state="dead: α" output="β"/>
</action>
<action id="w">
<when state="none" output="w"/>
@@ -1626,12 +1626,12 @@
<when state="dead: ¨" output="ẅ"/>
<when state="dead: ´" output="ẃ"/>
<when state="dead: ˚" output="ẘ"/>
<when state="dead: Ω" output="ψ"/>
<when state="dead: α" output="ψ"/>
</action>
<action id="x">
<when state="none" output="x"/>
<when state="dead: ¨" output="ẍ"/>
<when state="dead: Ω" output="ξ"/>
<when state="dead: α" output="ξ"/>
</action>
<action id="y">
<when state="none" output="y"/>
@@ -1641,19 +1641,19 @@
<when state="dead: ¯" output="ȳ"/>
<when state="dead: ´" output="ý"/>
<when state="dead: ˚" output="ẙ"/>
<when state="dead: Ω" output="υ"/>
<when state="dead: α" output="υ"/>
</action>
<action id="z">
<when state="none" output="z"/>
<when state="dead: ´" output="ź"/>
<when state="dead: ˇ" output="ž"/>
<when state="dead: ˚" output="ż"/>
<when state="dead: Ω" output="ζ"/>
<when state="dead: α" output="ζ"/>
<when state="dead: √" output="↯"/>
</action>
<action id="{">
<when state="none" output="{"/>
<when state="dead: Ω" output="₍"/>
<when state="dead: α" output="₍"/>
</action>
<action id="|">
<when state="none" output="|"/>
@@ -1661,7 +1661,7 @@
</action>
<action id="}">
<when state="none" output="}"/>
<when state="dead: Ω" output="₎"/>
<when state="dead: α" output="₎"/>
</action>
<action id="~">
<when state="none" output="~"/>
@@ -1755,7 +1755,7 @@
<when state="none" next="dead: ˚"/>
</action>
<action id="Ω">
<when state="none" next="dead: Ω"/>
<when state="none" next="dead: α"/>
</action>
<action id="√">
<when state="none" next="dead: √"/>
@@ -1771,7 +1771,7 @@
<when state="dead: ´" output="´"/>
<when state="dead: ˇ" output="ˇ"/>
<when state="dead: ˚" output="˚"/>
<when state="dead: Ω" output="Ω"/>
<when state="dead: α" output="α"/>
<when state="dead: √" output=" "/>
</terminators>
</keyboard>

View File

@@ -1762,7 +1762,7 @@
<when state="3" output="`"/>
<when state="4" output="¬"/>
<when state="5" output="˚"/>
<when state="6" output="Ω"/>
<when state="6" output="α"/>
<when state="7" output="^"/>
<when state="8" output="¨"/>
<when state="9" output="´"/>

View File

@@ -1774,7 +1774,7 @@
<when state="⌥'" output="´"/>
<when state="⌥⇧6" output="ˇ"/>
<when state="⌥7" output="˚"/>
<when state="⌥m" output="Ω"/>
<when state="⌥m" output="α"/>
<when state="⌥⇧m" output=" "/>
</terminators>
</keyboard>

View File

@@ -3,10 +3,10 @@
<plist version="1.0">
<dict>
<key>BuildVersion</key>
<string>2026.03.03</string>
<string>2026.03.04</string>
<key>ProjectName</key>
<string>EurKEY-macOS</string>
<key>SourceVersion</key>
<string>2026.03.03</string>
<string>2026.03.04</string>
</dict>
</plist>

View File

@@ -71,10 +71,24 @@ v2.0 renames all dead key states to their initializing key combination:
| ⌥⇧6 | ˇ |
| ⌥7 | ˚ |
| ⌥⇧7 | ¯ |
| ⌥m | Ω |
| ⌥m | α |
| ⌥⇧m | √ |
| ⌥\ | ¬ |
## Customization with Karabiner-Elements
macOS `.keylayout` files cannot distinguish between the FN key and other modifiers, and cannot remap FN to act as a custom modifier. To use FN (or any other key) as an additional modifier layer, use [Karabiner-Elements](https://karabiner-elements.pqrs.org/):
1. Install Karabiner-Elements.
2. In **Simple Modifications**, remap `fn` to a modifier key (e.g., `right_option`).
3. In **Complex Modifications**, add rules that map your desired key combinations to Unicode character outputs.
[Hammerspoon](https://www.hammerspoon.org/) is an alternative for Lua-based automation but does not intercept keystrokes at the same level as Karabiner.
## Known issues
- **Icon not visible in keyboard switcher badge (macOS Sonoma/Sequoia):** The template icon (which adapts to light/dark mode) disappears in the input source switching badge attached to text fields. This is a macOS bug affecting third-party template icons — Apple's built-in layouts are not affected. Non-template icons work correctly but lose dark mode adaptation.
## Notes on Ukelele and template icons
Template icons switch color with the system theme (dark/light). Ukelele's GUI checkbox for template icons does not save correctly — the `TISIconIsTemplate` flag must be set manually in `Info.plist`:

BIN
eurkey-layout-complete.pdf Normal file

Binary file not shown.

View File

@@ -91,7 +91,7 @@ for ver in "${VERSIONS[@]}"; do
<key>KLInfo_${layout_name}</key>
<dict>
<key>TICapsLockLanguageSwitchCapable</key>
<false/>
<true/>
<key>TISIconIsTemplate</key>
<true/>
<key>TISInputSourceID</key>

View File

@@ -163,8 +163,11 @@ def parse_keylayout(filepath):
# resolve layouts
layouts = root.findall(".//layout")
# build resolved key maps with all key codes from all layout entries
# build resolved key maps from all layout entries
# first pass: load ALL keys from each keyMapSet (base definitions)
# second pass: override with keys from layout entries that specify ranges
resolved = {}
seen_map_sets = set()
for layout in layouts:
map_set_id = layout.get("mapSet")
first_code = int(layout.get("first", "0"))
@@ -176,8 +179,13 @@ def parse_keylayout(filepath):
resolved[idx_str] = {}
for code_str, entry in keys.items():
code = int(code_str)
if first_code <= code <= last_code:
if map_set_id not in seen_map_sets:
# first time seeing this mapSet: include all keys
resolved[idx_str][code_str] = entry
elif first_code <= code <= last_code:
# subsequent layout with same mapSet: only override in range
resolved[idx_str][code_str] = entry
seen_map_sets.add(map_set_id)
# build the final keyMaps output
key_maps = {}

View File

@@ -185,7 +185,12 @@ V1_2_EXCEPTIONS = {
# Shift+Option S: v1.2 has § where v1.3 has ẞ (capital sharp s)
"4:1": {"output": "§"},
# v1.2 does not have the ¬ (negation) dead key — added in v1.3
# instead, Option+- has the © dead key, and Option+\ outputs plain ¬
"_dead_key_skip": ["dead: ¬"],
"3:27": {"deadKey": "dead: ©"}, # Option+-: © dead key instead of ¬ dead key
"3:42": {"output": "¬"}, # Option+\: plain ¬ instead of ¬ dead key
"4:27": {"output": ""}, # Shift+Option+-: № instead of ✗
"5:27": {"deadKey": "dead: ©"}, # Caps+Option+-: © dead key instead of ¬ dead key
}
# v1.4 differences from v1.3:
@@ -194,6 +199,7 @@ V1_2_EXCEPTIONS = {
V1_4_EXCEPTIONS = {
"2:10": {"output": ""}, # Caps: §/` → ẞ (capital sharp s)
"5:10": {"output": ""}, # Caps+Option: §/` → ẞ
"5:27": {"output": ""}, # Caps+Option+-: no output (missing ¬ dead key in this layer)
"dead:dead: ¬:extra:¬": True, # extra ¬ composition in negation dead key
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
spec/windows/eurkey12/setup.exe Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.