keyboard/altgr: transcribe graph mode of legacy epson laptops
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 8 Jun 2024 22:13:49 +0000 (00:13 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Wed, 3 Jul 2024 22:40:25 +0000 (00:40 +0200)
Original research: manually picked the most similar unicode glyphs based
on the drawings in figure 2.9.a (ASCII keyboard) from the PX-8 manual
<https://www.electrickery.nl/comp/px8/um/px8um2.html#2.2.1>
as well as the few descriptions with figure 5-2 (Graphic Characters…)
on page 49 of the Epson HX-20 operations manual
<https://www.electrickery.nl/comp/hx20/doc/hx20__u1.pdf>.

keyboard/altgr/epson.eng.inc.pl [new file with mode: 0644]
keyboard/altgr/index.inc.pl

diff --git a/keyboard/altgr/epson.eng.inc.pl b/keyboard/altgr/epson.eng.inc.pl
new file mode 100644 (file)
index 0000000..bfb7f25
--- /dev/null
@@ -0,0 +1,85 @@
+use utf8;
+use strict;
+use warnings;
+no warnings 'qw';
+use Shiar_Sheet::KeyboardChars 'kbchars';
+
+my %rows = (
+       's' => '┼',  # 80
+       'x' => '┴',  # 81
+       'w' => '┬',  # 82
+       'd' => '┤',  # 83
+       'a' => '├',  # 84
+       't' => '─',  # 85
+       'r' => '│',  # 86
+       'q' => '┌',  # 87
+       'e' => '┐',  # 88
+       'z' => '└',  # 89
+       'c' => '┘',  # 8A
+       'j' => '▒',  # 8B
+       'f' => '█',  # 8C
+       'g' => '▄',  # 8D
+       'h' => '▌',  # 8E
+       'y' => '●',  # 8F
+
+       'u' => '○',  # 90
+       'i' => '♠',  # 91
+       'o' => '♥',  # 92
+       'p' => '♦',  # 93
+       '[' => '♣',  # 94
+       'k' => '♪',  # 95 "little musical note"
+       'v' => '☎',  # 96 "tiny telephone"
+       ',' => '🛧',  # 97 airplane (✈ up)
+       'm' => '🚗', # 98 "subcompact car" (left)
+       'n' => '🍷', # 99 U̝ thing: tuning fork ⑂? glass 🍷? insert ⁁? alchemy ⨿?
+       'b' => '🯈',  # 9A "small person" 🕺 (running left)
+       ';' => '↑',  # 9B
+       '.' => '↓',  # 9C
+       "'" => '×',  # 9D
+       '/' => '÷',  # 9E
+       'l' => '±',  # 9F
+
+       # characters in european font
+       #à°ç§éùè¨ÄÖÜäöüßÆØÅæøåɤ
+
+       qw(
+               ! 1 @ 2 # 3 $ 4 % 5 ^ 6
+               & 7  * 8  ( 9  ) 0  _ - + ^
+               U 4  I 5  O 6       { ?
+               J 1  K 2  L 3  : +  " *
+               M 0  < ,  > .  ? /
+       ),
+);
+
+my $groups = kbchars(\%rows);
+
+while (my ($k, $c) = each %rows) {
+       $groups->{def}{''}{$k}[0] = (
+               0 ? 'g9' :
+               $c =~ /\p{In=1.1}/ ? 'g2' :
+               $c =~ /\p{In=4.0}/ ? 'g3' :
+               $c =~ /[\x{1FB00}-\x{1FBFF}]/ ? 'g5' : # Age=V13.0
+               'g0'
+       );
+}
+
++{
+       %{ $groups },
+       version => '1.0',
+       title => 'Epson PX-20 graphics',
+       category => 'legacy/graph',
+       moderows => '1-',
+       intro => join("\n",
+               'Unicode glyphs similar to the <em>graph</em> mode of the 1981',
+               'Epson HC-20 and later (PX-8 Geneva, PX-4) laptops.',
+               'See also <a href="/keyboard/altgr/msx-graph">MSX</a>,',
+               '<a href="/keyboard/altgr/atari">Atari</a>,',
+               '<a href="/keyboard/altgr/c64">C-64</a>, and',
+               '<a href="/keyboard/altgr/unigraph">modern Unicode</a>.',
+       ),
+       flag => {
+               g2 => ['standard' => 'original Unicode 1993'],
+               g3 => ['extended' => 'Unicode 4.0'],
+               g5 => ['legacy'   => 'exceptional <em>symbols for legacy computing</em> in Unicode since <abbr title="Unicode 13.0">2020</abbr>'],
+       },
+}
index b864e13c8d3593060d523664690f256b0acd438d..cd93857ce252c8dfb61b9e0f53b4b6a95f57503d 100644 (file)
@@ -8,7 +8,7 @@ my %cat = (
        latin   => [qw( ipa-ucl olpc boyeg drix )],
        science => [qw( symbolics apl spacecadet )],
        graph => [qw( unigraph emojiworks )],
        latin   => [qw( ipa-ucl olpc boyeg drix )],
        science => [qw( symbolics apl spacecadet )],
        graph => [qw( unigraph emojiworks )],
-       extra => [qw( msx-graph c64 atari p8scii zoo )],
+       extra => [qw( msx-graph c64 atari epson p8scii zoo )],
 );
 
 for my $name (map {@{$_}} values %cat) {
 );
 
 for my $name (map {@{$_}} values %cat) {