5 use Shiar_Sheet::KeyboardChars 'kbchars';
8 ! ๐ @ ๐ # ๐
$ ๐ % ๐ ^ ๐ & ๐ * ๐ ( ๐ ) ๐ _ ๐ + ๐
9 1 โ 2 โ 3 โ 4 โ 5 โ 6 โ 7 โ 8 โ 9 โ 0 โ - โ = โ
13 +P โ +p โฅ +[ โฆ +\{ โฃ
14 ++ โบ +_ โน += โป 0 โ +) โผ +0 โ
15 +! โ +1 โ +@ โก +2 โ +# โ +3 โ
16 - โ = โ _ โ + โ +- โ
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 โคข ! โ @ โ # โบ
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 ' โฏ \ โฎ " โฐ | โฑ
31 +r โ +R โ +t โค +T โฅ +y โ +Y โ
32 +f โ +F โ +g โช +G โซ +h โก +H โข
33 +v โ +V โ +b โง +B โจ +n โ +N โ
35 > โ . โ , โ M โ m โ
36 l โ I โ k โ < โ j โ ; โ : โ +; ๐ฎ +: ๐ฎ
37 O โ o โ i โ U โ u โ / โ ? โ +/ ๐ฎ +? ๐ฎ
39 +' ๐ฎ +\ ๐ฎ * ๐ฎ +* ๐ฎ
41 p ๐ฅ [ ๐ฉ ] ๐ฆ P ๐ง \{ ๐ช \} ๐จ
43 +i ๐ญฏ +, ๐ญญ +j ๐ญฎ +l ๐ญฌ +8 ๐ฎ +k ๐ฎ
44 +u โญ +o โฎ +m โฐ +. โฏ
46 +U ๐ฎฃ +I ๐ฎฆ +O ๐ฎข
47 +J ๐ฎฅ +K ๐ฎฎ +L ๐ฎค
48 +M ๐ฎก +< ๐ฎง +> ๐ฎ
49 & ๐ฎจ ( ๐ฎฉ +7 ๐ฎซ +9 ๐ฎช +& ๐ฎฌ +( ๐ฎญ
51 $rows{' '} = "\N{FIGURE SPACE}";
53 # remaining candidates: โโ ๐ฎ ๐ฎ โคโงโกโข โโ โโ โโ โฌ
55 my $groups = kbchars(\%rows);
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)),
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
78 title => 'Unicode semigraphics',
79 category => 'specialized',
81 sprintf('Keyboard mode to %s draw character graphics.',
82 '<span title="without requiring a specialised editor">manually</span>',
84 'Inspired by <a href="/keyboard/altgr/msx-graph">MSX graph</a> mode,',
85 'but reimagined for modern Unicode coverage.',
86 'Freely available as <a href="/keyboard/symbols/unigraph">xorg symbols</a> export.',
90 g2 => ['cp850' => 'shared international repetoire in most DOS code pages'],
91 g3 => ['historic' => 'extended graphics presentations of control characters in cp437 ea'],
92 g4 => ['cp437' => '<em>ANSI art</em> drawing glyphs in English code page 437 (OEM-US)'],
93 g5 => ['standard' => 'gathered in the original Unicode release in 1993'],
94 g6 => ['extended' => 'later additions accumulated within a decade, mostly Unicode 3.2'],
95 g7 => ['rare' => 'exceptional <em>symbols for legacy computing</em> in Unicode since <abbr title="Unicode 13.0">2020</abbr>'],