#!/usr/bin/perl use lib qw(/usr/lib/libDrakX); use common qw(:common :system); use interactive; use mouse; use c; local $_ = join '', @ARGV; /-h/ and die "usage: mousedrake [--auto] [--testing]\n"; $::auto = /-auto/; $::testing = /-testing/; $::isStandalone = 1; my $in = vnew interactive('su'); my ($mouse) = mouse::detect() unless $::noauto; if (!$mouse || !$::auto) { $mouse ||= mouse::fullname2mouse("serial|Generic 2 Button Mouse"); my $name = $in->ask_from_treelistf('', _("Please, choose the type of your mouse."), '|', sub { join '|', map { translate($_) } split '\|', $_[0] }, [ mouse::fullnames ], $mouse->{type} . '|' . $mouse->{name}); $mouse = mouse::fullname2mouse($name); if ($mouse->{device} eq "usbmouse") { require pci_probing::main; 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->{type} eq 'serial'; mouse::write('', $mouse); modules::write_conf('') if $mouse->{device} eq "usbmouse" && !$::testing; my $f = "/etc/X11/XF86Config"; my $g = "/etc/X11/XF86Config-4"; my @zaxis = ( $mouse->{nbuttons} > 3 ? [ "ZAxisMapping", "4 5" ] : (), $mouse->{nbuttons} > 5 ? [ "ZAxisMapping", "6 7" ] : (), $mouse->{nbuttons} < 3 ? ([ "Emulate3Buttons" ], [ "Emulate3Timeout", "50" ]) : () ); my $zaxis = join('', map { qq(\n $_->[0]) . ($_->[1] && qq( $_->[1])) } @zaxis); substInFile { if (/^Section\s+"Pointer"/ .. /^EndSection/) { $_ = '' if /(ZAxisMapping|Emulate3)/; #- remove existing line s|^(\s*Protocol\s+).*|$1"$mouse->{XMOUSETYPE}"|; s|^(\s*Device\s+).*|$1"/dev/mouse"$zaxis|; } } $f if -e $f && !$::testing; $zaxis = join('', map { qq(\n Option "$_->[0]") . ($_->[1] && qq( "$_->[1]")) } @zaxis); substInFile { if (/Identifier\s+"Mouse1"/ .. /^EndSection/) { $_ = '' if /(ZAxisMapping|Emulate3)/; #- remove existing line s|^(\s*Option\s+"Protocol"\s+).*|$1"$mouse->{XMOUSETYPE}"|; s|^(\s*Option\s+"Device"\s+).*|$1"/dev/mouse"$zaxis|; } } $g if -e $g && !$::testing; $in->exit(0);