#!/usr/bin/perl use lib qw(/usr/lib/libDrakX); use standalone; #- warning, standalone must be loaded very first, for 'explanations' use common; use interactive; use modules; use mouse; use c; my $in = 'interactive'->vnew('su'); modules::mergein_conf('/etc/modules.conf') if -r '/etc/modules.conf'; undef $::Plug; begin: my $mouse = mouse::read(); if (!$::noauto) { my $probed_mouse = mouse::detect(); $mouse = $probed_mouse if !$mouse->{XMOUSETYPE} || !$probed_mouse->{unsafe}; } if (!$mouse || !$::auto) { $mouse ||= mouse::fullname2mouse("serial|Generic 2 Button Mouse"); my $test_hbox; if ($::isEmbedded && $in->isa('interactive::gtk')) { #- HACK: waiting for the ask_from_treelistf to attach itself #- and adding the nice test mouse to it Glib::Timeout->add(100, sub { defined $::Plug && defined $::Plug->child or return 1; $test_hbox = Gtk2::HBox->new(0, 0); $::WizardTable->attach($test_hbox, 2, 3, 1, 2, ['fill', 'expand'], ['fill', 'expand'], 0, 0); $test_hbox->show_all; mouse::test_mouse_standalone($mouse, $test_hbox); 0; }); } my $name = $in->ask_from_treelistf('mousedrake', N("Please choose your mouse type."), '|', sub { join '|', map { translate($_) } split '\|', $_[0] }, [ mouse::fullnames ], $mouse->{type} . '|' . $mouse->{name}); $name or $in->exit(0); my $mouse_chosen = mouse::fullname2mouse($name); $mouse = $mouse_chosen if !($mouse->{type} eq $mouse_chosen->{type} && $mouse->{name} eq $mouse_chosen->{name}); if ($mouse->{device} eq "usbmouse") { modules::load_category('bus/usb') or die 'no usb bus found\n'; modules::load(qw(hid mousedev usbmouse)); } $mouse->{XEMU3} = 'yes' if $mouse->{nbuttons} < 3 && (!$::noauto || $in->ask_yesorno('', N("Emulate third button?"), 1)); $mouse->{device} = $in->ask_from_listf(N("Mouse Port"), N("Please choose which serial port your mouse is connected to."), \&mouse::serial_port2text, [ mouse::serial_ports ], $mouse->{device}, ) || goto begin if $mouse->{type} eq 'serial'; $test_hbox and $test_hbox->destroy; } mouse::write_conf($in, $mouse, 1); if (!$::isEmbedded && $in->isa('interactive::gtk')) { require ugtk2; ugtk2->import(qw(:wrappers :create)); my $w = ugtk2->new(N("Mouse test")); gtkadd($w->{window}, gtkpack(Gtk2::VBox->new(0, 5), Gtk2::Label->new(N("Please test your mouse:")), my $test_hbox = Gtk2::HBox->new(0, 5), gtkpack(create_hbox(), gtksignal_connect(Gtk2::Button->new(N("Cancel")), clicked => sub { $w->{retval} = 0; Gtk2->main_quit }), gtksignal_connect(Gtk2::Button->new(N("Ok")), clicked => sub { $w->{retval} = 1; Gtk2->main_quit }), ))); mouse::test_mouse_standalone($mouse, $test_hbox); $w->main or goto begin; } system('service', 'gpm', 'restart') if -e '/var/lock/subsys/gpm'; $in->exit(0); goto begin;