summaryrefslogtreecommitdiffstats
path: root/perl-install/standalone/mousedrake
blob: 852c5e612c6ac23a2e4ec460b414698fd6ed69ee (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
#!/usr/bin/perl

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

use common qw(:system);
use interactive;
use mouse;

local $_ = join '', @ARGV;

/-h/ and die "usage: mousedrake [--auto] [--noauto] [--testing]\n";

$::auto = /--auto/;
$::noauto = /--noauto/;
$::testing = /--testing/;
$::isStandalone = 1;

my $in = vnew interactive;

my $mouse = mouse::detect() unless $::noauto;

if (!(my $name = $mouse->{FULLNAME}) || !$::auto) {
    $name ||= "Generic Mouse (serial)";
    $name = $in->ask_from_list_('', _("What is the type of your mouse?"), [ mouse::names() ], $name);
    $mouse = mouse::name2mouse($name);

    if ($mouse->{device} eq "usbmouse") {
	my ($c) = pci_probing::main::probe("serial_usb") or die _("no serial_usb found\n");
	eval { modules::load($c->[1], "serial_usb") };
    }
}

$mouse->{XEMU3} = 'yes' if $mouse->{nbuttons} < 3 && (!$::noauto || $in->ask_yesorno('', _("Emulate third button?"), 1));

$mouse->{device} = mouse::serial_ports_names2dev(
	$in->ask_from_list(_("Mouse Port"),
			   _("Which serial port is your mouse connected to?"),
			   [ mouse::serial_ports_names() ])) if $mouse->{device} eq "ttyS";

mouse::write('', $mouse);
modules::write_conf("/etc/conf.modules") if $mouse->{device} eq "usbmouse" && !$::testing;

my $f = "/etc/X11/XF86Config";
substInFile {
    if (/^Section "Pointer"/ .. /^EndSection/) {
	s|^(\s*Protocol\s+).*|$1 "$mouse->{XMOUSETYPE}"|;
	s|^(\s*Device\s+).*|$1 "/dev/mouse"|;
    }
} $f if -e $f && !$::testing;

exec 'true' if ref($in) =~ /gtk/; #- workaround for perl-GTK