keyboard/altgr: classify glyphs within submodes
[sheet.git] / keyboard / altgr / macos-abc.eng.inc.pl
index f4a4a0023d6c2192fb5a2c045e58e760594dba06..a2cdb1832bdb238d11455175192672e55651611c 100644 (file)
@@ -4,6 +4,7 @@ use warnings;
 do './keyboard/altgr/groups.inc.pl';
 
 my %rows = (
+       '' => {
        'A' => "\N{MACRON}",
        'a' => "\N{COMBINING MACRON}",
        'B' => "\N{BREVE}",
@@ -98,109 +99,101 @@ my %rows = (
        '_' => '—',
        '+' => '±',
        '=' => '≠',
+       },
 
-       '::' => ' ',
-       ':@' => 'Ƨ',
-       ':2' => 'ƨ',
-       ':#' => 'Ɛ',
-       ':3' => 'ɛ',
-       ':%' => 'Ƽ',
-       ':5' => 'ƽ',
-       ':^' => 'Ƅ',
-       ':6' => 'ƅ', #XXX
-       ':7' => '⁊',
-       ':*' => 'Ȣ',
-       ':8' => 'ȣ',
-       ':Q' => 'Ƣ',
-       ':q' => 'ƣ',
-       ':W' => 'Ƿ',
-       ':w' => 'ƿ',
-       ':E' => 'Ǝ',
-       ':e' => 'ǝ', #XXX ə
-       ':R' => 'Ʀ',
-       ':r' => 'ʀ', #XXX
-       ':k' => 'ĸ',
-       ':Y' => 'Ɜ',
-       ':y' => 'ɜ',
-       ':U' => 'Ʊ',
-       ':u' => 'ʊ',
-       ':A' => 'Ə',
-       ':a' => 'ə',
-       ':s' => 'ſ',
-       ':G' => 'Ɣ',
-       ':g' => 'ɣ',
-       ':H' => 'Ƕ',
-       ':h' => 'ƕ',
-       ':J' => 'Ƞ',
-       ':j' => 'ƞ', #XXX ɳ
-       ':K' => 'Ǩ',
-       ':Z' => 'Ʒ',
-       ':z' => 'ʒ',
-       ':C' => 'Ɔ',
-       ':c' => 'ɔ',
-       ':v' => 'ʌ',
-       ':N' => 'Ŋ', #XXX
-       ':n' => 'ŋ',
-       ':M' => 'Ɯ',
-       ':m' => 'ɯ',
-       ':"' => '″', #XXX ʺ
-       ":'" => '′', #XXX ʹ
+       ':' => {
+               '@' => 'Ƨ',
+               '2' => 'ƨ',
+               '#' => 'Ɛ',
+               '3' => 'ɛ',
+               '%' => 'Ƽ',
+               '5' => 'ƽ',
+               '^' => 'Ƅ',
+               '6' => 'ƅ', #XXX
+               '7' => '⁊',
+               '*' => 'Ȣ',
+               '8' => 'ȣ',
+               'Q' => 'Ƣ',
+               'q' => 'ƣ',
+               'W' => 'Ƿ',
+               'w' => 'ƿ',
+               'E' => 'Ǝ',
+               'e' => 'ǝ', #XXX ə
+               'R' => 'Ʀ',
+               'r' => 'ʀ', #XXX
+               'k' => 'ĸ',
+               'Y' => 'Ɜ',
+               'y' => 'ɜ',
+               'U' => 'Ʊ',
+               'u' => 'ʊ',
+               'A' => 'Ə',
+               'a' => 'ə',
+               's' => 'ſ',
+               'G' => 'Ɣ',
+               'g' => 'ɣ',
+               'H' => 'Ƕ',
+               'h' => 'ƕ',
+               'J' => 'Ƞ',
+               'j' => 'ƞ', #XXX ɳ
+               'K' => 'Ǩ',
+               'Z' => 'Ʒ',
+               'z' => 'ʒ',
+               'C' => 'Ɔ',
+               'c' => 'ɔ',
+               'v' => 'ʌ',
+               'N' => 'Ŋ', #XXX
+               'n' => 'ŋ',
+               'M' => 'Ɯ',
+               'm' => 'ɯ',
+               '"' => '″', #XXX ʺ
+               "'" => '′', #XXX ʹ
+       },
 
-       '>>' => ' ',
-       '>q' => 'ʠ',
-       '>R' => 'Ʈ', #XXX mirrored?
-       '>r' => 'ʈ',
-       '>T' => 'Ƭ',
-       '>t' => 'ƭ',
-       '>Y' => 'Ƴ',
-       '>y' => 'ƴ',
-       '>U' => 'Ʋ',
-       '>u' => 'ʋ',
-       '>I' => 'Ɩ',
-       '>i' => 'ɩ',
-       '>P' => 'Ƥ',
-       '>p' => 'ƥ',
-       '>S' => 'Ʃ',
-       '>s' => 'ʃ',
-       '>D' => 'Ɗ',
-       '>d' => 'ɗ',
-       '>F' => 'Ƒ',
-       '>f' => 'ƒ',
-       '>G' => 'Ɠ',
-       '>g' => 'ɠ',
-       '>h' => 'ɦ',
-       '>K' => 'Ƙ',
-       '>k' => 'ƙ',
-       '>Z' => 'Ȥ',
-       '>z' => 'ȥ',
-       '>X' => 'Ɖ',
-       '>x' => 'ɖ',
-       '>C' => 'Ƈ',
-       '>c' => 'ƈ',
-       '>N' => 'Ɲ',
-       '>n' => 'ɲ',
-       '>B' => 'Ɓ',
-       '>b' => 'ɓ',
+       '>' => {
+               'q' => 'ʠ',
+               'R' => 'Ʈ', #XXX mirrored?
+               'r' => 'ʈ',
+               'T' => 'Ƭ',
+               't' => 'ƭ',
+               'Y' => 'Ƴ',
+               'y' => 'ƴ',
+               'U' => 'Ʋ',
+               'u' => 'ʋ',
+               'I' => 'Ɩ',
+               'i' => 'ɩ',
+               'P' => 'Ƥ',
+               'p' => 'ƥ',
+               'S' => 'Ʃ',
+               's' => 'ʃ',
+               'D' => 'Ɗ',
+               'd' => 'ɗ',
+               'F' => 'Ƒ',
+               'f' => 'ƒ',
+               'G' => 'Ɠ',
+               'g' => 'ɠ',
+               'h' => 'ɦ',
+               'K' => 'Ƙ',
+               'k' => 'ƙ',
+               'Z' => 'Ȥ',
+               'z' => 'ȥ',
+               'X' => 'Ɖ',
+               'x' => 'ɖ',
+               'C' => 'Ƈ',
+               'c' => 'ƈ',
+               'N' => 'Ɲ',
+               'n' => 'ɲ',
+               'B' => 'Ɓ',
+               'b' => 'ɓ',
+       },
 );
 
-my $groups = kbchars(\%rows);
-$groups->{mode} = {
-       ''  => 'option-shifted ⌥',
-       ':' => '№ number prefix ⌥:',
-       '>' => 'ʔ hook prefix ⌥>',
-};
-for my $m (qw' : > ') {
-       $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 ⌥',
+               ':' => '№ number prefix ⌥:',
+               '>' => 'ʔ hook prefix ⌥>',
+       },
        version => '1.0',
        title => 'ABC option',
        intro => join("\n",