keyboard/altgr/eurkey: composition modes from pdf and changelog
[sheet.git] / keyboard / altgr / eurkey.eng.inc.pl
1 use utf8;
2 use strict;
3 use warnings;
4
5 my $V = v1.3;
6
7 my $presymbol = $V ge v1.3 ? '\\' : '-';
8 my %arrows = (
9         'h' => '←',
10         'H' => '⇐',
11         'j' => '↓',
12         'J' => '⇓',
13         'k' => '↑',
14         'K' => '⇑',
15         'l' => '→',
16         'L' => '⇒',
17         'u' => '↖',
18         'U' => '⇖',
19         'i' => '↗',
20         'I' => '⇗',
21         'n' => '↙',
22         'N' => '⇙',
23         'm' => '↘',
24         'M' => '⇘',
25         '=' => '↔',
26         '+' => '⇔',
27 );
28
29 our %rows = (
30         '1' => '¡',
31         '!' => '¹',
32         '2' => 'ª',
33         '@' => '²',
34         '3' => 'º',
35         '#' => '³',
36         '4' => $V ge v1.1 ? '£' : '€',
37         '$' => '¥',
38         '5' => $V ge v1.1 ? '€' : '£',
39         '%' => '¢',
40         '6' => "\N{COMBINING CIRCUMFLEX ACCENT}",
41         '^' => "\N{COMBINING CARON}",
42         '7' => "\N{COMBINING RING ABOVE}",
43         '&' => "\N{COMBINING MACRON}",
44         '8' => "\N{DOUBLE LOW-9 QUOTATION MARK}",
45         '*' => "\N{SINGLE LOW-9 QUOTATION MARK}",
46         '9' => "\N{LEFT DOUBLE QUOTATION MARK}",
47         '(' => "\N{LEFT SINGLE QUOTATION MARK}",
48         '0' => "\N{RIGHT DOUBLE QUOTATION MARK}",
49         ')' => "\N{RIGHT SINGLE QUOTATION MARK}",
50         '-' => $V ge v1.3 ? '✓' : '©',
51         '_' => $V ge v1.3 ? '✗' : '№',
52         '=' => '×',
53         '+' => '÷',
54         'q' => 'æ',
55         'Q' => 'Æ',
56         'w' => 'å',
57         'W' => 'Å',
58         'e' => 'ë',
59         'E' => 'Ë',
60         'r' => 'ý',
61         'R' => 'Ý',
62         't' => 'þ',
63         'T' => 'Þ',
64         'y' => 'ÿ',
65         'Y' => 'Ÿ',
66         'u' => 'ü',
67         'U' => 'Ü',
68         'i' => 'ï',
69         'I' => 'Ï',
70         'o' => 'ö',
71         'O' => 'Ö',
72         'p' => 'œ',
73         'P' => 'Œ',
74         '[' => '«',
75         '{' => '‹',
76         ']' => '»',
77         '}' => '›',
78
79         'a' => 'ä',
80         'A' => 'Ä',
81         's' => 'ß',
82         'S' => $V ge v1.3 ? 'ẞ' : '¶',
83         'd' => $V ge v1.2 ? 'đ' : 'ð',
84         'D' => $V ge v1.2 ? 'Đ' : 'Ð',
85         'f' => 'è',
86         'F' => 'È',
87         'g' => 'é',
88         'G' => 'É',
89         'h' => 'ù',
90         'H' => 'Ù',
91         'j' => 'ú',
92         'J' => 'Ú',
93         'k' => 'ij',
94         'K' => 'IJ',
95         'l' => 'ø',
96         'L' => 'Ø',
97         ';' => $V ge v1.2 ? '°' : "\N{COMBINING DIAERESIS}",
98         ':' => '·',
99         "'" => "\N{COMBINING ACUTE ACCENT}",
100         '"' => $V ge v1.2 ? "\N{COMBINING DIAERESIS}" : '†',
101         '`' => "\N{COMBINING GRAVE ACCENT}",
102         '~' => "\N{COMBINING TILDE}",
103
104         '\\'=> '¬',
105         '|' => '¦',
106         'z' => 'à',
107         'Z' => 'À',
108         'x' => 'á',
109         'X' => 'Á',
110         'c' => 'ç',
111         'C' => 'Ç',
112         'v' => 'ì',
113         'V' => 'Ì',
114         'b' => 'í',
115         'B' => 'Í',
116         'n' => 'ñ',
117         'N' => 'Ñ',
118         'm' => 'Ω',
119         'M' => '√', # ±
120         ',' => 'ò',
121         '<' => 'Ò',
122         '.' => 'ó',
123         '>' => 'Ó',
124         '/' => '¿',
125         '?' => '…',
126
127         # greek
128         'ma' => 'α',
129         'mb' => 'β', # v
130         'mg' => 'γ',
131         'md' => 'δ',
132         'me' => 'ε',
133         'mz' => 'ζ',
134         'mi' => 'η',
135         'mh' => 'θ',
136         'mj' => 'ι',
137         'mk' => 'κ',
138         'ml' => 'λ',
139         'mm' => 'μ',
140         'mn' => 'ν',
141         'mx' => 'ξ',
142         'mo' => 'ο',
143         'mp' => 'π',
144         'mr' => 'ρ',
145         'ms' => 'σ',
146         'mt' => 'τ',
147         'my' => 'υ',
148         'mf' => 'φ',
149         'mc' => 'χ',
150         'mw' => 'ψ',
151         'mq' => 'ω', # u
152
153         # suþscript
154         'm1' => '¹',
155         'm2' => '²',
156         'm3' => '³',
157         'm4' => '⁴',
158         'm5' => '⁵',
159         'm6' => '⁶',
160         'm7' => '⁷',
161         'm8' => '⁸',
162         'm9' => '⁹',
163         'm0' => '⁰',
164         'm!' => '₁',
165         'm@' => '₂',
166         'm#' => '₃',
167         'm$' => '₄',
168         'm%' => '₅',
169         'm^' => '₆',
170         'm&' => '₇',
171         'm*' => '₈',
172         'm(' => '₉',
173         'm)' => '₀',
174
175         # maths
176         'M!' => '≠',
177         'M~' => '≈',
178         'M=' => '≝',
179         'M>' => '≥',
180         'M<' => '≤',
181         'M-' => '±',
182         'Mi' => '∞',
183         'Mn' => 'ⁿ',
184         'Mr' => '√',
185         'M3' => '∛',
186         'M4' => '∜',
187         'M%' => '‰',
188
189         'Mf' => 'ƒ',
190         'MS' => '∫',
191         "M'" => '′',
192         'M"' => '″',
193         'Mp' => '∂',
194         'Md' => 'Δ',
195         'MD' => '∇',
196         'M+' => '⊕',
197         'M*' => '⊗',
198         'M^' => '℘',
199
200         'Ms' => '∩',
201         'Mu' => '∪',
202         'MU' => '∖',
203         'MO' => '∅',
204         'Mg' => '⊂',
205         'MG' => '⊃',
206         'Mh' => '⊄',
207         'MH' => '⊅',
208         'Mb' => '⊆',
209         'MB' => '⊇',
210         'Mm' => '∈',
211         'MM' => '∉',
212         'Mk' => '∋',
213         'MK' => '∌',
214
215         'MA' => '∀',
216         'ME' => '∃',
217         'MX' => '∄',
218         'M&' => '∧',
219         'M|' => '∨',
220         'Mc' => '∝',
221         'M.' => '⋅',
222         'Mo' => '∘',
223         'M:' => '∴',
224         'M;' => '∵',
225         'Mz' => '↯',
226         'MF' => '∎',
227
228         'MR' => 'ℝ',
229         'MC' => 'ℂ',
230         'MN' => 'ℕ',
231         'MP' => 'ℙ',
232         'MQ' => 'ℚ',
233         'MZ' => 'ℤ',
234         'M9' => '∟',
235         'M8' => '∠',
236         'M7' => '∡',
237         'Ml' => '∥',
238         'ML' => '∦',
239
240         # symbols
241         '-1' => '¼',
242         '-2' => '½',
243         '-3' => '¾',
244         '-4' => '⅓',
245         '-5' => '⅔',
246         '-c' => '©',
247         '-p' => '℗',
248         '-r' => '®',
249         '-s' => '℠',
250         '-t' => '™',
251
252         '\s' => '§',
253         '\1' => '№',
254         '\2' => '½',
255         '\3' => '⅓',
256         '\4' => '¼',
257         '\5' => '⅔',
258         '\6' => '¾',
259         '\c' => '©',
260         '\p' => '℗',
261         '\r' => '®',
262         '\t' => '™',
263         '\T' => '℠',
264
265         (map { ($presymbol.$_ => $arrows{$_}) } keys %arrows),
266 );
267
268 my $groups = do 'keyboard/altgr/groups.inc.pl';
269 $groups->{mode} = {
270         ''  => 'option-shifted ⌥',
271         'm' => 'Ω greek prefix ⌥m',
272         'M' => '√ maths prefix ⌥M',
273         $presymbol => "$rows{$presymbol} symbol prefix ⌥$presymbol",
274 };
275 for my $m (qw' m M ', $presymbol) {
276         $groups->{def}->{''}->{$m} = "g1 mode$m";
277         $groups->{mode}->{$m} //= "mode $m";
278         $groups->{def}->{$m} = {
279                 (map {s/^.//r => 'g0'} grep {/^\Q$m/} keys %rows),
280                 $m => 'g1 mode',
281         };
282 }
283 $groups->{flag}->{g1} = ['mode' => "switch to an alternate set of keys"];
284
285 +{
286         %{$groups},
287         version => '1.0',
288         title => 'EurKEY',
289         intro => join("\n",
290                 'Third-party proposal <a href="https://eurkey.steffen.bruentjen.eu/">EurKEY</a>',
291                 '<abbr title="last updated 2017-05-15">v1.3</abbr> by Steffen Brüntjen',
292                 'supporting most European languages while pressing AltGr or ⌥ Option.',
293                 'Selectable in <abbr title="distributed with X since 2014">Linux</abbr>',
294                 'and available for <a href="/keyboard/altgr/windows">Windows</a>',
295                 'or <a href="/keyboard/altgr/macos">macOS</a>.',
296         ),
297         description => [
298                 "An interactive map of EurKEY, the European Keyboard Layout.",
299         ],
300         image => 'keyboard/altgr/eurkeyboard.jpg',
301 }