diff options
Diffstat (limited to 'perl-install/Xconfig/xfree3.pm')
-rw-r--r-- | perl-install/Xconfig/xfree3.pm | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/perl-install/Xconfig/xfree3.pm b/perl-install/Xconfig/xfree3.pm new file mode 100644 index 000000000..7b2081dfc --- /dev/null +++ b/perl-install/Xconfig/xfree3.pm @@ -0,0 +1,56 @@ +package Xconfig::xfree3; # $Id$ + +use diagnostics; +use strict; + +use MDK::Common; +use Xconfig::parse; +use Xconfig::xfreeX; + +our @ISA = 'Xconfig::xfreeX'; + +sub config_file { '/etc/X11/XF86Config' } + + +sub get_keyboard_section { + my ($raw_X) = @_; + return $raw_X->get_Section('Keyboard') or die "no keyboard section"; +} + +sub new_keyboard_section { + my ($raw_X) = @_; + return $raw_X->add_Section('Keyboard', { Protocol => { val => 'Standard' } }); +} + +sub get_mouse_sections { + my ($raw_X) = @_; + my $main = $raw_X->get_Section('Pointer') or die "no mouse section"; + my $XInput = $raw_X->get_Section('XInput'); + $main, if_($XInput, map { $_->{l} } @{$XInput->{Mouse} || []}); +} + +sub new_mouse_sections { + my ($raw_X, $nb_new) = @_; + + $raw_X->remove_Section('Pointer'); + my $XInput = $raw_X->get_Section('XInput'); + delete $XInput->{Mouse} if $XInput; + $raw_X->remove_Section('XInput') if $nb_new <= 1 && $XInput && !%$XInput; + + $nb_new or return; + + my $main = $raw_X->add_Section('Pointer', {}); + + if ($nb_new == 1) { + $main; + } else { + my @l = map { { DeviceName => { val => "Mouse$_" }, AlwaysCore => {} } } (2 .. $nb_new); + $XInput ||= $raw_X->add_Section('XInput', {}); + $XInput->{Mouse} = [ map { { l => $_ } } @l ]; + $main, @l; + } +} + +sub set_Option {} + +1; |