Also generate main header and source.
This commit is contained in:
parent
a0531ca152
commit
b805e35ca7
3
src/protocols/rdp/keymaps/.gitignore
vendored
3
src/protocols/rdp/keymaps/.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
# Autogenerated .c
|
# Autogenerated code
|
||||||
*.c
|
*.c
|
||||||
|
*.h
|
||||||
|
@ -34,6 +34,18 @@ sub keymap_symbol {
|
|||||||
return 'guac_rdp_keymap_' . $_;
|
return 'guac_rdp_keymap_' . $_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub keymap_file {
|
||||||
|
my $_ = shift;
|
||||||
|
s/-/_/g;
|
||||||
|
return 'rdp_keymap_' . $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keymaps = ();
|
||||||
|
|
||||||
|
#
|
||||||
|
# rdp_keymap_*.c
|
||||||
|
#
|
||||||
|
|
||||||
for $filename (@ARGV) {
|
for $filename (@ARGV) {
|
||||||
|
|
||||||
# Header
|
# Header
|
||||||
@ -235,11 +247,68 @@ for $filename (@ARGV) {
|
|||||||
$src .= ' .mapping = __keymap' . "\n"
|
$src .= ' .mapping = __keymap' . "\n"
|
||||||
. '};' . "\n";
|
. '};' . "\n";
|
||||||
|
|
||||||
|
$keymaps[++$#keymaps] = $layout_name;
|
||||||
|
$filename = keymap_file($layout_name) . '.c';
|
||||||
|
|
||||||
# Write output
|
# Write output
|
||||||
open OUTPUT, ">", "$keymap_sym.c";
|
open OUTPUT, ">", "$filename";
|
||||||
print OUTPUT "$src";
|
print OUTPUT "$src";
|
||||||
close OUTPUT;
|
close OUTPUT;
|
||||||
print STDERR "Generated \"$keymap_sym.c\".\n";
|
print STDERR "Generated \"$filename\".\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# rdp_keymaps.h
|
||||||
|
#
|
||||||
|
|
||||||
|
print STDERR "Writing main keymap header... (\"rdp_keymaps.h\")\n";
|
||||||
|
open OUTPUT, ">", "rdp_keymaps.h";
|
||||||
|
|
||||||
|
# Header
|
||||||
|
print OUTPUT
|
||||||
|
'#ifndef _GUAC_RDP_KEYMAPS' . "\n"
|
||||||
|
. '#define _GUAC_RDP_KEYMAPS' . "\n"
|
||||||
|
. "\n"
|
||||||
|
. '#include "rdp_keymap.h"' . "\n"
|
||||||
|
. "\n"
|
||||||
|
. 'extern const guac_rdp_keymap* guac_rdp_keymaps[];' . "\n";
|
||||||
|
|
||||||
|
# Write list of keymaps
|
||||||
|
foreach $keymap (@keymaps) {
|
||||||
|
$sym = keymap_symbol($keymap);
|
||||||
|
print OUTPUT "extern const guac_rdp_keymap $sym;\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Footer
|
||||||
|
print OUTPUT
|
||||||
|
"\n"
|
||||||
|
. '#endif' . "\n";
|
||||||
|
|
||||||
|
close OUTPUT;
|
||||||
|
|
||||||
|
#
|
||||||
|
# rdp_keymaps.c
|
||||||
|
#
|
||||||
|
|
||||||
|
print STDERR "Writing main keymap source... (\"rdp_keymaps.c\")\n";
|
||||||
|
open OUTPUT, ">", "rdp_keymaps.c";
|
||||||
|
|
||||||
|
# Header
|
||||||
|
print OUTPUT
|
||||||
|
'#include "rdp_keymaps.h"' . "\n"
|
||||||
|
. "\n"
|
||||||
|
. 'const guac_rdp_keymap* guac_rdp_keymaps[] = {' . "\n";
|
||||||
|
|
||||||
|
# Write list of keymaps
|
||||||
|
foreach $keymap (@keymaps) {
|
||||||
|
$sym = keymap_symbol($keymap);
|
||||||
|
print OUTPUT " &$sym,\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Footer
|
||||||
|
print OUTPUT
|
||||||
|
' NULL' . "\n"
|
||||||
|
. '};' . "\n";
|
||||||
|
|
||||||
|
close OUTPUT;
|
||||||
|
Loading…
Reference in New Issue
Block a user