Blame gdk/gen-keyname-table.pl
|
Packit Service |
fb6fa5 |
#!/usr/bin/perl -w
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if (@ARGV != 1) {
|
|
Packit Service |
fb6fa5 |
die "Usage: gen-keyname-table.pl keynames.txt > keyname-table.h\n";
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
open IN, $ARGV[0] || die "Cannot open $ARGV[0]: $!\n";
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
@keys = ();
|
|
Packit Service |
fb6fa5 |
@translate = ();
|
|
Packit Service |
fb6fa5 |
while (defined($_ = <IN>)) {
|
|
Packit Service |
fb6fa5 |
next if /^!/;
|
|
Packit Service |
fb6fa5 |
if (!/^\s*(0x[0-9a-f]+)\s+([\w_]*\S)\s+(1)?\s*$/) {
|
|
Packit Service |
fb6fa5 |
die "Cannot parse line $_";
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
push @keys, [$1, $2];
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if (defined ($3)) {
|
|
Packit Service |
fb6fa5 |
push @translate, $2;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
$offset = 0;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
$date = gmtime;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
print <
|
|
Packit Service |
fb6fa5 |
/* keyname-table.h: Generated by gen-keyname-table.pl from keynames.txt
|
|
Packit Service |
fb6fa5 |
*
|
|
Packit Service |
fb6fa5 |
* Date: $date
|
|
Packit Service |
fb6fa5 |
*
|
|
Packit Service |
fb6fa5 |
* Do not edit.
|
|
Packit Service |
fb6fa5 |
*/
|
|
Packit Service |
fb6fa5 |
static const char keynames[] =
|
|
Packit Service |
fb6fa5 |
EOT
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
for $key (@keys) {
|
|
Packit Service |
fb6fa5 |
$name = $key->[1];
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if ($offset != 0) {
|
|
Packit Service |
fb6fa5 |
print qq(\n);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
print qq( "$name\\0");
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
$key->[3] = $offset;
|
|
Packit Service |
fb6fa5 |
$offset += length($name) + 1;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
print ";\n\n";
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
print <
|
|
Packit Service |
fb6fa5 |
typedef struct {
|
|
Packit Service |
fb6fa5 |
guint keyval;
|
|
Packit Service |
fb6fa5 |
guint offset;
|
|
Packit Service |
fb6fa5 |
} gdk_key;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
static const gdk_key gdk_keys_by_keyval[] = {
|
|
Packit Service |
fb6fa5 |
EOT
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
$i = 0;
|
|
Packit Service |
fb6fa5 |
for $key (@keys) {
|
|
Packit Service |
fb6fa5 |
$keyval = $key->[0];
|
|
Packit Service |
fb6fa5 |
$name = $key->[1];
|
|
Packit Service |
fb6fa5 |
$offset = $key->[3];
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if ($i != 0) {
|
|
Packit Service |
fb6fa5 |
print ",\n";
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
print " { $keyval, $offset }";
|
|
Packit Service |
fb6fa5 |
$i++;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
print "\n};\n\n";
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
@keys = sort { $a->[1] cmp $b->[1] } @keys;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
print <
|
|
Packit Service |
fb6fa5 |
static const gdk_key gdk_keys_by_name[] = {
|
|
Packit Service |
fb6fa5 |
EOT
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
$i = 0;
|
|
Packit Service |
fb6fa5 |
for $key (@keys) {
|
|
Packit Service |
fb6fa5 |
$keyval = $key->[0];
|
|
Packit Service |
fb6fa5 |
$name = $key->[1];
|
|
Packit Service |
fb6fa5 |
$offset = $key->[3];
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if ($i != 0) {
|
|
Packit Service |
fb6fa5 |
print ",\n";
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
print " { $keyval, $offset }";
|
|
Packit Service |
fb6fa5 |
$i++;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
print <
|
|
Packit Service |
fb6fa5 |
};
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
#if 0
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
EOT
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
for $key (@translate) {
|
|
Packit Service |
fb6fa5 |
print <
|
|
Packit Service |
fb6fa5 |
N_("keyboard label|$key")
|
|
Packit Service |
fb6fa5 |
EOT
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
print <
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
#endif
|
|
Packit Service |
fb6fa5 |
EOT
|
|
Packit Service |
fb6fa5 |
|