#!/usr/bin/perl -w if (@ARGV != 2) { die "Usage: gen-keyname-table.pl keynames.txt keynames-translate.txt > keynamesprivate.h\n"; } open IN, $ARGV[0] || die "Cannot open $ARGV[0]: $!\n"; @keys = (); @translate = (); while (defined($_ = )) { next if /^!/; if (!/^\s*(0x[0-9a-f]+)\s+([\w_]*\S)\s+(1)?\s*$/) { die "Cannot parse line $_"; } push @keys, [$1, $2]; if (defined ($3)) { push @translate, $2; } } close IN; open IN, $ARGV[1] || die "Cannot open $ARGV[1]: $!\n"; while (defined($_ = )) { next if /^!/; if (!/^\s*([\w_]*\S)\s+$/) { die "Cannot parse line $_"; } push @translate, $1; } close IN; $offset = 0; $date = gmtime; print <[1]; if ($offset != 0) { print qq(\n); } print qq( "$name\\0"); $key->[3] = $offset; $offset += length($name) + 1; } print ";\n\n"; print <[0]; $name = $key->[1]; $offset = $key->[3]; if ($i != 0) { print ",\n"; } print " { $keyval, $offset }"; $i++; } print "\n};\n\n"; @keys = sort { $a->[1] cmp $b->[1] } @keys; print <[0]; $name = $key->[1]; $offset = $key->[3]; if ($i != 0) { print ",\n"; } print " { $keyval, $offset }"; $i++; } print <