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);
s/\+/_m/g;
s/\[/_sbo/g;
s/\]/_sbc/g;
+ s/\\/_b/g;
s/^$/_/;
return $_;
}
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' => '¡',
'!' => '¹',
'>' => 'Ó',
'/' => '¿',
'?' => '…',
+
+ # 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",