anaglym/gen-sdl-keymap.pl
Josh Holtrop 75a80ae378 added gen-sdl-keymap.pl to generate sdl_keymap.h and sdl_keymap.cc
git-svn-id: svn://anubis/anaglym/trunk@96 99a6e188-d820-4881-8870-2d33a10e2619
2009-10-18 21:46:53 +00:00

59 lines
1.1 KiB
Perl
Executable File

#!/usr/bin/perl
use strict;
use warnings;
my $sdl_config_out = `sdl-config --cflags`;
if ($sdl_config_out =~ /-I(\S+)\s/)
{
my $sdl_path = $1;
open(my $fh, '<', "$sdl_path/SDL_keysym.h");
my %keys;
while (my $line = <$fh>)
{
if ($line =~ /SDLK_(\S+)\s*=\s*(\d+)/)
{
my $keyname = lc($1);
my $keynum = $2;
$keys{$keynum} = $keyname;
}
}
close($fh);
open(my $output, '>', 'sdl_keymap.cc');
print $output <<EOP;
#include <SDL.h>
const char * sdl_keymap[SDLK_LAST+1] = {
EOP
my $current_id = 0;
for my $id (sort { $a <=> $b } keys(%keys))
{
while ($current_id < $id)
{
printf $output " %-20s, /* %d */\n", '""', $current_id++;
}
printf $output " %-20s, /* %d */\n", '"' . $keys{$id} . '"', $id;
$current_id++;
}
print $output " \"last\"\n};\n";
close($output);
open(my $output_h, '>', 'sdl_keymap.h');
print $output_h <<EOP;
#ifndef SDL_KEYMAP_H
#define SDL_KEYMAP_H
extern char * sdl_keymap[SDLK_LAST+1];
#endif
EOP
close($output_h);
}
exit(0);