#!/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; 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'); choose: $keyboard->{KEYBOARD} = $in->ask_from_listf(N("Keyboard"), N("Please, choose your keyboard layout."), sub { translate(keyboard::KEYBOARD2text($_[0])) }, [ keyboard::KEYBOARDs() ], $keyboard->{KEYBOARD}) 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"; } my $xkb = keyboard::keyboard2full_xkb($keyboard); system('setxkbmap', '-option', '') if $xkb->{XkbOptions}; #- need re-initialised other toggles are cumulated system('setxkbmap', $xkb->{XkbLayout}, '-model' => $xkb->{XkbModel}, '-option' => $xkb->{XkbOptions} || '', '-compat' => $xkb->{XkbCompat} || ''); eval { my $xfree_conf = Xconfig::xfree->read; $xfree_conf->set_keyboard($xkb); $xfree_conf->write; }; keyboard::write($keyboard); system('/etc/init.d/keytable', 'restart'); end: $in->exit(0) if $in;