keyboard/altgr/eurkey: composition modes from pdf and changelog
authorMischa POSLAWSKY <perl@shiar.org>
Thu, 28 Dec 2023 04:45:48 +0000 (05:45 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Mon, 1 Jan 2024 02:41:45 +0000 (03:41 +0100)
Shiar_Sheet/Keyboard.pm
keyboard/altgr/eurkey.eng.inc.pl

index bf25477dcdabe07de775791ef055484ce1913e96..327b20c01df7f38cb737be2e1b0f75426c42d568 100644 (file)
@@ -6,7 +6,7 @@ use warnings;
 no  warnings 'uninitialized';  # save some useless checks for more legible code
 use Carp;
 
-our $VERSION = '2.09';
+our $VERSION = '2.10';
 
 my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta');
 my @rowdesc = qw(numeric top home bottom);
@@ -56,6 +56,7 @@ sub escapeclass {
        s/\+/_m/g;
        s/\[/_sbo/g;
        s/\]/_sbc/g;
+       s/\\/_b/g;
        s/^$/_/;
        return $_;
 }
index 1e73e21e7401b19402b74839d0f313aac08b5484..cc820e74d2aef1eadbcb9e527cc55c0a584efcbe 100644 (file)
@@ -4,6 +4,28 @@ use warnings;
 
 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' => '⇘',
+       '=' => '↔',
+       '+' => '⇔',
+);
+
 our %rows = (
        '1' => '¡',
        '!' => '¹',
@@ -101,10 +123,167 @@ our %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
+
+       # suþscript
+       'm1' => '¹',
+       'm2' => '²',
+       'm3' => '³',
+       'm4' => '⁴',
+       'm5' => '⁵',
+       'm6' => '⁶',
+       'm7' => '⁷',
+       'm8' => '⁸',
+       'm9' => '⁹',
+       'm0' => '⁰',
+       'm!' => '₁',
+       'm@' => '₂',
+       'm#' => '₃',
+       'm$' => '₄',
+       'm%' => '₅',
+       'm^' => '₆',
+       'm&' => '₇',
+       'm*' => '₈',
+       'm(' => '₉',
+       'm)' => '₀',
+
+       # maths
+       'M!' => '≠',
+       'M~' => '≈',
+       'M=' => '≝',
+       'M>' => '≥',
+       'M<' => '≤',
+       'M-' => '±',
+       'Mi' => '∞',
+       'Mn' => 'ⁿ',
+       'Mr' => '√',
+       'M3' => '∛',
+       'M4' => '∜',
+       'M%' => '‰',
+
+       'Mf' => 'ƒ',
+       'MS' => '∫',
+       "M'" => '′',
+       'M"' => '″',
+       'Mp' => '∂',
+       'Md' => 'Δ',
+       'MD' => '∇',
+       'M+' => '⊕',
+       'M*' => '⊗',
+       'M^' => '℘',
+
+       'Ms' => '∩',
+       'Mu' => '∪',
+       'MU' => '∖',
+       'MO' => '∅',
+       'Mg' => '⊂',
+       'MG' => '⊃',
+       'Mh' => '⊄',
+       'MH' => '⊅',
+       'Mb' => '⊆',
+       'MB' => '⊇',
+       'Mm' => '∈',
+       'MM' => '∉',
+       'Mk' => '∋',
+       'MK' => '∌',
+
+       'MA' => '∀',
+       'ME' => '∃',
+       'MX' => '∄',
+       'M&' => '∧',
+       'M|' => '∨',
+       'Mc' => '∝',
+       'M.' => '⋅',
+       'Mo' => '∘',
+       'M:' => '∴',
+       'M;' => '∵',
+       'Mz' => '↯',
+       'MF' => '∎',
+
+       'MR' => 'ℝ',
+       'MC' => 'ℂ',
+       'MN' => 'ℕ',
+       'MP' => 'ℙ',
+       'MQ' => 'ℚ',
+       'MZ' => 'ℤ',
+       'M9' => '∟',
+       'M8' => '∠',
+       'M7' => '∡',
+       'Ml' => '∥',
+       'ML' => '∦',
+
+       # symbols
+       '-1' => '¼',
+       '-2' => '½',
+       '-3' => '¾',
+       '-4' => '⅓',
+       '-5' => '⅔',
+       '-c' => '©',
+       '-p' => '℗',
+       '-r' => '®',
+       '-s' => '℠',
+       '-t' => '™',
+
+       '\s' => '§',
+       '\1' => '№',
+       '\2' => '½',
+       '\3' => '⅓',
+       '\4' => '¼',
+       '\5' => '⅔',
+       '\6' => '¾',
+       '\c' => '©',
+       '\p' => '℗',
+       '\r' => '®',
+       '\t' => '™',
+       '\T' => '℠',
+
+       (map { ($presymbol.$_ => $arrows{$_}) } keys %arrows),
 );
 
+my $groups = do 'keyboard/altgr/groups.inc.pl';
+$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"];
+
 +{
-       %{ do 'keyboard/altgr/groups.inc.pl' },
+       %{$groups},
        version => '1.0',
        title => 'EurKEY',
        intro => join("\n",