summaryrefslogtreecommitdiffstats
path: root/tools/keyboarddrake
blob: 8421406b2f49808343aaf3facd23d6af77e7a3c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/perl

use lib qw(/usr/lib/libDrakX);

# i18n: IMPORTANT: to get correct namespace (drakx-kbd-mouse-x11 instead of libDrakX)
BEGIN { unshift @::textdomains, 'drakx-kbd-mouse-x11' }

use standalone;     #- warning, standalone must be loaded very first, for 'explanations'

use interactive;
use keyboard;
use Xconfig::xfree;
use common;
use any;
use c;

require_root_capability();
my $in;
my $keyboard = keyboard::read_or_default();
if (my ($kb) = grep { !/^-/ } @ARGV) {
    keyboard::KEYBOARD2text($kb) or die "bad keyboard $kb\n";
    $keyboard->{KEYBOARD} = $kb;
} elsif (member('--migrate', @ARGV)) {
    keyboard::write($keyboard);
    exit 0;
} else {
    $ugtk3::wm_icon = "/usr/share/mcc/themes/default/keyboard-mdk.png";
    $in = 'interactive'->vnew('su');

    my ($xkb_models, $model2text) = keyboard::xkb_models();
    s/ /|/ foreach values %$model2text;
    my $default_XkbModel = keyboard::default_XkbModel($keyboard);
    $keyboard->{XkbModel} ||= $default_XkbModel;
    my $is_default_XkbModel = $keyboard->{XkbModel} eq $default_XkbModel;

  choose:
    $in->ask_from(N("Keyboard"),
		  N("Please, choose your keyboard layout."),
		  [ { label => N("Keyboard layout"),
		      title => 1,
		    },
		    { val => \$keyboard->{KEYBOARD},
		      format => sub { translate(keyboard::KEYBOARD2text($_[0])) },
		      list => [ keyboard::KEYBOARDs() ],
		      type => 'list',
		      changed => sub {
			  if ($is_default_XkbModel) {
			      $keyboard->{XkbModel} = keyboard::default_XkbModel($keyboard);
			  }
		      },
		    },
		    { label => N("Keyboard type"),
		      title => 1,
		    },
		    { val => \$keyboard->{XkbModel},
		      format => sub { $model2text->{$_[0]} },
		      separator => '|',
		      changed => sub { $is_default_XkbModel = 0 },
		      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::configure_and_set_standalone($keyboard);

end:
    $in->exit(0) if $in;