Eunice Thompson wrote:
>
> Hi,
> I'm using MDK 7.1 beta
> I have an MS intellimouse ,ps/2.
> I would like to have imwheel start automatically, or even be able to start
> it as a regular user (It worked fine in v.7.02). The only way I seem to get
> the wheel working is to change to 'su' in a terminal ,and type imwheel -k
> and then it starts. I've tried changing the permissions but still no luck as
> anyone other than the superuser starting this process.
> **I have asked this question before, but didn't get a response.
>
> Eunice Thompson
> ----- Original Message -----
> From: "OS" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Tuesday, May 09, 2000 3:44 PM
> Subject: Re: [Cooker] scroll wheel on logitech mouse ?
>
> > Hello,
> >
> > So far I have tried EVERYTHING posted on the cooker site to try and
> persuade X
> > to use the wheel with absolutely no luck.
> >
> > Has anyone got any more suggestions ?!?!
> >
> > Owen
> >
try my patch....
--
Yours Sincerly, __ _
Christian Zoffoli / / (_)__ __ ____ __
/ /__/ / _ \/ // /\ \/ /
http://www.littlepenguin.org /____/_/_//_/_,_/ /_/_\
[EMAIL PROTECTED] * * LittlePenguin H 1 L.U.G. * *
package mouse;
# Wheel patch by Christian Zoffoli <[EMAIL PROTECTED]>
#-######################################################################################
#- misc imports
#-######################################################################################
use common qw(:common :system :functional :file);
use modules;
use detect_devices;
use run_program;
use devices;
use commands;
use modules;
use log;
my @mouses_fields = qw(nbuttons device MOUSETYPE XMOUSETYPE Nwheels FULLNAME);
my @mouses = (
arch() =~ /^sparc/ ? (
[ 3, "sunmouse", "sun", "sun", 0, __("Sun - Mouse") ],
) : arch() eq "ppc" ? (
[ 1, "adbmouse", "Busmouse", "BusMouse", 0, __("Apple ADB Mouse") ],
[ 2, "adbmouse", "Busmouse", "BusMouse", 0, __("Apple ADB Mouse (2
Buttons)") ],
[ 3, "adbmouse", "Busmouse", "BusMouse", 0, __("Apple ADB Mouse (3+
Buttons)") ],
[ 1, "usbmouse", "imps2", "IMPS/2", 0, __("Apple USB Mouse") ],
[ 2, "usbmouse", "imps2", "IMPS/2", 0, __("Apple USB Mouse (2
Buttons)") ],
[ 3, "usbmouse", "imps2", "IMPS/2", 0, __("Apple USB Mouse (3+
Buttons)") ],
) : (
[ 2, "psaux", "ps/2", "PS/2", 0, __("Generic Mouse (PS/2)") ],
[ 3, "psaux", "ps/2", "PS/2", 0, __("Logitech
MouseMan/FirstMouse (ps/2)") ],
[ 3, "psaux", "ps/2", "PS/2", 0, __("Generic 3 Button Mouse
(PS/2)") ],
[ 2, "psaux", "ps/2", "GlidePointPS/2", 0, __("ALPS GlidePoint (PS/2)") ],
[ 5, "psaux", "ps/2", "MouseManPlusPS/2", 1, __("Logitech
MouseMan+/FirstMouse+ (PS/2)") ],
[ 5, "psaux", "ps/2", "ThinkingMousePS/2", 1, __("Kensington Thinking Mouse
(PS/2)") ],
[ 5, "psaux", "ps/2", "NetMousePS/2", 1, __("ASCII MieMouse (PS/2)") ],
[ 5, "psaux", "netmouse", "NetMousePS/2", 1, __("Genius NetMouse (PS/2)") ],
[ 5, "psaux", "netmouse", "NetMousePS/2", 1, __("Genius NetMouse Pro
(PS/2)") ],
[ 5, "psaux", "netmouse", "NetScrollPS/2", 1, __("Genius NetScroll (PS/2)")
],
[ 5, "psaux", "imps2", "IMPS/2", 1, __("Microsoft IntelliMouse
(PS/2)") ],
[ 2, "atibm", "Busmouse", "BusMouse", 0, __("ATI Bus Mouse") ],
[ 2, "inportbm", "Busmouse", "BusMouse", 0, __("Microsoft Bus Mouse") ],
[ 3, "logibm", "Busmouse", "BusMouse", 0, __("Logitech Bus Mouse") ],
[ 2, "usbmouse", "ps/2", "PS/2", 0, __("USB Mouse") ],
[ 3, "usbmouse", "ps/2", "PS/2", 0, __("USB Mouse (3 buttons or
more)") ],
[ 3, "usbmouse", "ps/2", "IMPS/2", 1, __("Logitech TrackMan Marble
Wheel (USB)") ],
[ 3, "usbmouse", "ps/2", "PS/2", 0, __("Logitech TrackMan Marble
(USB)") ],
[ 3, "psaux", "ps/2", "IMPS/2", 1, __("Logitech TrackMan Marble
Wheel ") ],
),
[ 0, "none", "none", "Microsoft", 0, __("No Mouse") ],
[ 2, "ttyS", "pnp", "Auto", 0, __("Microsoft Rev 2.1A or
higher (serial)") ],
[ 3, "ttyS", "logim", "MouseMan", 0, __("Logitech CC Series
(serial)") ],
[ 5, "ttyS", "pnp", "IntelliMouse", 1, __("Logitech
MouseMan+/FirstMouse+ (serial)") ],
[ 5, "ttyS", "ms3", "IntelliMouse", 1, __("ASCII MieMouse (serial)")
],
[ 5, "ttyS", "ms3", "IntelliMouse", 1, __("Genius NetMouse (serial)")
],
[ 5, "ttyS", "ms3", "IntelliMouse", 1, __("Microsoft IntelliMouse
(serial)") ],
[ 2, "ttyS", "MMSeries", "MMSeries", 0, __("MM Series (serial)") ],
[ 2, "ttyS", "MMHitTab", "MMHittab", 0, __("MM HitTablet (serial)") ],
[ 3, "ttyS", "Logitech", "Logitech", 0, __("Logitech Mouse (serial,
old C7 type)") ],
[ 3, "ttyS", "MouseMan", "MouseMan", 0, __("Logitech
MouseMan/FirstMouse (serial)") ],
[ 2, "ttyS", "Microsoft", "Microsoft", 0, __("Generic Mouse (serial)") ],
[ 2, "ttyS", "Microsoft", "Microsoft", 0, __("Microsoft compatible
(serial)") ],
[ 3, "ttyS", "Microsoft", "Microsoft", 0, __("Generic 3 Button Mouse
(serial)") ],
[ 2, "ttyS", "MouseSystems", "MouseSystems", 0, __("Mouse Systems (serial)") ],
);
map_index {
my %l; @l{@mouses_fields} = @$_;
$mouses[$::i] = \%l;
} @mouses;
sub names { map { $_->{FULLNAME} } @mouses }
sub name2mouse {
my ($name) = @_;
foreach (@mouses) {
return { %$_ } if $name eq $_->{FULLNAME};
}
die "$name not found";
}
sub serial_ports_names() {
map { "ttyS" . ($_ - 1) . " / COM$_" } 1..4;
}
sub serial_ports_names2dev {
local ($_) = @_;
first(/(\w+)/);
}
sub read($) {
my ($prefix) = @_;
my %mouse = getVarsFromSh "$prefix/etc/sysconfig/mouse";
$mouse{device} = readlink "$prefix/dev/mouse" or log::l("reading $prefix/dev/mouse
symlink failed");
%mouse;
}
sub write($;$) {
my ($prefix, $mouse) = @_;
local $mouse->{FULLNAME} = qq("$mouse->{FULLNAME}");
local $mouse->{WHEEL} = bool2yesno($mouse->{Nwheels} > 0);
setVarsInSh("$prefix/etc/sysconfig/mouse", $mouse, qw(MOUSETYPE XMOUSETYPE
FULLNAME XEMU3 WHEEL device));
symlinkf $mouse->{device}, "$prefix/dev/mouse" or log::l("creating
$prefix/dev/mouse symlink failed");
}
sub mouseconfig {
my ($t, $mouse, $wacom);
#- Whouah! probing all devices from ttyS0 to ttyS3 once a time!
detect_devices::probeSerialDevices();
#- check new probing methods keep everything used here intact!
foreach (0..3) {
$t = detect_devices::probeSerial("/dev/ttyS$_");
if ($t->{CLASS} eq 'MOUSE') {
$t->{MFG} ||= $t->{MANUFACTURER};
$mouse = name2mouse("Microsoft IntelliMouse (serial)") if $t->{MFG} eq
'MSH' && $t->{MODEL} eq '0001';
$mouse = name2mouse("Logitech MouseMan/FirstMouse (serial)") if $t->{MFG}
eq 'LGI' && $t->{MODEL} =~ /^80/;
$mouse = name2mouse("Genius NetMouse (serial)") if $t->{MFG} eq 'KYE' &&
$t->{MODEL} eq '0003';
$mouse ||= name2mouse("Generic Mouse (serial)"); #- generic by default.
$mouse->{device} = "ttyS$_";
last;
} elsif ($t->{CLASS} eq "PEN" || $t->{MANUFACTURER} eq "WAC") {
$wacom = "ttyS$_";
}
}
$mouse, $wacom;
}
sub detect() {
return name2mouse("Sun - Mouse") if arch() =~ /^sparc/;
if (arch() eq "ppc") {
return name2mouse("Apple USB Mouse") if detect_devices::hasMouseMacUSB;
# No need to search for an ADB mouse. If I did, the PPC kernel would
# find one whether or not I had one installed! So.. default to it.
return name2mouse("Apple ADB Mouse");
}
detect_devices::hasMousePS2 and return { unsafe => 1, %{name2mouse("Generic Mouse
(PS/2)")} };
eval { commands::modprobe("serial") };
my ($r, $wacom) = mouseconfig(); return ($r, $wacom) if $r;
if (detect_devices::probeUSB()) {
eval {
modules::load("usbmouse");
modules::load("mousedev");
};
sleep(2);
if (!$@ && detect_devices::tryOpen("usbmouse")) {
$wacom or modules::unload("serial");
return name2mouse("USB Mouse"), $wacom;
}
modules::unload("mousedev");
modules::unload("usbmouse");
}
#- defaults to generic ttyS0
{ device => "ttyS0", unsafe => 1, %{name2mouse("Generic Mouse (serial)")} };
}
#!/usr/bin/perl
# Wheel patch by Christian Zoffoli <[EMAIL PROTECTED]>
use lib qw(/usr/lib/libDrakX);
use common qw(:system);
use interactive;
use mouse;
use c;
local $_ = join '', @ARGV;
/-h/ and die "usage: mousedrake [--auto] [--noauto] [--testing]\n";
$::auto = /-auto/;
$::noauto = /-noauto/;
$::testing = /-testing/;
$::isStandalone = 1;
my $in = vnew interactive('su');
my $mouse = eval { mouse::detect() } unless $::noauto;
if (!(my $name = $mouse && $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") {
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->{device} eq
"ttyS";
mouse::write('', $mouse);
modules::write_conf("/etc/conf.modules") if $mouse->{device} eq "usbmouse" &&
!$::testing;
my $f = "/etc/X11/XF86Config";
my $g = "/etc/X11/XF86Config-4";
substInFile {
if (/^Section "Pointer"/ .. /^EndSection/) {
s|^(\s*Protocol\s+).*|$1"$mouse->{XMOUSETYPE}"|;
s|^(\s*Device\s+).*|$1"/dev/mouse"|;
if ($mouse->{Nwheels} == 1 )
{ s|^([#]\s*ZAxisMapping\s+).*| ZAxisMapping\t4 5\n|; }
elsif ($mouse->{Nwheels} >= 2 )
{ s|^([#]\s*ZAxisMapping\s+).*| ZAxisMapping\t4 5 6 7\n|; }
else
{ s|^([#]\s*ZAxisMapping\s+).*|# ZAxisMapping\t\n|; }
}
} $f if -e $f && !$::testing;
substInFile {
if (/^Identifier "Mouse1"/ .. /^EndSection/) {
s|^(\s*Option\s+"Protocol"\s+).*|$1"$mouse->{XMOUSETYPE}"|;
s|^(\s*Option\s+"Device"\s+).*|$1"/dev/mouse"|;
}
} $g if -e $g && !$::testing;
$in->exit(0);