#!/usr/bin/perl -w # Slightly modified version of if (@ARGV != 1) { die "Usage: gen-keyname-table.pl keynames.txt > keyname-table.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; $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 <