summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/Xconfig.pm4
-rw-r--r--perl-install/Xconfigurator.pm104
-rw-r--r--perl-install/Xconfigurator_consts.pm12
-rw-r--r--perl-install/mouse.pm20
4 files changed, 76 insertions, 64 deletions
diff --git a/perl-install/Xconfig.pm b/perl-install/Xconfig.pm
index a40251ea5..a98abdccb 100644
--- a/perl-install/Xconfig.pm
+++ b/perl-install/Xconfig.pm
@@ -58,8 +58,10 @@ sub getinfoFromXF86Config {
if ($i =~ /E0/) {
@keyboard{qw(xkb_keymap)} = @c{qw(xkb_keymap)}
if $c{driver} =~ /keyboard/i;
+ @{$mouse{auxmouse}}{qw(XMOUSETYPE device chordmiddle nbuttons)} = @c{qw(XMOUSETYPE device chordmiddle nbuttons)}
+ if $c{driver} =~ /mouse/i && $mouse{device};
@mouse{qw(XMOUSETYPE device chordmiddle nbuttons)} = @c{qw(XMOUSETYPE device chordmiddle nbuttons)}
- if $c{driver} =~ /mouse/i;
+ if $c{driver} =~ /mouse/i && !$mouse{device};
$wacom{$c{device}} = undef
if $c{driver} =~ /wacom/i;
}
diff --git a/perl-install/Xconfigurator.pm b/perl-install/Xconfigurator.pm
index 8c37dce50..fe5b05764 100644
--- a/perl-install/Xconfigurator.pm
+++ b/perl-install/Xconfigurator.pm
@@ -2,7 +2,7 @@ package Xconfigurator; # $Id$
use diagnostics;
use strict;
-use vars qw($in $install @window_managers @depths @monitorSize2resolution @hsyncranges %min_hsync4wres @vsyncranges %depths @resolutions %serversdriver @svgaservers @accelservers @allbutfbservers @allservers %vgamodes %videomemory @ramdac_name @ramdac_id @clockchip_name @clockchip_id %keymap_translate %standard_monitors $XF86firstchunk_text $keyboardsection_start $keyboardsection_start_v4 $keyboardsection_part2 $keyboardsection_part3 $keyboardsection_part3_v4 $keyboardsection_end $pointersection_text $pointersection_text_v4 $monitorsection_text1 $monitorsection_text2 $monitorsection_text3 $monitorsection_text4 $modelines_text_Trident_TG_96xx $modelines_text $devicesection_text $devicesection_text_v4 $screensection_text1 %lines @options %xkb_options $good_default_monitor $low_default_monitor $layoutsection_v4);
+use vars qw($in $install @window_managers @depths @monitorSize2resolution @hsyncranges %min_hsync4wres @vsyncranges %depths @resolutions %serversdriver @svgaservers @accelservers @allbutfbservers @allservers %vgamodes %videomemory @ramdac_name @ramdac_id @clockchip_name @clockchip_id %keymap_translate %standard_monitors $XF86firstchunk_text $keyboardsection_start $keyboardsection_start_v4 $keyboardsection_part2 $keyboardsection_part3 $keyboardsection_part3_v4 $keyboardsection_end $pointersection_text $monitorsection_text1 $monitorsection_text2 $monitorsection_text3 $monitorsection_text4 $modelines_text_Trident_TG_96xx $modelines_text $devicesection_text $devicesection_text_v4 $screensection_text1 %lines @options %xkb_options $good_default_monitor $low_default_monitor $layoutsection_v4);
use common qw(:common :file :functional :system);
use log;
@@ -844,37 +844,46 @@ sub write_XF86Config {
print G $keyboardsection_end;
#- Write pointer section.
- $O = $o->{mouse};
+ my $pointer = sub {
+ my ($O, $id) = @_;
+ print F qq(Section "Pointer"\n);
+ print G qq(Section "InputDevice"\n\n);
+ print F qq( DeviceName "Mouse$id"\n);
+ print G qq( Identifier "Mouse$id"\n);
+ print G qq( Driver "mouse"\n);
+ print F qq( Protocol "$O->{XMOUSETYPE}"\n);
+ print G qq( Option "Protocol" "$O->{XMOUSETYPE}"\n);
+ print F qq( Device "/dev/$O->{device}"\n);
+ print G qq( Option "Device" "/dev/$O->{device}"\n);
+ #- this will enable the "wheel" or "knob" functionality if the mouse supports it
+ print F " ZAxisMapping 4 5\n" if $O->{nbuttons} > 3;
+ print F " ZAxisMapping 6 7\n" if $O->{nbuttons} > 5;
+ print G qq( Option "ZAxisMapping" "4 5"\n) if $O->{nbuttons} > 3;
+ print G qq( Option "ZAxisMapping" "6 7"\n) if $O->{nbuttons} > 5;
+
+ print F "#" unless $O->{nbuttons} < 3;
+ print G "#" unless $O->{nbuttons} < 3;
+ print F qq( Emulate3Buttons\n);
+ print G qq( Option "Emulate3Buttons"\n);
+ print F "#" unless $O->{nbuttons} < 3;
+ print G "#" unless $O->{nbuttons} < 3;
+ print F qq( Emulate3Timeout 50\n\n);
+ print G qq( Option "Emulate3Timeout" "50"\n\n);
+ print F "# ChordMiddle is an option for some 3-button Logitech mice\n\n";
+ print G "# ChordMiddle is an option for some 3-button Logitech mice\n\n";
+ print F "#" unless $O->{chordmiddle};
+ print G "#" unless $O->{chordmiddle};
+ print F qq( ChordMiddle\n\n);
+ print G qq( Option "ChordMiddle"\n\n);
+ print F " ClearDTR\n" if $O->{cleardtrrts};
+ print F " ClearRTS\n\n" if $O->{cleardtrrts};
+ print F "EndSection\n\n\n";
+ print G "EndSection\n\n\n";
+ };
print F $pointersection_text;
- print G $pointersection_text_v4;
- print F qq( Protocol "$O->{XMOUSETYPE}"\n);
- print G qq( Option "Protocol" "$O->{XMOUSETYPE}"\n);
- print F qq( Device "/dev/$O->{device}"\n);
- print G qq( Option "Device" "/dev/$O->{device}"\n);
- #- this will enable the "wheel" or "knob" functionality if the mouse supports it
- print F " ZAxisMapping 4 5\n" if $O->{nbuttons} > 3;
- print F " ZAxisMapping 6 7\n" if $O->{nbuttons} > 5;
- print G qq( Option "ZAxisMapping" "4 5"\n) if $O->{nbuttons} > 3;
- print G qq( Option "ZAxisMapping" "6 7"\n) if $O->{nbuttons} > 5;
-
- print F "#" unless $O->{nbuttons} < 3;
- print G "#" unless $O->{nbuttons} < 3;
- print F qq( Emulate3Buttons\n);
- print G qq( Option "Emulate3Buttons"\n);
- print F "#" unless $O->{nbuttons} < 3;
- print G "#" unless $O->{nbuttons} < 3;
- print F qq( Emulate3Timeout 50\n\n);
- print G qq( Option "Emulate3Timeout" "50"\n\n);
- print F "# ChordMiddle is an option for some 3-button Logitech mice\n\n";
- print G "# ChordMiddle is an option for some 3-button Logitech mice\n\n";
- print F "#" unless $O->{chordmiddle};
- print G "#" unless $O->{chordmiddle};
- print F qq( ChordMiddle\n\n);
- print G qq( Option "ChordMiddle"\n\n);
- print F " ClearDTR\n" if $O->{cleardtrrts};
- print F " ClearRTS\n\n" if $O->{cleardtrrts};
- print F "EndSection\n\n\n";
- print G "EndSection\n\n\n";
+ print G $pointersection_text;
+ $pointer->($o->{mouse}, 1);
+ $o->{mouse}{auxmouse} and $pointer->($o->{mouse}{auxmouse}, 2);
#- write module section for version 3.
if (@{$o->{wacom}} || $o->{card}{Utah_glx}) {
@@ -893,21 +902,21 @@ sub write_XF86Config {
print F $dev =~ /input\/event/ ? qq(
Section "XInput"
SubSection "WacomStylus"
- DeviceName "stylus$_"
+ DeviceName "Stylus$_"
Port "$dev"
USB
AlwaysCore
Mode Absolute
EndSubSection
SubSection "WacomCursor"
- DeviceName "cursor$_"
+ DeviceName "Cursor$_"
Port "$dev"
USB
AlwaysCore
Mode Relative
EndSubSection
SubSection "WacomEraser"
- DeviceName "eraser$_"
+ DeviceName "Eraser$_"
Port "$dev"
USB
AlwaysCore
@@ -918,19 +927,19 @@ EndSection
) : qq(
Section "XInput"
SubSection "WacomStylus"
- DeviceName "stylus$_"
+ DeviceName "Stylus$_"
Port "$dev"
AlwaysCore
Mode Absolute
EndSubSection
SubSection "WacomCursor"
- DeviceName "cursor$_"
+ DeviceName "Sursor$_"
Port "$dev"
AlwaysCore
Mode Relative
EndSubSection
SubSection "WacomEraser"
- DeviceName "eraser$_"
+ DeviceName "Eraser$_"
Port "$dev"
AlwaysCore
Mode Absolute
@@ -944,7 +953,7 @@ EndSection
my $dev = "/dev/" . $o->{wacom}[$_-1];
print G $dev =~ /input\/event/ ? qq(
Section "InputDevice"
- Identifier "stylus$_"
+ Identifier "Stylus$_"
Driver "wacom"
Option "Type" "stylus"
Option "Device" "$dev"
@@ -952,7 +961,7 @@ Section "InputDevice"
Option "USB" "on"
EndSection
Section "InputDevice"
- Identifier "eraser$_"
+ Identifier "Eraser$_"
Driver "wacom"
Option "Type" "eraser"
Option "Device" "$dev"
@@ -960,7 +969,7 @@ Section "InputDevice"
Option "USB" "on"
EndSection
Section "InputDevice"
- Identifier "cursor$_"
+ Identifier "Cursor$_"
Driver "wacom"
Option "Type" "cursor"
Option "Device" "$dev"
@@ -969,21 +978,21 @@ Section "InputDevice"
EndSection
) : qq(
Section "InputDevice"
- Identifier "stylus$_"
+ Identifier "Stylus$_"
Driver "wacom"
Option "Type" "stylus"
Option "Device" "$dev"
Option "Mode" "Absolute"
EndSection
Section "InputDevice"
- Identifier "eraser$_"
+ Identifier "Eraser$_"
Driver "wacom"
Option "Type" "eraser"
Option "Device" "$dev"
Option "Mode" "Absolute"
EndSection
Section "InputDevice"
- Identifier "cursor$_"
+ Identifier "Cursor$_"
Driver "wacom"
Option "Type" "cursor"
Option "Device" "$dev"
@@ -1221,11 +1230,14 @@ Section "ServerLayout"
print G '
InputDevice "Mouse1" "CorePointer"
';
+ $o->{mouse}{auxmouse} and print G '
+ InputDevice "Mouse2" "SendCoreEvents"
+';
foreach (1..@{$o->{wacom}}) {
print G '
- InputDevice "stylus$_" "AlwaysCore"
- InputDevice "eraser$_" "AlwaysCore"
- InputDevice "cursor$_" "AlwaysCore"
+ InputDevice "Stylus$_" "AlwaysCore"
+ InputDevice "Eraser$_" "AlwaysCore"
+ InputDevice "Cursor$_" "AlwaysCore"
';
}
print G '
diff --git a/perl-install/Xconfigurator_consts.pm b/perl-install/Xconfigurator_consts.pm
index 918f1d415..9c6e67c5f 100644
--- a/perl-install/Xconfigurator_consts.pm
+++ b/perl-install/Xconfigurator_consts.pm
@@ -596,18 +596,6 @@ $pointersection_text = '
# Pointer section
# **********************************************************************
-Section "Pointer"
-';
-
-$pointersection_text_v4 = '
-# **********************************************************************
-# Pointer section
-# **********************************************************************
-
-Section "InputDevice"
-
- Identifier "Mouse1"
- Driver "mouse"
';
$monitorsection_text1 = '
diff --git a/perl-install/mouse.pm b/perl-install/mouse.pm
index ac5498407..0a09d0ae9 100644
--- a/perl-install/mouse.pm
+++ b/perl-install/mouse.pm
@@ -205,17 +205,21 @@ sub detect() {
my @wacom;
my $fast_mouse_probe = sub {
+ my $auxmouse = detect_devices::hasMousePS2("psaux") && fullname2mouse("PS/2|Standard", unsafe => 1);
+
if (modules::get_alias("usb-interface")) {
if (my (@l) = detect_devices::usbMice()) {
log::l("found usb mouse $_->{driver} $_->{description} ($_->{type})") foreach @l;
eval { modules::load("usbmouse"); modules::load("mousedev"); };
- !$@ && detect_devices::tryOpen("usbmouse") and
- return fullname2mouse($l[0]{driver} =~ /Mouse:(.*)/ ? $1 : "USB|Generic");
+ if (!$@ && detect_devices::tryOpen("usbmouse")) {
+ my $mouse = fullname2mouse($l[0]{driver} =~ /Mouse:(.*)/ ? $1 : "USB|Generic");
+ $auxmouse and $mouse->{auxmouse} = $auxmouse; #- for laptop, we kept the PS/2 as secondary (symbolic).
+ return $mouse;
+ }
eval { modules::unload("mousedev"); modules::unload("usbmouse"); };
}
}
- detect_devices::hasMousePS2("psaux") and return fullname2mouse("PS/2|Standard", unsafe => 1);
- undef;
+ $auxmouse;
};
if (modules::get_alias("usb-interface")) {
@@ -231,6 +235,8 @@ sub detect() {
}
}
+ #- at this level, not all possible mice are detected so avoid invoking serial_probe
+ #- which takes a while for its probe.
if ($::isStandalone) {
my $mouse = $fast_mouse_probe->();
$mouse and return ($mouse, @wacom);
@@ -238,11 +244,15 @@ sub detect() {
#- probe serial device to make sure a wacom has been detected.
eval { modules::load("serial") };
- my ($r, @serial_wacom) = mouseconfig(); push @wacom, @serial_wacom; return ($r, @wacom) if $r;
+ my ($r, @serial_wacom) = mouseconfig(); push @wacom, @serial_wacom;
if (!$::isStandalone) {
my $mouse = $fast_mouse_probe->();
+ $r && $mouse and $r->{auxmouse} = $mouse; #- we kept the auxilliary mouse as PS/2.
+ $r and return ($r, @wacom);
$mouse and return ($mouse, @wacom);
+ } else {
+ $r and return ($r, @wacom);
}
#- in case only a wacom has been found, assume an inexistant mouse (necessary).