aboutsummaryrefslogtreecommitdiff
path: root/mkatables.pl
diff options
context:
space:
mode:
Diffstat (limited to 'mkatables.pl')
-rw-r--r--mkatables.pl161
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);