diff options
Diffstat (limited to 'tools/ddcprobe/lrmi.h')
0 files changed, 0 insertions, 0 deletions
![]() |
index : drakx | |
Mageia Installer and base platform for many utilities | Thierry Vignaud [tv] |
summaryrefslogtreecommitdiffstats |
package mouse; # $Id$
use diagnostics;
use strict;
#-######################################################################################
#- misc imports
#-######################################################################################
use common;
use modules;
use detect_devices;
use run_program;
use devices;
use commands;
use modules;
use any;
use log;
my @mouses_fields = qw(nbuttons MOUSETYPE XMOUSETYPE name);
my %mice =
arch() =~ /^sparc/ ?
(
'sunmouse' =>
[ [ 'sunmouse' ],
[ [ 3, 'sun', 'sun', __("Sun - Mouse") ]
]]
) :
(
'PS/2' =>
[ [ 'psaux' ],
[ [ 2, 'ps/2', 'PS/2', __("Standard") ],
[ 5, 'ps/2', 'MouseManPlusPS/2', __("Logitech MouseMan+") ],
[ 5, 'imps2', 'IMPS/2', __("Generic PS2 Wheel Mouse") ],
[ 5, 'ps/2', 'GlidePointPS/2', __("GlidePoint") ],
'',
[ 5, 'ps/2', 'ThinkingMousePS/2', __("Kensington Thinking Mouse") ],
[ 5, 'netmouse', 'NetMousePS/2', __("Genius NetMouse") ],
[ 5, 'netmouse', 'NetScrollPS/2', __("Genius NetScroll") ],
]],
'USB' =>
[ [ 'usbmouse' ],
[ if_(arch() eq 'ppc', [ 1, 'ps/2', 'PS/2', __("1 button") ]),
[ 2, 'ps/2', 'PS/2', __("Generic") ],
[ 5, 'ps/2', 'IMPS/2', __("Wheel") ],
]],
__("serial") =>
[ [ map { "ttyS$_" } 0..3 ],
[ [ 2, 'Microsoft', 'Microsoft', __("Generic 2 Button Mouse") ],
[ 3, 'Microsoft', 'Microsoft', __("Generic 3 Button Mouse") ],
[ 5, 'ms3', 'IntelliMouse', __("Microsoft IntelliMouse") ],
[ 3, 'MouseMan', 'MouseMan', __("Logitech MouseMan") ],
[ 2, 'MouseSystems', 'MouseSystems', __("Mouse Systems") ],
'',
[ 3, 'logim', 'MouseMan', __("Logitech CC Series") ],
[ 5, 'pnp', 'IntelliMouse', __("Logitech MouseMan+/FirstMouse+") ],
[ 5, 'ms3', 'IntelliMouse', __("Genius NetMouse") ],
[ 2, 'MMSeries', 'MMSeries', __("MM Series") ],
[ 2, 'MMHitTab', 'MMHittab', __("MM HitTablet") ],
[ 3, 'Logitech', 'Logitech', __("Logitech Mouse (serial, old C7 type)") ],
[ 3, 'Microsoft', 'ThinkingMouse', __("Kensington Thinking Mouse") ],
]],
__("busmouse") =>
[ [ arch() eq 'ppc' ? 'adbmouse' : ('atibm', 'inportbm', 'logibm') ],
[ if_(arch() eq 'ppc', [ 1, 'Busmouse', 'BusMouse', __("1 button") ]),
[ 2, 'Busmouse', 'BusMouse', __("2 buttons") ],
[ 3, 'Busmouse', 'BusMouse', __("3 buttons") ],
]],
__("none") =>
[ [ 'none' ],
[ [ 0, 'none', 'Microsoft', __("No mouse") ],
]],
);
sub xmouse2xId {
#- xmousetypes must be sorted as found in /usr/include/X11/extensions/xf86misc.h
#- so that first mean "0", etc
my @xmousetypes = (
"Microsoft",
"MouseSystems",
"MMSeries",
"Logitech",
"BusMouse", #MouseMan,
"Logitech",
"PS/2",
"MMHittab",
"GlidePoint",
"IntelliMouse",
"ThinkingMouse",
"IMPS/2",
"ThinkingMousePS/2",
"MouseManPlusPS/2",
"GlidePointPS/2",
"NetMousePS/2",
"NetScrollPS/2",
"SysMouse",
"Auto",
"AceCad",
"WSMouse",
"USB",
);
my ($id) = @_;
$id = 'BusMouse' if $id eq 'MouseMan';
my $i; map_index { $_ eq $id and $i = $::i } @xmousetypes; $i;
}
my %mouse_btn_keymap = (
0 => "NONE",
67 => "F9",
68 => "F10",
87 => "F11",
88 => "F12",
85 => "F13",
89 => "F14",
90 => "F15",
56 => "L-Option/Alt",
125 => "L-Command",
98 => "Num: /",
55 => "Num: *",
117 => "Num: =",
);
sub ppc_one_button_keys { keys %mouse_btn_keymap }
sub ppc_one_button_key2text { $mouse_btn_keymap{$_[0]} }
sub raw2mouse {
my ($type, $raw) = @_;
$raw or return;
my %l; @l{@mouses_fields} = @$raw;
+{ %l, type => $type };
}
sub update_type_name {
my ($mouse) = @_;
while (my ($k, $v) = each %mice) {
$mouse->{device} =~ /usb/ && $k ne 'USB' and next; #- avoid mixing USB and PS/2 mice.
foreach (@{$v->[1]}) {
if ($_->[0] == $mouse->{nbuttons} && $_->[2] eq $mouse->{XMOUSETYPE}) {
add2hash($mouse, { MOUSETYPE => $_->[1],
type => $k,
name => $_->[3],
});
return $mouse;
}
}
}
}
sub fullnames {
map_each {
my $type = $::a;
grep {$_} map {
if ($_) {
my $l = raw2mouse($type, $_);
"$type|$l->{name}";
} else {
$type .= "|[" . _("Other") . "]";
'';
}
} @{$::b->[1]}
} %mice;
}
sub fullname2mouse {
my ($fname, %opts) = @_;
my ($type, @l) = split '\|', $fname;
my ($name) = pop @l;
$opts{device} ||= $mice{$type}[0][0];
foreach (@{$mice{$type}[1]}) {
my $l = raw2mouse($type, $_);
$name eq $l->{name} and return { %$l, %opts };
}
die "$fname not found ($type, $name)";
}
sub serial_ports() { map { "ttyS$_" } 0..7 }
sub serial_port2text {
$_[0] =~ /ttyS(\d+)/ ? "$_[0] / COM" . ($1 + 1) : $_[0];
}
sub read {
my ($prefix) = @_;
my %mouse = getVarsFromSh "$prefix/etc/sysconfig/mouse";
eval { add2hash_(\%mouse, fullname2mouse($mouse{FULLNAME})) };
$mouse{device} = readlink "$prefix/dev/mouse" or log::l("reading $prefix/dev/mouse symlink failed");
$mouse{nbuttons} = $mouse{XEMU3} eq "yes" ? 2 : $mouse{WHEEL} eq "yes" ? 5 : 3;
\%mouse;
}
sub write {
my ($prefix, $mouse) = @_;
local $mouse->{FULLNAME} = qq("$mouse->{type}|$mouse->{name}"); #-"
local $mouse->{XEMU3} = bool2yesno($mouse->{nbuttons} < 3);
local $mouse->{WHEEL} = bool2yesno($mouse->{nbuttons} > 3);
setVarsInSh("$prefix/etc/sysconfig/mouse", $mouse, qw(MOUSETYPE XMOUSETYPE FULLNAME XEMU3 WHEEL device));
any::devfssymlinkf ($mouse->{device}, 'mouse', $prefix) or log::l("creating $prefix/dev/mouse symlink failed");