#!/usr/bin/perl use lib qw(/usr/lib/libDrakX); use standalone; #- warning, standalone must be loaded very first, for 'explanations' use interactive; use keyboard; use Xconfig::xfree; use common; use any; use c; $ugtk2::wm_icon = "/usr/share/mcc/themes/default/keyboard-mdk.png"; my $in; my $keyboard = keyboard::read(); if (my ($kb) = grep { !/^-/ } @ARGV) { keyboard::KEYBOARD2text($kb) or die "bad keyboard $kb\n"; $keyboard->{KEYBOARD} = $kb; } else { $in = 'interactive'->vnew('su'); my ($xkb_models, $model2text) = keyboard::xkb_models(); s/ /|/ foreach values %$model2text; $keyboard->{XkbModel} ||= 'pc105'; choose: $in->ask_from(N("Keyboard"), N("Please, choose your keyboard layout."), [ { val => \$keyboard->{KEYBOARD}, format => sub { translate(keyboard::KEYBOARD2text($_[0])) }, list => [ keyboard::KEYBOARDs() ], type => 'list', }, { val => \$keyboard->{XkbModel}, format => sub { $model2text->{$_[0]} }, separator => '|', list => $xkb_models }, ]) or goto end; keyboard::group_toggle_choose($in, $keyboard) or goto choose; if ($::expert) { my $isNotDelete = !$in->ask_yesorno("BackSpace", N("Do you want the BackSpace to return Delete in console?"), 1); $keyboard->{BACKSPACE} = $isNotDelete ? "BackSpace" : "Delete"; } } keyboard::setxkbmap($keyboard); eval { my $xfree_conf = Xconfig::xfree->read; if (!is_empty_array_ref($xfree_conf)) { my $xkb = keyboard::keyboard2full_xkb($keyboard); $xfree_conf->set_keyboard($xkb); $xfree_conf->write; } }; keyboard::write($keyboard); system('/etc/init.d/keytable', 'restart'); end: $in->exit(0) if $in;