Edit file File name : kbdnames-maker Content :#!/usr/bin/perl use warnings 'all'; use strict; use Locale::gettext; use POSIX; BEGIN { my $file; if ($ARGV[0]) { $file = $ARGV[0]; } else { $file = './KeyboardNames.pl'; } do "$file"; } for my $model (sort keys %KeyboardNames::models) { my $name = $KeyboardNames::models{$model}; print "C*model*$name*$model\n" } for my $layout (sort keys %KeyboardNames::layouts) { my $name = $KeyboardNames::layouts{$layout}; print "C*layout*$name*$layout\n"; print "C*variant*$name**$layout\n"; for my $variant (sort keys %{$KeyboardNames::variants{$name}}) { my $variantname = $KeyboardNames::variants{$name}{$variant}; print "C*variant*$name*$variantname*$layout - $variant\n"; } } # Use a custom-generated locale. Taken from lintian. chop(my $cwd = `pwd`); my $locale_path = "$cwd/build-locale"; system("mkdir $locale_path"); system("localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias --quiet $locale_path/en_US.UTF-8"); $ENV{'LOCPATH'} = "$locale_path"; # Make sure we output UTF-8 $ENV{'LC_ALL'} = "en_US.UTF-8"; binmode STDOUT, ":utf8"; for my $mo (</usr/share/locale/*/LC_MESSAGES/xkeyboard-config.mo>) { my $lang = $mo; $lang =~ s:/usr/share/locale/(.*)/LC_MESSAGES/xkeyboard-config.mo:$1:; $ENV{'LANGUAGE'} = $lang; setlocale(LC_ALL,""); bindtextdomain("xkeyboard-config", "/usr/share/locale"); textdomain("xkeyboard-config"); $lang =~ s:\@:__:; $lang =~ s:__Latn:__latin:; # special fixup for sr my $d = Locale::gettext->domain("xkeyboard-config"); my $iso3166 = Locale::gettext->domain("iso_3166"); for my $model (sort keys %KeyboardNames::models) { my $name = $KeyboardNames::models{$model}; print "$lang*model*$name*".($d->get($model))."\n" } for my $layout (sort keys %KeyboardNames::layouts) { my $name = $KeyboardNames::layouts{$layout}; my $local_layout = $d->get($layout); if ($layout eq 'Switzerland') { $local_layout = $iso3166->get($layout); } else { $local_layout = $d->get($layout); } print "$lang*layout*$name*$local_layout\n"; print "$lang*variant*$name**$local_layout\n"; for my $variant (sort keys %{$KeyboardNames::variants{$name}}) { my $variantname = $KeyboardNames::variants{$name}{$variant}; print "$lang*variant*$name*$variantname*$local_layout - ".($d->get($variant))."\n"; } } } system("rm -rf $locale_path"); Save