#!/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 c; local $_ = join '', @ARGV; /-h/ and die _("usage: keyboarddrake [--expert] [keyboard]\n"); $::expert = /-expert/; print "[$::expert]\n"; my $keyboard; if ($::expert) { ($keyboard) = grep { !/^-/ } @ARGV } print "[$keyboard]\n"; my $in = 'interactive'->vnew('su', 'keyboard'); begin: $::isEmbedded and kill USR2, $::CCPID; $keyboard ||= $in->ask_from_listf_(_("Keyboard"), _("Please, choose your keyboard layout."), \&keyboard::keyboard2text, [ keyboard::keyboards() ], keyboard::read()); if ($keyboard) { keyboard::keyboard2text($keyboard) or die "bad keyboard $keyboard\n"; my $isNotDelete = $::expert && !$in->ask_yesorno("BackSpace", _("Do you want the BackSpace to return Delete in console?"), 1); my $kmap = keyboard::keyboard2kmap($keyboard); system('loadkeys', $kmap); my $xkb = keyboard::keyboard2xkb($keyboard); system('setxkbmap', $xkb); eval { my $xfree_conf = Xconfig::xfree->read; my $x_kbd_conf = $xfree_conf->get_keyboard; $x_kbd_conf->{XkbLayout} = $xkb; $xfree_conf->set_keyboard($x_kbd_conf); $xfree_conf->write; }; keyboard::write('', $keyboard, $isNotDelete); } if ($::isEmbedded) { kill(USR1, $::CCPID); $keyboard = ''; goto begin; } else { $in->exit(0); }