Fix keymap for openrc >= 0.6.0 (IssueID #118)

master
Mike Hiretsky 14 years ago
parent 5faeea4b78
commit 919f8a50cf

@ -1,6 +1,7 @@
CHANGE LOG
1.3.8
* Fix keymap for openrc >=0.6.0.
1.3.7
* Remove delay on unmerge performing.

@ -1063,177 +1063,6 @@ sub checksystem{
$data{fb} = 'console';
}
#----------------------------------------------------------------------
# Язык, локаль, консольный шрифт
# http://gentoo-wiki.com/TIP_Speak_Your_Language
#----------------------------------------------------------------------
#system: locale, keymap, dumpkeys_charset, consolefont, consoletranslation, xkblayout
#KDE: kb_groups, kb_layout, country, language, dictionary
my %lang = (
#Belarussian
'be_BY' => ["be_BY.UTF-8", "by", "koi8-u", "Cyr_a8x16", "", "us,by",
"by(winkeys):us", "us,by(winkeys)", "by", "ru", "ru"],
#Belgian
'fr_BE' => ["fr_BE.UTF-8", "be-latin1", "", "lat9w-16", "", "us,be",
"", "us,be", "be", "en_US", "en"],
#Brazilian Portuguese
'pt_BR' => ["pt_BR.UTF-8", "br-abnt2", "", "lat9w-16", "", "pt,us",
"", "us,pt", "br", "pt_BR", "en"],
#Canadian French
'fr_CA' => ["fr_CA.UTF-8", "cf", "", "default8x16", "8859-1_to_uni", "us,ca_enhanced",
"", "us,ca(fr)", "ca", "en_US", "en"],
#Danish
'da_DK' => ["da_DK.UTF-8", "dk-latin1", "", "lat0-16", "", "us,dk",
"", "us,dk", "dk", "da", "da"],
#French
'fr_FR' => ["fr_FR.UTF-8", "fr-latin9", "", "lat0-16", "", "fr,us",
"", "us,fr(latin9)", "fr", "en_US", "en"],
#German
'de_DE' => ["de_DE.UTF-8", "de-latin1", "", "lat9w-16", "", "de,us",
"", "us,de", "de", "de", "de"],
#Icelandic
'is_IS' => ["is_IS.UTF-8", "is-latin1", "", "cp850-8x16", "8859-1_to_uni", "us,is",
"", "us,is", "is", "en_US", "en"],
#Italian
'it_IT' => ["it_IT.UTF-8", "it", "", "default8x16", "8859-15_to_uni", "us,it",
"", "us,it", "it", "it", "it"],
#Norwegian
'nn_NO' => ["nn_NO.UTF-8", "no-latin1", "", "lat9w-16", "", "us,no",
"", "us,no", "no", "nn", "en"],
#Polish
'pl_PL' => ["pl_PL.UTF-8", "pl", "", "lat2-16", "8859-2_to_uni", "us,pl",
"", "us,pl", "pl", "pl", "pl"],
#Russian
'ru_RU' => ["ru_RU.UTF-8", "-u ru4", "koi8-r", "ter-k14n", "", "us,ru(winkeys)",
"ru(winkeys):us", "us,ru(winkeys)", "ru", "ru", "en"],
# http://www.calculate-linux.org/boards/16/topics/1689
#'ru_RU' => ["ru_RU.UTF-8", "-u ruwin_cplk-UTF-8", "koi8-r", "ter-k14n", "", "us,ru(winkeys)",
# "ru(winkeys):us", "us,ru(winkeys)", "ru", "ru", "en"],
#Spanish
'es_ES' => ["es_ES.UTF-8", "es euro2", "", "lat0-16", "", "es,us",
"", "us,es", "es", "es", "es"],
#Swedish
'sv_SE' => ["sv_SE.UTF-8", "sv-latin1", "", "lat0-16", "", "us,se",
"", "us,se", "se", "sv", "sv"],
#Ukrainian
'uk_UA' => ["uk_UA.UTF-8", "ua-utf", "koi8-u", "ter-v14n", "", "us,ua",
"ua(winkeys):us", "us,ua(winkeys)", "ua", "uk", "uk"],
#United Kingdom/British
'en_GB' => ["en_GB.UTF-8", "uk", "", "LatArCyrHeb-16", "", "us,gb",
"", "us,gb", "gb", "en_US", "en_GB"],
#United State/English
'en_US' => ["en_US.UTF-8", "us", "", "LatArCyrHeb-16", "", "us",
"", "us", "us", "en_US", "en_US"],
);
@{$data{other}}{lang} = ["en_US", "de_DE", "es_ES", "fr_FR", "it_IT", "pl_PL", "pt_BR", "ru_RU", "uk_UA"];
if(!$data{lang} && $data{boot}{lang}){
$data{lang}=$data{boot}{lang};
}elsif(!$data{lang}){
if(!$data{builder}){
$ENV{LANG}=~m/^([^\.]+)\./;
$data{'lang'} = $1;
}else{
$data{'lang'} = 'en_US';
} }
#проверим на корректность введенного значения и на наличие поддержки
if(!$lang{$data{lang}}){$data{lang}="en_US";}
#поддержка языков в приложениях
if($data{pass} eq 'builder'){
#$data{linguas} = "be be_BY da de en en_GB es fr it nb nn pl pt_BR ru se sv uk";
$data{linguas} = "en de es fr it pl pt_BR ru uk";
}else{
foreach(keys %lang){
if($_ eq $data{'lang'}){
$data{linguas} = "en ".$lang{$_}[9];
last;
} } }
#установим раскладку
my $changekb;
if($data{boot}{keybd}){$changekb = $data{boot}{keybd};}
else{
#получим раскладку из файла /etc/conf.d/keymaps
if(-e '/etc/conf.d/keymaps'){
open(F, '/etc/conf.d/keymaps');
foreach(<F>){
if(m/^KEYMAP="?([^"\n]+)"?/){
my $keymap = $1;
foreach(keys %lang) {
if( $lang{$_}[1] eq $keymap ) {
$changekb = $_;
last;
} }
last;
} }
close(F);
}
if($data{'arg'}{'set-lang'} || $data{'arg'}{'SET-lang'} || !$changekb){
$changekb = $data{lang};
}
}
#выберем язык и раскладку
($data{'locale'},
$data{'language'},
$data{'dictionary'},
) = @{$lang{$data{lang}}}[0,9..10];
($data{'keymap'},
$data{'dumpkeys_charset'},
$data{'consolefont'},
$data{'consoletranslation'},
$data{'xkblayout'},
$data{'kb_groups'},
$data{'kb_layout'},
$data{'country'},
) = @{$lang{$changekb}}[1..8];
printmes(" ".gettext('Language')); printmes(": $data{lang}\n");
printmes(" ".gettext('Keymap')); printmes(": $changekb\n");
#----------------------------------------------------------------------
# Временная зона
#----------------------------------------------------------------------
#Системное время в гринвиче или локальное "UTC" или "local"
if(!$data{clock} && -e "/etc/conf.d/hwclock"){
my $clock = `$data{path} cat /etc/conf.d/hwclock | grep "CLOCK="`;
if($clock){
$clock=~m/\"([^\"]+)\"/;
$data{clock} = $1;
} }
if(!$data{clock} && -e "/etc/conf.d/clock"){
my $clock = `$data{path} cat /etc/conf.d/clock | grep "CLOCK="`;
if($clock){
$clock=~m/\"([^\"]+)\"/;
$data{clock} = $1;
} }
if($data{clock}=~m/utc/i){$data{clock} = "UTC";}
else{$data{clock} = "local";}
if(!$data{timezone} && $data{boot}{timezone}){$data{timezone} = $data{boot}{timezone}}
else{
if(!$data{timezone} && -e "/etc/timezone"){
$data{timezone} = `$data{path} cat /etc/timezone`;
chomp $data{timezone};
}
if(!$data{timezone} && -e "/etc/conf.d/clock"){
my $timezone = `$data{path} cat /etc/conf.d/clock | grep "TIMEZONE="`;
if($timezone){
$timezone=~m/\"([^\"]+)\"/;
$data{timezone} = $1;
} }
if(!$data{timezone} || ($data{timezone} && !-e "/usr/share/zoneinfo/$data{timezone}")){
$data{timezone} = "UTC";
} }
printmes(" ".gettext('Timezone')); printmes(": $data{timezone}\n");
#----------------------------------------------------------------------
# Сгенерируем случайное время в минутах
#----------------------------------------------------------------------
@ -1604,6 +1433,180 @@ sub checksystem{
}else{$data{iso} = "";}
}
#----------------------------------------------------------------------
# Язык, локаль, консольный шрифт
# http://gentoo-wiki.com/TIP_Speak_Your_Language
#----------------------------------------------------------------------
#system: locale, keymap, dumpkeys_charset, consolefont, consoletranslation, xkblayout
#KDE: kb_groups, kb_layout, country, language, dictionary
my %lang = (
#Belarussian
'be_BY' => ["be_BY.UTF-8", "by", "koi8-u", "Cyr_a8x16", "", "us,by",
"by(winkeys):us", "us,by(winkeys)", "by", "ru", "ru"],
#Belgian
'fr_BE' => ["fr_BE.UTF-8", "be-latin1", "", "lat9w-16", "", "us,be",
"", "us,be", "be", "en_US", "en"],
#Brazilian Portuguese
'pt_BR' => ["pt_BR.UTF-8", "br-abnt2", "", "lat9w-16", "", "pt,us",
"", "us,pt", "br", "pt_BR", "en"],
#Canadian French
'fr_CA' => ["fr_CA.UTF-8", "cf", "", "default8x16", "8859-1_to_uni", "us,ca_enhanced",
"", "us,ca(fr)", "ca", "en_US", "en"],
#Danish
'da_DK' => ["da_DK.UTF-8", "dk-latin1", "", "lat0-16", "", "us,dk",
"", "us,dk", "dk", "da", "da"],
#French
'fr_FR' => ["fr_FR.UTF-8", "fr-latin9", "", "lat0-16", "", "fr,us",
"", "us,fr(latin9)", "fr", "en_US", "en"],
#German
'de_DE' => ["de_DE.UTF-8", "de-latin1", "", "lat9w-16", "", "de,us",
"", "us,de", "de", "de", "de"],
#Icelandic
'is_IS' => ["is_IS.UTF-8", "is-latin1", "", "cp850-8x16", "8859-1_to_uni", "us,is",
"", "us,is", "is", "en_US", "en"],
#Italian
'it_IT' => ["it_IT.UTF-8", "it", "", "default8x16", "8859-15_to_uni", "us,it",
"", "us,it", "it", "it", "it"],
#Norwegian
'nn_NO' => ["nn_NO.UTF-8", "no-latin1", "", "lat9w-16", "", "us,no",
"", "us,no", "no", "nn", "en"],
#Polish
'pl_PL' => ["pl_PL.UTF-8", "pl", "", "lat2-16", "8859-2_to_uni", "us,pl",
"", "us,pl", "pl", "pl", "pl"],
#Russian
'ru_RU' => ["ru_RU.UTF-8", "-u ruwin_cplk-UTF-8", "koi8-r", "ter-k14n", "", "us,ru(winkeys)",
"ru(winkeys):us", "us,ru(winkeys)", "ru", "ru", "en"],
#Spanish
'es_ES' => ["es_ES.UTF-8", "es euro2", "", "lat0-16", "", "es,us",
"", "us,es", "es", "es", "es"],
#Swedish
'sv_SE' => ["sv_SE.UTF-8", "sv-latin1", "", "lat0-16", "", "us,se",
"", "us,se", "se", "sv", "sv"],
#Ukrainian
'uk_UA' => ["uk_UA.UTF-8", "ua-utf", "koi8-u", "ter-v14n", "", "us,ua",
"ua(winkeys):us", "us,ua(winkeys)", "ua", "uk", "uk"],
#United Kingdom/British
'en_GB' => ["en_GB.UTF-8", "uk", "", "LatArCyrHeb-16", "", "us,gb",
"", "us,gb", "gb", "en_US", "en_GB"],
#United State/English
'en_US' => ["en_US.UTF-8", "us", "", "LatArCyrHeb-16", "", "us",
"", "us", "us", "en_US", "en_US"],
);
@{$data{other}}{lang} = ["en_US", "de_DE", "es_ES", "fr_FR", "it_IT", "pl_PL", "pt_BR", "ru_RU", "uk_UA"];
# предыдущих версиях присутствуют проблемы с ruwin_cplk-UTF-8
if( number_ver($data{linuxver}) < number_ver('10.2') ) {
$lang{"ru_RU"} = ["ru_RU.UTF-8", "-u ru4", "koi8-r", "ter-k14n", "", "us,ru(winkeys)",
"ru(winkeys):us", "us,ru(winkeys)", "ru", "ru", "en"];
}
if(!$data{lang} && $data{boot}{lang}){
$data{lang}=$data{boot}{lang};
}elsif(!$data{lang}){
if(!$data{builder}){
$ENV{LANG}=~m/^([^\.]+)\./;
$data{'lang'} = $1;
}else{
$data{'lang'} = 'en_US';
} }
#проверим на корректность введенного значения и на наличие поддержки
if(!$lang{$data{lang}}){$data{lang}="en_US";}
#поддержка языков в приложениях
if($data{pass} eq 'builder'){
#$data{linguas} = "be be_BY da de en en_GB es fr it nb nn pl pt_BR ru se sv uk";
$data{linguas} = "en de es fr it pl pt_BR ru uk";
}else{
foreach(keys %lang){
if($_ eq $data{'lang'}){
$data{linguas} = "en ".$lang{$_}[9];
last;
} } }
#установим раскладку
my $changekb;
if($data{boot}{keybd}){$changekb = $data{boot}{keybd};}
else{
#получим раскладку из файла /etc/conf.d/keymaps
if(-e '/etc/conf.d/keymaps'){
open(F, '/etc/conf.d/keymaps');
foreach(<F>){
if(m/^KEYMAP="?([^"\n]+)"?/){
my $keymap = $1;
foreach(keys %lang) {
if( $lang{$_}[1] eq $keymap ) {
$changekb = $_;
last;
} }
last;
} }
close(F);
}
if($data{'arg'}{'set-lang'} || $data{'arg'}{'SET-lang'} || !$changekb){
$changekb = $data{lang};
}
}
#выберем язык и раскладку
($data{'locale'},
$data{'language'},
$data{'dictionary'},
) = @{$lang{$data{lang}}}[0,9..10];
($data{'keymap'},
$data{'dumpkeys_charset'},
$data{'consolefont'},
$data{'consoletranslation'},
$data{'xkblayout'},
$data{'kb_groups'},
$data{'kb_layout'},
$data{'country'},
) = @{$lang{$changekb}}[1..8];
printmes(" ".gettext('Language')); printmes(": $data{lang}\n");
printmes(" ".gettext('Keymap')); printmes(": $changekb\n");
#----------------------------------------------------------------------
# Временная зона
#----------------------------------------------------------------------
#Системное время в гринвиче или локальное "UTC" или "local"
if(!$data{clock} && -e "/etc/conf.d/hwclock"){
my $clock = `$data{path} cat /etc/conf.d/hwclock | grep "CLOCK="`;
if($clock){
$clock=~m/\"([^\"]+)\"/;
$data{clock} = $1;
} }
if(!$data{clock} && -e "/etc/conf.d/clock"){
my $clock = `$data{path} cat /etc/conf.d/clock | grep "CLOCK="`;
if($clock){
$clock=~m/\"([^\"]+)\"/;
$data{clock} = $1;
} }
if($data{clock}=~m/utc/i){$data{clock} = "UTC";}
else{$data{clock} = "local";}
if(!$data{timezone} && $data{boot}{timezone}){$data{timezone} = $data{boot}{timezone}}
else{
if(!$data{timezone} && -e "/etc/timezone"){
$data{timezone} = `$data{path} cat /etc/timezone`;
chomp $data{timezone};
}
if(!$data{timezone} && -e "/etc/conf.d/clock"){
my $timezone = `$data{path} cat /etc/conf.d/clock | grep "TIMEZONE="`;
if($timezone){
$timezone=~m/\"([^\"]+)\"/;
$data{timezone} = $1;
} }
if(!$data{timezone} || ($data{timezone} && !-e "/usr/share/zoneinfo/$data{timezone}")){
$data{timezone} = "UTC";
} }
printmes(" ".gettext('Timezone')); printmes(": $data{timezone}\n");
#----------------------------------------------------------------------
# Определим имя livecd.squashfs
# $data{squash_cur}, $data{squash_del}

Loading…
Cancel
Save