X-Git-Url: http://git.shiar.net/sheet.git/blobdiff_plain/49ffae7e96c2b8e25a872c26d91e5b8443729371..382c3a9fa1e25c7665ee16f0115998bb226dfbae:/keyboard/altgr/unigraph.eng.inc.pl?ds=sidebyside
diff --git a/keyboard/altgr/unigraph.eng.inc.pl b/keyboard/altgr/unigraph.eng.inc.pl
new file mode 100644
index 0000000..03e5161
--- /dev/null
+++ b/keyboard/altgr/unigraph.eng.inc.pl
@@ -0,0 +1,89 @@
+use utf8;
+use strict;
+use warnings;
+use Shiar_Sheet::KeyboardChars 'kbchars';
+
+my %rows = qw{
+ +! ð +@ ð +# ð
+$ ð +% ð +^ ð +& ð +* ð +( ð +) ð +_ ð ++ ð
+ +1 â +2 â +3 â +4 â +5 â +6 â +7 â +8 â +9 â +0 â +- â += â
+
+ $ â 4 â % â¡ 5 â ^ â 6 â
\{ â
+ & â * ⥠( ⦠) â£
+ - ⺠_ â¹ = â»
+ = â¼ + â
+
+ q â w â e â Q â W â E â +q ⤠+w â² +e ⥠+Q ⸠+W â³ +E â¹
+ a â s â d â A â S â D â +a â +s â +d ⶠ+A â +S â +D â·
+ z â x â c â Z â X â C â +z ⣠+x â¼ +c ⢠+Z ⺠+X â½ +C â¿
+ 1 ⤡ 2 â 3 ⤢ ! â @ â # âº
+
+ r â t ⬠y â R â T ⦠Y â
+ f â g â¼ h ⤠F â G ⬠H â£
+ v â b â´ n â V â B â© N â
+ ' â \ â " â | â +' â +\ â +" â +| â
+
+ +r â +R â +t ⤠+T ⥠+y â +Y â
+ +f â +F â +g ⪠+G â« +h â¡ +H â¢
+ +v â +V â +b ⧠+B ⨠+n â +N â
+
+ > â . â , â M â m â
+ l â L â k â J â j â ; â : â +; ð® +: ð®
+ O â o â i â U â u â / â ? â +/ ð® +? ð®
+ 7 â 8 â 9 â
+ I ð® K ð® < ð®
+
+ +i ð¯ +, ð +j ð® +l ð¬ +[ ð® +k ð®
+ +u â +o â® +m â° +. â¯
+
+ +U 𮣠+I 𮦠+O ð®¢
+ +J 𮥠+K ð®® +L ð®¤
+ +M 𮡠+< 𮧠+> ð®
+ p â± [ â³ ] â²
+ P 𮨠\} 𮩠+p 𮫠+] 𮪠+P 𮬠+\} ð®
+};
+$rows{' '} = "\N{FIGURE SPACE}";
+
+# remaining candidates: ââ ð® ð® â¤â§â¡â¢ ââ ââ ââ â¬
+
+my $groups = kbchars(\%rows);
+
+use Encode 'decode';
+my %cpcompat = (
+ # lower cp437 representations from charset-encoding excluding BEL/BS/CR/LF
+ (map {$_ => 'g3'} split //, 'âºâ»â¥â¦â£â ââââ«â¼âºâââ¼Â¶Â§â¬â¨âââââââ²â¼'),
+ # upper characters converted to unicode
+ (map {$_ => 'g4'} split //, decode('cp437', pack 'C*', 127..255)),
+ (map {$_ => 'g2'} split //, decode('cp850', pack 'C*', 127..255)),
+);
+
+while (my ($k, $c) = each %rows) {
+ $groups->{def}{''}{$k} = $cpcompat{$c} // (
+ $c =~ /\p{In=1.1}/ ? 'g5' :
+ $c =~ /\p{In=6.0}/ ? 'g6' :
+ $c =~ /[\x{1FB00}-\x{1FBFF}]/ ? 'g7' : # Age=V13.0
+ 'g0'
+ );
+}
+
++{
+ %{ $groups },
+ version => '1.0',
+ title => 'Unicode semigraphics',
+ category => 'specialized',
+ intro => join("\n",
+ sprintf('Keyboard mode to %s draw character graphics.',
+ 'manually',
+ ),
+ 'Inspired by MSX graph mode,',
+ 'but reimagined for modern Unicode coverage.',
+ ),
+ moderows => '5421-21',
+ flag => {
+ g2 => ['cp850' => 'shared international repetoire in most DOS code pages'],
+ g3 => ['historic' => 'extended graphics presentations of control characters in cp437 ea'],
+ g4 => ['cp437' => 'ANSI art drawing glyphs in English code page 437 (OEM-US)'],
+ g5 => ['standard' => 'gathered in the original Unicode release in 1993'],
+ g6 => ['extended' => 'later additions accumulated within a decade, mostly Unicode 3.2'],
+ g7 => ['rare' => 'exceptional symbols for legacy computing in Unicode since 2020'],
+ },
+}