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