9 # directories and filenames
11 my $dir_convtool = $1 || ".";
13 my $dir_keymaps_syscons = "/usr/src/share/syscons/keymaps";
14 my $dir_keymaps_config = "$dir_convtool";
16 my $dir_keymaps_vt = "/usr/src/share/vt/keymaps";
17 my $dir_keymaps_output = "$dir_keymaps_vt/OUTPUT";
19 my $keymap_index = "$dir_keymaps_syscons/INDEX.keymaps";
21 my $language_map = "$dir_keymaps_config/LANG.map";
22 my $keymapfile_map = "$dir_keymaps_config/KBDFILES.map";
25 my %LANG_NEW; # index: lang_old
26 my %ENCODING; # index: lang_old, file_old
27 my %FILE_NEW; # index: file_old
30 sub local_to_UCS_string
32 my ($string, $old_enc) = @_;
33 my $converter = Text::Iconv->new($old_enc, "UTF-8");
34 my $result = $converter->convert($string);
35 printf "!!! conversion failed for '$string' ($old_enc)\n"
44 for $lang (split(/,/, $langlist)) {
47 $result .= $LANG_NEW{$lang};
53 open LANGMAP, "<$language_map"
58 my ($lang_old, $lang_new, $encoding) = split(" ");
59 # print "$lang_old|$lang_new|$encoding\n";
60 $LANG_NEW{$lang_old} = $lang_new;
61 $ENCODING{$lang_old} = $encoding;
62 $ENCODING{$lang_new} = $encoding;
66 $FILE_NEW{"MENU"} = "MENU"; # dummy identity mapping
67 $FILE_NEW{"FONT"} = "FONT"; # dummy identity mapping
68 open FILEMAP, "<$keymapfile_map"
73 my ($encoding, $file_old, $file_new) = split(" ");
74 # print "--> ", join("|", $encoding, $file_old, $file_new, $file_locale), "\n";
75 if ($encoding and $file_old and $file_new) {
76 $ENCODING{$file_old} = $encoding;
77 $FILE_NEW{$file_old} = $file_new;
82 open MENUFILE, "<$keymap_index"
88 my ($file_old, $langlist, $menutext) = split(/:/);
89 my ($lang) = split(/,/, $langlist); # first language in list selects encoding
90 $menutext = local_to_UCS_string($menutext, $ENCODING{$lang})
91 unless $file_old eq "FONT";
92 printf "%s:%s:%s", $FILE_NEW{$file_old}, lang_fixup($langlist), $menutext;