use utf8;
use strict;
use warnings;
-do './keyboard/altgr/groups.inc.pl';
+use Shiar_Sheet::KeyboardChars 'kbmodes';
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' => 'ª',
'>' => 'Ó',
'/' => '¿',
'?' => '…',
+ },
# 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' => 'β',
+ 'g' => 'γ',
+ 'd' => 'δ',
+ 'e' => 'ε',
+ 'z' => 'ζ',
+ 'i' => 'η',
+ 'h' => 'θ',
+ 'j' => 'ι',
+ 'k' => 'κ',
+ 'l' => 'λ',
+ 'm' => 'μ',
+ 'n' => 'ν',
+ 'x' => 'ξ',
+ 'o' => 'ο',
+ 'p' => 'π',
+ 'r' => 'ρ',
+ 's' => 'σ',
+ 't' => 'τ',
+ 'y' => 'υ',
+ 'f' => 'φ',
+ 'c' => 'χ',
+ 'w' => 'ψ',
+ 'q' => 'ω',
+
+ # aliases
+ 'v' => \'mb',
+ 'V' => \'mB',
+ 'u' => \'mq',
+ 'U' => \'mQ',
- # 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' => '™',
+ $presymbol => {
+ 't' => '™',
+ 'c' => '©',
+ 'p' => '℗',
+ 'r' => '®',
+ $V lt v1.3 ? (
+ '1' => '¼',
+ '2' => '½',
+ '3' => '¾',
+ '4' => '⅓',
+ '5' => '⅔',
+ 's' => '℠',
+ ) : (
+ 's' => '§',
+ '1' => '№',
+ '2' => '½',
+ '3' => '⅓',
+ '4' => '¼',
+ '5' => '⅔',
+ '6' => '¾',
+ 'T' => '℠',
+ ),
- '\s' => '§',
- '\1' => '№',
- '\2' => '½',
- '\3' => '⅓',
- '\4' => '¼',
- '\5' => '⅔',
- '\6' => '¾',
- '\c' => '©',
- '\p' => '℗',
- '\r' => '®',
- '\t' => '™',
- '\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"];
+# uppercase greek
+$rows{m}{uc $_} //= uc $rows{m}{$_} for keys %{ $rows{m} };
+{
- %{$groups},
- version => '1.0',
+ %{ kbmodes(\%rows) },
+ mode => {
+ '' => 'option-shifted ⌥',
+ 'm' => 'Ω greek prefix ⌥m',
+ 'M' => '√ maths prefix ⌥M',
+ $presymbol => "$rows{''}{$presymbol} symbol prefix ⌥$presymbol",
+ },
+ version => '1.2',
title => 'EurKEY',
+ category => 'latin/thirdparty/xorg',
intro => join("\n",
'Third-party proposal <a href="https://eurkey.steffen.bruentjen.eu/">EurKEY</a>',
'<abbr title="last updated 2017-05-15">v1.3</abbr> by Steffen Brüntjen',
description => [
"An interactive map of EurKEY, the European Keyboard Layout.",
],
- image => 'keyboard/altgr/eurkeyboard.jpg',
+ image => 'data/keyboard/thumb/eurkeyboard.jpg',
+ imagealt => 'Right alt on the EurKEYboard created by Psy-Q',
}