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