keyboard/altgr: c64 layout of petscii graphics
[sheet.git] / keyboard / altgr / c64.eng.inc.pl
diff --git a/keyboard/altgr/c64.eng.inc.pl b/keyboard/altgr/c64.eng.inc.pl
new file mode 100644 (file)
index 0000000..47112e1
--- /dev/null
@@ -0,0 +1,133 @@
+use utf8;
+use strict;
+use warnings;
+use Shiar_Sheet::KeyboardChars 'kbchars';
+
+my %c64 = (
+       # control keys not on pet2001
+       '1' => "๐Ÿ–ค\nBLacK",
+       '2' => "๐Ÿค\nWHiTe",
+       '3' => "โค๏ธ\nRED",
+       '4' => "๐Ÿฉต\nCYaN",
+       '5' => "๐Ÿ’œ\nPURple",
+       '6' => "๐Ÿ’š\nGReeN",
+       '7' => "๐Ÿ’™\nBLUe",
+       '8' => "๐Ÿ’›\nYELlow",
+       '9' => "๐Ÿ’Ÿ\nREverSe video ON",
+       '0' => "๐Ÿ’”\nREverSe video OFF",
+);
+
+my %rows = (%c64,
+       # literal petscii control characters, unaltered from pet2001
+       'a' => 'โ™ ',
+       'b' => '๐Ÿญฒ',
+       'c' => '๐Ÿญธ',
+       'd' => '๐Ÿญท',
+       'e' => '๐Ÿญถ',
+       'f' => '๐Ÿญบ',
+       'g' => '๐Ÿญฑ',
+       'h' => '๐Ÿญด',
+       'i' => 'โ•ฎ',
+       'j' => 'โ•ฐ',
+       'k' => 'โ•ฏ',
+       'l' => '๐Ÿญผ',
+       'm' => 'โ•ฒ',
+       'n' => 'โ•ฑ',
+       'o' => '๐Ÿญฝ',
+       'p' => '๐Ÿญพ',
+       'q' => 'โ—',
+       'r' => '๐Ÿญป',
+       's' => 'โ™ฅ',
+       't' => '๐Ÿญฐ',
+       'u' => 'โ•ญ',
+       'v' => 'โ•ณ',
+       'w' => 'โ—‹',
+       'x' => 'โ™ฃ',
+       'y' => '๐Ÿญต',
+       'z' => 'โ™ฆ',
+       ']' => 'โ”€', # @
+
+       # literal pet2001 keys reassigned on c64
+       ',' => 'โ”ผ', # [ c64 +
+       '.' => 'โ”‚', # ] c64 -
+       '\\'=> 'ฯ€', # โ†‘ c64 \
+       '}' => 'โ—ฅ', # โ† c64 *
+       '>' => '๐ŸฎŒ', # \ c64 ^-
+       'B' => 'โ–š', # ?
+
+       # ! " # $ % ' & \ ( ) โ†            ยป  1 2 3 4 5 6 7 8 9 0 + - ยฃ
+       # Q W E R T Y U I O P โ†‘   7 8 9 /  ยป  Q W E R T Y U I O P @ * โ†‘
+       # A S D F G H J K L :     4 5 6 *  ยป  A S D F G H J K L : ; =
+       # Z X C V B N M , ; ?     1 2 3 +  ยป  Z X C V B N M , . /
+       #     @ [ ]     < >       0 . - =
+
+       # pet2001 top row
+       'K' => 'โ–Œ', # A pet !
+       'I' => 'โ–„', # B pet "
+       'T' => 'โ–”', # C pet #
+       '{' => 'โ–', # D pet $
+       'G' => 'โ–', # E pet %
+       'M' => 'โ–•', # G pet '
+       '<' => 'โ–’', # F pet & c64 ^+
+       '/' => '๐Ÿฎ', # H pet ( c64 ^ยฃ
+       '?' => 'โ—ค', # I pet ) c64 ยฃ
+
+       # pet2001 bottom rows
+       '[' => '๐Ÿญฟ', # Z pet :
+       'D' => 'โ–—', # L pet ,
+       'F' => 'โ––', # { pet ;
+       'C' => 'โ–', # | pet <
+       'V' => 'โ–˜', # ~ pet >
+
+       # pet2001 numpad
+       'Y' => '๐Ÿฎ‚', # W pet 7
+       'U' => '๐Ÿฎƒ', # X pet 8
+       'O' => 'โ–ƒ', # Y pet 9
+       'P' => 'โ–‚', # O pet /
+       'H' => 'โ–Ž', # T pet 4
+       'J' => 'โ–', # U pet 5
+       'L' => '๐Ÿฎˆ', # V pet 6
+       'N' => '๐Ÿฎ‡', # J pet *
+       'E' => 'โ”ด', # Q pet 1
+       'R' => 'โ”ฌ', # R pet 2
+       'W' => 'โ”ค', # S pet 3
+       'Q' => 'โ”œ', # K pet +
+       'A' => 'โ”Œ', # P pet 0
+       'S' => 'โ”', # N pet .
+       'Z' => 'โ””', # M pet -
+       'X' => 'โ”˜', # } pet =
+);
+
+my $groups = kbchars(\%rows);
+
+while (my ($k, $c) = each %rows) {
+       $groups->{def}{''}{$k}[0] = (
+               $c64{$k} ? '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 => 'Commodore graphics',
+       category => 'legacy/graph',
+       moderows => '21-1',
+       intro => join("\n",
+               '<abbr title="PET Standard Code of Information Interchange">PETSCII</abbr>',
+               'characters designed for the 1977 PET&nbsp;2001 machine',
+               'as found on the VIC-20 and C-64.',
+               'See also <a href="/keyboard/altgr/msx-graph">MSX graph</a> and',
+               '<a href="/keyboard/altgr/unigraph">modern Unicode</a>.',
+       ),
+       image => 'data/keyboard/thumb/c64.jpg',
+       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>'],
+               g9 => ['color'    => 'presentational controls represented by anachronistic hearts'],
+       },
+}