keyboard/altgr: c64 layout of petscii graphics
[sheet.git] / keyboard / altgr / c64.eng.inc.pl
1 use utf8;
2 use strict;
3 use warnings;
4 use Shiar_Sheet::KeyboardChars 'kbchars';
5
6 my %c64 = (
7         # control keys not on pet2001
8         '1' => "๐Ÿ–ค\nBLacK",
9         '2' => "๐Ÿค\nWHiTe",
10         '3' => "โค๏ธ\nRED",
11         '4' => "๐Ÿฉต\nCYaN",
12         '5' => "๐Ÿ’œ\nPURple",
13         '6' => "๐Ÿ’š\nGReeN",
14         '7' => "๐Ÿ’™\nBLUe",
15         '8' => "๐Ÿ’›\nYELlow",
16         '9' => "๐Ÿ’Ÿ\nREverSe video ON",
17         '0' => "๐Ÿ’”\nREverSe video OFF",
18 );
19
20 my %rows = (%c64,
21         # literal petscii control characters, unaltered from pet2001
22         'a' => 'โ™ ',
23         'b' => '๐Ÿญฒ',
24         'c' => '๐Ÿญธ',
25         'd' => '๐Ÿญท',
26         'e' => '๐Ÿญถ',
27         'f' => '๐Ÿญบ',
28         'g' => '๐Ÿญฑ',
29         'h' => '๐Ÿญด',
30         'i' => 'โ•ฎ',
31         'j' => 'โ•ฐ',
32         'k' => 'โ•ฏ',
33         'l' => '๐Ÿญผ',
34         'm' => 'โ•ฒ',
35         'n' => 'โ•ฑ',
36         'o' => '๐Ÿญฝ',
37         'p' => '๐Ÿญพ',
38         'q' => 'โ—',
39         'r' => '๐Ÿญป',
40         's' => 'โ™ฅ',
41         't' => '๐Ÿญฐ',
42         'u' => 'โ•ญ',
43         'v' => 'โ•ณ',
44         'w' => 'โ—‹',
45         'x' => 'โ™ฃ',
46         'y' => '๐Ÿญต',
47         'z' => 'โ™ฆ',
48         ']' => 'โ”€', # @
49
50         # literal pet2001 keys reassigned on c64
51         ',' => 'โ”ผ', # [ c64 +
52         '.' => 'โ”‚', # ] c64 -
53         '\\'=> 'ฯ€', # โ†‘ c64 \
54         '}' => 'โ—ฅ', # โ† c64 *
55         '>' => '๐ŸฎŒ', # \ c64 ^-
56         'B' => 'โ–š', # ?
57
58         # ! " # $ % ' & \ ( ) โ†            ยป  1 2 3 4 5 6 7 8 9 0 + - ยฃ
59         # Q W E R T Y U I O P โ†‘   7 8 9 /  ยป  Q W E R T Y U I O P @ * โ†‘
60         # A S D F G H J K L :     4 5 6 *  ยป  A S D F G H J K L : ; =
61         # Z X C V B N M , ; ?     1 2 3 +  ยป  Z X C V B N M , . /
62         #     @ [ ]     < >       0 . - =
63
64         # pet2001 top row
65         'K' => 'โ–Œ', # A pet !
66         'I' => 'โ–„', # B pet "
67         'T' => 'โ–”', # C pet #
68         '{' => 'โ–', # D pet $
69         'G' => 'โ–', # E pet %
70         'M' => 'โ–•', # G pet '
71         '<' => 'โ–’', # F pet & c64 ^+
72         '/' => '๐Ÿฎ', # H pet ( c64 ^ยฃ
73         '?' => 'โ—ค', # I pet ) c64 ยฃ
74
75         # pet2001 bottom rows
76         '[' => '๐Ÿญฟ', # Z pet :
77         'D' => 'โ–—', # L pet ,
78         'F' => 'โ––', # { pet ;
79         'C' => 'โ–', # | pet <
80         'V' => 'โ–˜', # ~ pet >
81
82         # pet2001 numpad
83         'Y' => '๐Ÿฎ‚', # W pet 7
84         'U' => '๐Ÿฎƒ', # X pet 8
85         'O' => 'โ–ƒ', # Y pet 9
86         'P' => 'โ–‚', # O pet /
87         'H' => 'โ–Ž', # T pet 4
88         'J' => 'โ–', # U pet 5
89         'L' => '๐Ÿฎˆ', # V pet 6
90         'N' => '๐Ÿฎ‡', # J pet *
91         'E' => 'โ”ด', # Q pet 1
92         'R' => 'โ”ฌ', # R pet 2
93         'W' => 'โ”ค', # S pet 3
94         'Q' => 'โ”œ', # K pet +
95         'A' => 'โ”Œ', # P pet 0
96         'S' => 'โ”', # N pet .
97         'Z' => 'โ””', # M pet -
98         'X' => 'โ”˜', # } pet =
99 );
100
101 my $groups = kbchars(\%rows);
102
103 while (my ($k, $c) = each %rows) {
104         $groups->{def}{''}{$k}[0] = (
105                 $c64{$k} ? 'g9' :
106                 $c =~ /\p{In=1.1}/ ? 'g2' :
107                 $c =~ /\p{In=4.0}/ ? 'g3' :
108                 $c =~ /[\x{1FB00}-\x{1FBFF}]/ ? 'g5' : # Age=V13.0
109                 'g0'
110         );
111 }
112
113 +{
114         %{ $groups },
115         version => '1.0',
116         title => 'Commodore graphics',
117         category => 'legacy/graph',
118         moderows => '21-1',
119         intro => join("\n",
120                 '<abbr title="PET Standard Code of Information Interchange">PETSCII</abbr>',
121                 'characters designed for the 1977 PET&nbsp;2001 machine',
122                 'as found on the VIC-20 and C-64.',
123                 'See also <a href="/keyboard/altgr/msx-graph">MSX graph</a> and',
124                 '<a href="/keyboard/altgr/unigraph">modern Unicode</a>.',
125         ),
126         image => 'data/keyboard/thumb/c64.jpg',
127         flag => {
128                 g2 => ['standard' => 'original Unicode 1993'],
129                 g3 => ['extended' => 'Unicode 4.0'],
130                 g5 => ['legacy'   => 'exceptional <em>symbols for legacy computing</em> in Unicode since <abbr title="Unicode 13.0">2020</abbr>'],
131                 g9 => ['color'    => 'presentational controls represented by anachronistic hearts'],
132         },
133 }