keyboard/altgr: classify glyphs within submodes
[sheet.git] / keyboard / altgr / eurkey.eng.inc.pl
index b2a98cbc0f422076954109a1891e7a73b4e000a2..33550f997097b33ffc2b7194172c5c8e2b1618f5 100644 (file)
@@ -6,28 +6,8 @@ do './keyboard/altgr/groups.inc.pl';
 my $V = v1.3;
 
 my $presymbol = $V ge v1.3 ? '\\' : '-';
-my %arrows = (
-       'h' => '←',
-       'H' => '⇐',
-       'j' => '↓',
-       'J' => '⇓',
-       'k' => '↑',
-       'K' => '⇑',
-       'l' => '→',
-       'L' => '⇒',
-       'u' => '↖',
-       'U' => '⇖',
-       'i' => '↗',
-       'I' => '⇗',
-       'n' => '↙',
-       'N' => '⇙',
-       'm' => '↘',
-       'M' => '⇘',
-       '=' => '↔',
-       '+' => '⇔',
-);
-
 my %rows = (
+       '' => {
        '1' => '¡',
        '!' => '¹',
        '2' => 'ª',
@@ -124,167 +104,179 @@ my %rows = (
        '>' => 'Ó',
        '/' => '¿',
        '?' => '…',
+       },
 
        # greek
-       'ma' => 'α',
-       'mb' => 'β', # v
-       'mg' => 'γ',
-       'md' => 'δ',
-       'me' => 'ε',
-       'mz' => 'ζ',
-       'mi' => 'η',
-       'mh' => 'θ',
-       'mj' => 'ι',
-       'mk' => 'κ',
-       'ml' => 'λ',
-       'mm' => 'μ',
-       'mn' => 'ν',
-       'mx' => 'ξ',
-       'mo' => 'ο',
-       'mp' => 'π',
-       'mr' => 'ρ',
-       'ms' => 'σ',
-       'mt' => 'τ',
-       'my' => 'υ',
-       'mf' => 'φ',
-       'mc' => 'χ',
-       'mw' => 'ψ',
-       'mq' => 'ω', # u
+       'm' => {
+               'a' => 'α',
+               'b' => 'β', # v
+               'g' => 'γ',
+               'd' => 'δ',
+               'e' => 'ε',
+               'z' => 'ζ',
+               'i' => 'η',
+               'h' => 'θ',
+               'j' => 'ι',
+               'k' => 'κ',
+               'l' => 'λ',
+               'm' => 'μ',
+               'n' => 'ν',
+               'x' => 'ξ',
+               'o' => 'ο',
+               'p' => 'π',
+               'r' => 'ρ',
+               's' => 'σ',
+               't' => 'τ',
+               'y' => 'υ',
+               'f' => 'φ',
+               'c' => 'χ',
+               'w' => 'ψ',
+               'q' => 'ω', # u
 
-       # suþscript
-       'm1' => '¹',
-       'm2' => '²',
-       'm3' => '³',
-       'm4' => '⁴',
-       'm5' => '⁵',
-       'm6' => '⁶',
-       'm7' => '⁷',
-       'm8' => '⁸',
-       'm9' => '⁹',
-       'm0' => '⁰',
-       'm!' => '₁',
-       'm@' => '₂',
-       'm#' => '₃',
-       'm$' => '₄',
-       'm%' => '₅',
-       'm^' => '₆',
-       'm&' => '₇',
-       'm*' => '₈',
-       'm(' => '₉',
-       'm)' => '₀',
+               # suþscript
+               '1' => '¹',
+               '2' => '²',
+               '3' => '³',
+               '4' => '⁴',
+               '5' => '⁵',
+               '6' => '⁶',
+               '7' => '⁷',
+               '8' => '⁸',
+               '9' => '⁹',
+               '0' => '⁰',
+               '!' => '₁',
+               '@' => '₂',
+               '#' => '₃',
+               '$' => '₄',
+               '%' => '₅',
+               '^' => '₆',
+               '&' => '₇',
+               '*' => '₈',
+               '(' => '₉',
+               ')' => '₀',
+       },
 
        # maths
-       'M!' => '≠',
-       'M~' => '≈',
-       'M=' => '≝',
-       'M>' => '≥',
-       'M<' => '≤',
-       'M-' => '±',
-       'Mi' => '∞',
-       'Mn' => 'ⁿ',
-       'Mr' => '√',
-       'M3' => '∛',
-       'M4' => '∜',
-       'M%' => '‰',
+       'M' => {
+               '!' => '≠',
+               '~' => '≈',
+               '=' => '≝',
+               '>' => '≥',
+               '<' => '≤',
+               '-' => '±',
+               'i' => '∞',
+               'n' => 'ⁿ',
+               'r' => '√',
+               '3' => '∛',
+               '4' => '∜',
+               '%' => '‰',
 
-       'Mf' => 'ƒ',
-       'MS' => '∫',
-       "M'" => '′',
-       'M"' => '″',
-       'Mp' => '∂',
-       'Md' => 'Δ',
-       'MD' => '∇',
-       'M+' => '⊕',
-       'M*' => '⊗',
-       'M^' => '℘',
+               'f' => 'ƒ',
+               'S' => '∫',
+               "'" => '′',
+               '"' => '″',
+               'p' => '∂',
+               'd' => 'Δ',
+               'D' => '∇',
+               '+' => '⊕',
+               '*' => '⊗',
+               '^' => '℘',
 
-       'Ms' => '∩',
-       'Mu' => '∪',
-       'MU' => '∖',
-       'MO' => '∅',
-       'Mg' => '⊂',
-       'MG' => '⊃',
-       'Mh' => '⊄',
-       'MH' => '⊅',
-       'Mb' => '⊆',
-       'MB' => '⊇',
-       'Mm' => '∈',
-       'MM' => '∉',
-       'Mk' => '∋',
-       'MK' => '∌',
+               's' => '∩',
+               'u' => '∪',
+               'U' => '∖',
+               'O' => '∅',
+               'g' => '⊂',
+               'G' => '⊃',
+               'h' => '⊄',
+               'H' => '⊅',
+               'b' => '⊆',
+               'B' => '⊇',
+               'm' => '∈',
+               'M' => '∉',
+               'k' => '∋',
+               'K' => '∌',
 
-       'MA' => '∀',
-       'ME' => '∃',
-       'MX' => '∄',
-       'M&' => '∧',
-       'M|' => '∨',
-       'Mc' => '∝',
-       'M.' => '⋅',
-       'Mo' => '∘',
-       'M:' => '∴',
-       'M;' => '∵',
-       'Mz' => '↯',
-       'MF' => '∎',
+               'A' => '∀',
+               'E' => '∃',
+               'X' => '∄',
+               '&' => '∧',
+               '|' => '∨',
+               'c' => '∝',
+               '.' => '⋅',
+               'o' => '∘',
+               ':' => '∴',
+               ';' => '∵',
+               'z' => '↯',
+               'F' => '∎',
 
-       'MR' => 'ℝ',
-       'MC' => 'ℂ',
-       'MN' => 'ℕ',
-       'MP' => 'ℙ',
-       'MQ' => 'ℚ',
-       'MZ' => 'ℤ',
-       'M9' => '∟',
-       'M8' => '∠',
-       'M7' => '∡',
-       'Ml' => '∥',
-       'ML' => '∦',
+               'R' => 'ℝ',
+               'C' => 'ℂ',
+               'N' => 'ℕ',
+               'P' => 'ℙ',
+               'Q' => 'ℚ',
+               'Z' => 'ℤ',
+               '9' => '∟',
+               '8' => '∠',
+               '7' => '∡',
+               'l' => '∥',
+               'L' => '∦',
+       },
 
        # symbols
-       '-1' => '¼',
-       '-2' => '½',
-       '-3' => '¾',
-       '-4' => '⅓',
-       '-5' => '⅔',
-       '-c' => '©',
-       '-p' => '℗',
-       '-r' => '®',
-       '-s' => '℠',
-       '-t' => '™',
-
-       '\s' => '§',
-       '\1' => '№',
-       '\2' => '½',
-       '\3' => '⅓',
-       '\4' => '¼',
-       '\5' => '⅔',
-       '\6' => '¾',
-       '\c' => '©',
-       '\p' => '℗',
-       '\r' => '®',
-       '\t' => '™',
-       '\T' => '℠',
+       $presymbol => {
+               't' => '™',
+               'c' => '©',
+               'p' => '℗',
+               'r' => '®',
+                       $V lt v1.3 ? (
+               '1' => '¼',
+               '2' => '½',
+               '3' => '¾',
+               '4' => '⅓',
+               '5' => '⅔',
+               's' => '℠',
+                       ) : (
+               's' => '§',
+               '1' => '№',
+               '2' => '½',
+               '3' => '⅓',
+               '4' => '¼',
+               '5' => '⅔',
+               '6' => '¾',
+               'T' => '℠',
+                       ),
 
-       (map { ($presymbol.$_ => $arrows{$_}) } keys %arrows),
+               # arrows
+               'h' => '←',
+               'H' => '⇐',
+               'j' => '↓',
+               'J' => '⇓',
+               'k' => '↑',
+               'K' => '⇑',
+               'l' => '→',
+               'L' => '⇒',
+               'u' => '↖',
+               'U' => '⇖',
+               'i' => '↗',
+               'I' => '⇗',
+               'n' => '↙',
+               'N' => '⇙',
+               'm' => '↘',
+               'M' => '⇘',
+               '=' => '↔',
+               '+' => '⇔',
+       },
 );
 
-my $groups = kbchars(\%rows);
-$groups->{mode} = {
-       ''  => 'option-shifted ⌥',
-       'm' => 'Ω greek prefix ⌥m',
-       'M' => '√ maths prefix ⌥M',
-       $presymbol => "$rows{$presymbol} symbol prefix ⌥$presymbol",
-};
-for my $m (qw' m M ', $presymbol) {
-       $groups->{def}->{''}->{$m} = "g1 mode$m";
-       $groups->{mode}->{$m} //= "mode $m";
-       $groups->{def}->{$m} = {
-               (map {s/^.//r => 'g0'} grep {/^\Q$m/} keys %rows),
-               $m => 'g1 mode',
-       };
-}
-$groups->{flag}->{g1} = ['mode' => "switch to an alternate set of keys"];
-
 +{
-       %{$groups},
+       %{ kbmodes(\%rows) },
+       mode => {
+               ''  => 'option-shifted ⌥',
+               'm' => 'Ω greek prefix ⌥m',
+               'M' => '√ maths prefix ⌥M',
+               $presymbol => "$rows{$presymbol} symbol prefix ⌥$presymbol",
+       },
        version => '1.0',
        title => 'EurKEY',
        intro => join("\n",