03e5161f248f4e48f7a80b3fb7b3df7aa5185d14
[sheet.git] / keyboard / altgr / unigraph.eng.inc.pl
1 use utf8;
2 use strict;
3 use warnings;
4 use Shiar_Sheet::KeyboardChars 'kbchars';
5
6 my %rows = qw{
7         +! ๐Ÿ€ +@ ๐Ÿ‚ +# ๐Ÿ… +$ ๐Ÿ‡ +% ๐Ÿ‰ +^ ๐Ÿ +& ๐ŸŽ +* ๐Ÿ +( ๐Ÿ’ +) ๐Ÿ“ +_ ๐Ÿ• ++ ๐Ÿ–
8         +1 โ™™  +2 โ™–  +3 โ™˜  +4 โ™—  +5 โ™•  +6 โ™”  +7 โ™š  +8 โ™›  +9 โ™  +0 โ™ž  +-  โ™œ += โ™Ÿ
9
10         $ โ—‹ 4 โ—  % โ–ก 5 โ–   ^ โ˜† 6 โ˜…  \{ โ˜“
11         & โ™  * โ™ฅ ( โ™ฆ ) โ™ฃ
12         - โ˜บ _ โ˜น = โ˜ป
13         = โ˜ผ + โ˜€
14
15         q โ†– w โ†‘ e โ†—  Q โ‡– W โ‡‘ E โ‡—  +q โ—ค +w โ–ฒ +e โ—ฅ  +Q โ—ธ +W โ–ณ +E โ—น
16         a โ† s โ†” d โ†’  A โ‡ S โ‡” D โ‡’  +a โ—€ +s โ—† +d โ–ถ  +A โ— +S โ—‡ +D โ–ท
17         z โ†™ x โ†“ c โ†˜  Z โ‡™ X โ‡“ C โ‡˜  +z โ—ฃ +x โ–ผ +c โ—ข  +Z โ—บ +X โ–ฝ +C โ—ฟ
18         1 โคก 2 โ†• 3 โคข  ! โ—„ @ โ‡• # โ–บ
19
20         r โ”Œ t โ”ฌ y โ”  R โ•” T โ•ฆ Y โ•—
21         f โ”œ g โ”ผ h โ”ค  F โ•  G โ•ฌ H โ•ฃ
22         v โ”” b โ”ด n โ”˜  V โ•š B โ•ฉ N โ•
23         ' โ”€ \ โ”‚      " โ• | โ•‘      +' โ•Œ +\ โ•Ž  +" โ”ˆ +| โ”Š
24
25         +r โ•’ +R โ•“ +t โ•ค +T โ•ฅ +y โ•• +Y โ•–
26         +f โ•ž +F โ•Ÿ +g โ•ช +G โ•ซ +h โ•ก +H โ•ข
27         +v โ•˜ +V โ•™ +b โ•ง +B โ•จ +n โ•› +N โ•œ
28
29         > โ–› . โ–˜ , โ–€ M โ–œ m โ–
30         l โ–Œ L โ–š k โ–ˆ J โ–ž j โ–  ; โ–Ž : โ–Š  +; ๐Ÿฎ‡ +: ๐ŸฎŠ
31         O โ–™ o โ–– i โ–„ U โ–Ÿ u โ–—  / โ–‚ ? โ–†  +/ ๐Ÿฎ‚ +? ๐Ÿฎ…
32         7 โ–‘ 8 โ–’ 9 โ–“
33         I ๐Ÿฎ™ K ๐Ÿฎ– < ๐Ÿฎ˜
34
35         +i ๐Ÿญฏ +, ๐Ÿญญ +j ๐Ÿญฎ +l ๐Ÿญฌ  +[ ๐Ÿฎš +k ๐Ÿฎ›
36         +u โ•ญ +o โ•ฎ +m โ•ฐ +. โ•ฏ
37
38         +U ๐Ÿฎฃ +I ๐Ÿฎฆ +O ๐Ÿฎข
39         +J ๐Ÿฎฅ +K ๐Ÿฎฎ +L ๐Ÿฎค
40         +M ๐Ÿฎก +< ๐Ÿฎง +> ๐Ÿฎ 
41         p โ•ฑ [ โ•ณ ] โ•ฒ
42         P ๐Ÿฎจ \} ๐Ÿฎฉ  +p ๐Ÿฎซ +] ๐Ÿฎช  +P ๐Ÿฎฌ +\} ๐Ÿฎญ
43 };
44 $rows{' '} = "\N{FIGURE SPACE}";
45
46 # remaining candidates: โ”„โ”† ๐Ÿฎ— ๐Ÿฎ• โ™คโ™งโ™กโ™ข โšโš‘ โœ“โœ” โœ—โœ˜ โ–ฌ
47
48 my $groups = kbchars(\%rows);
49
50 use Encode 'decode';
51 my %cpcompat = (
52         # lower cp437 representations from charset-encoding excluding BEL/BS/CR/LF
53         (map {$_ => 'g3'} split //, 'โ˜บโ˜ปโ™ฅโ™ฆโ™ฃโ™ โ—‹โ™‚โ™€โ™ซโ˜ผโ–บโ—„โ†•โ€ผยถยงโ–ฌโ†จโ†‘โ†“โ†’โ†โˆŸโ†”โ–ฒโ–ผ'),
54         # upper characters converted to unicode
55         (map {$_ => 'g4'} split //, decode('cp437', pack 'C*', 127..255)),
56         (map {$_ => 'g2'} split //, decode('cp850', pack 'C*', 127..255)),
57 );
58
59 while (my ($k, $c) = each %rows) {
60         $groups->{def}{''}{$k} = $cpcompat{$c} // (
61                 $c =~ /\p{In=1.1}/ ? 'g5' :
62                 $c =~ /\p{In=6.0}/ ? 'g6' :
63                 $c =~ /[\x{1FB00}-\x{1FBFF}]/ ? 'g7' : # Age=V13.0
64                 'g0'
65         );
66 }
67
68 +{
69         %{ $groups },
70         version => '1.0',
71         title => 'Unicode semigraphics',
72         category => 'specialized',
73         intro => join("\n",
74                 sprintf('Keyboard mode to %s draw character graphics.',
75                         '<span title="without requiring a specialised editor">manually</span>',
76                 ),
77                 'Inspired by <a href="/keyboard/altgr/msx-graph">MSX graph</a> mode,',
78                 'but reimagined for modern Unicode coverage.',
79         ),
80         moderows => '5421-21',
81         flag => {
82                 g2 => ['cp850'    => 'shared international repetoire in most DOS code pages'],
83                 g3 => ['historic' => 'extended graphics presentations of control characters in cp437 ea'],
84                 g4 => ['cp437'    => '<em>ANSI art</em> drawing glyphs in English code page 437 (OEM-US)'],
85                 g5 => ['standard' => 'gathered in the original Unicode release in 1993'],
86                 g6 => ['extended' => 'later additions accumulated within a decade, mostly Unicode 3.2'],
87                 g7 => ['rare'     => 'exceptional <em>symbols for legacy computing</em> in Unicode since <abbr title="Unicode 13.0">2020</abbr>'],
88         },
89 }