summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/mousedrake74
1 files changed, 74 insertions, 0 deletions
diff --git a/tools/mousedrake b/tools/mousedrake
new file mode 100755
index 0000000..2f6d0dd
--- /dev/null
+++ b/tools/mousedrake
@@ -0,0 +1,74 @@
+#!/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;
+
+
+$ugtk2::wm_icon = "/usr/share/mcc/themes/default/mousedrake-mdk.png";
+my $in = 'interactive'->vnew('su');
+
+my $modules_conf = modules::any_conf->read;
+
+begin:
+my $mouse = mouse::read();
+my %old = %$mouse;
+
+if (!$::noauto) {
+ my $probed_mouse = mouse::detect($modules_conf);
+ $mouse = $probed_mouse if !$mouse->{XMOUSETYPE} || !$probed_mouse->{unsafe};
+}
+
+if (!$mouse || !$::auto) {
+ $mouse ||= mouse::fullname2mouse("serial|Generic 2 Button Mouse");
+ my $test_hbox;
+ 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($modules_conf, '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->do_pkgs, $modules_conf, $mouse, 1);
+
+if ($in->isa('interactive::gtk') && mouse::change_mouse_live($mouse, \%old)) {
+
+ 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),
+ $w->create_okcancel));
+ 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;