summaryrefslogtreecommitdiffstats
path: root/perl-install/Xconfig/xfree3.pm
blob: 7b2081dfc242ea86c4254df5ede97cd87daa168a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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;