diff options
Diffstat (limited to 'mkatables.pl')
-rw-r--r-- | mkatables.pl | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/mkatables.pl b/mkatables.pl new file mode 100644 index 0000000..231dcbb --- /dev/null +++ b/mkatables.pl @@ -0,0 +1,161 @@ +#!/usr/bin/perl -w + +%atascii = ( + 0 => "♥", + 1 => "┣", + 2 => "┃", + 3 => "┛", + 4 => "┫", + 5 => "┓", + 6 => "╱", + 7 => "╲", + 8 => "◢", + 9 => "▗", + 10 => "◣", + 11 => "▝", + 12 => "▘", + 13 => "▔", + 14 => "▁", + 15 => "▖", + 16 => "♣", + 17 => "┏", + 18 => "━", + 19 => "╋", + 20 => "●", + 21 => "▄", + 22 => "▎", + 23 => "┳", + 24 => "┻", + 25 => "▌", + 26 => "┗", + 27 => "Ę", + 28 => "↑", + 29 => "↓", + 30 => "←", + 31 => "→", + 34 => "\\\"", + 92 => "\\\\", + 96 => "◆", + 123 => "♠", + 125 => "↰", + 126 => "◀", + 127 => "▶", +); + +%xl = ( + 0 => "á", + 1 => "ù", + 2 => "Ñ", + 3 => "É", + 4 => "ç", + 5 => "ô", + 6 => "ò", + 7 => "ì", + 8 => "£", + 9 => "ï", + 10 => "ü", + 11 => "ä", + 12 => "Ö", + 13 => "ú", + 14 => "ó", + 15 => "ö", + 16 => "Ü", + 17 => "â", + 18 => "û", + 19 => "î", + 20 => "é", + 21 => "è", + 22 => "ñ", + 23 => "ê", + 24 => "ȧ", + 25 => "à", + 26 => "Ȧ", + 27 => "Ę", + 28 => "↑", + 29 => "↓", + 30 => "←", + 31 => "→", + 34 => "\\\"", + 92 => "\\\\", + 96 => "¡", + 123 => "Ä", + 125 => "↰", + 126 => "◀", + 127 => "▶", +); + +%magazine = ( + 0 => "{ctrl-,}", + 1 => "{ctrl-A}", + 2 => "{ctrl-B}", + 3 => "{ctrl-C}", + 4 => "{ctrl-D}", + 5 => "{ctrl-E}", + 6 => "{ctrl-F}", + 7 => "{ctrl-G}", + 8 => "{ctrl-H}", + 9 => "{ctrl-I}", + 10 => "{ctrl-J}", + 11 => "{ctrl-K}", + 12 => "{ctrl-L}", + 13 => "{ctrl-M}", + 14 => "{ctrl-N}", + 15 => "{ctrl-O}", + 16 => "{ctrl-P}", + 17 => "{ctrl-Q}", + 18 => "{ctrl-R}", + 19 => "{ctrl-S}", + 20 => "{ctrl-T}", + 21 => "{ctrl-U}", + 22 => "{ctrl-V}", + 23 => "{ctrl-W}", + 24 => "{ctrl-X}", + 25 => "{ctrl-Y}", + 26 => "{ctrl-Z}", + 27 => "{esc}", + 28 => "{up}", + 29 => "{down}", + 30 => "{left}", + 31 => "{right}", + 34 => "\\\"", + 92 => "\\\\", + 96 => "{ctrl-.}", + 123 => "{ctrl-;}", + 125 => "{clear}", + 126 => "{bksp}", + 127 => "{tab}", + # the remaining control characters (with high bit set) + # are special-cased in a8cat.c +); + +sub getcharname { + my $c = shift; + if($c == 127) { + return "[del]"; + } elsif($c < 32) { + return "^" . chr($c + 64); + } else { + return chr($c); + } +} + +sub mktable { + my ($name, $hash) = @_; + + print "const char *$name\[\] = {\n"; + for (0..127) { + my $cmt = sprintf("/* %3d \$%02x %5s */", $_, $_, getcharname($_)); + print "\t\"" . ($hash->{$_} || chr($_)), "\", $cmt\n"; + } + print "};\n\n"; +} + +print <<EOF; +/* ATASCII to UTF-8 tables. Generated by mkatables.pl. + Do not edit this file; edit mkatables.pl instead. */ + +EOF + +mktable("ata2utf", \%atascii); +mktable("ics2utf", \%xl); +mktable("ata2mag", \%magazine); |