ofs | hex dump | ascii |
---|
0000 | 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 02 1c 00 00 01 68 08 02 00 00 00 93 c7 b5 | .PNG........IHDR.......h........ |
0020 | 61 00 00 44 b9 49 44 41 54 78 01 b4 d5 79 6e ab 30 10 c7 f1 dc ff 00 2c 98 85 e4 e5 02 af 52 ff | a..D.IDATx...yn.0......,......R. |
0040 | 0c bb b1 c1 4e 73 82 56 ea 4d 3a 56 90 09 64 30 38 8b f4 b9 c0 7c 35 d2 6f f7 fb f3 7d 91 e2 b8 | ....Ns.V.M:V..d08....|5.o...}... |
0060 | 4f 7c c7 79 19 d7 8a 1b 58 f1 26 c8 0a cf 9a 3f 17 4e f8 61 80 0a 96 44 1a 41 11 b3 18 84 4b 42 | O|.y....X.&....?.N.a...D.A....KB |
0080 | 90 6c 11 a1 a2 51 1c a5 88 d8 4e a2 ec 47 c9 83 d2 45 87 34 7d 9f 7f 4f 3b bc 93 8e 80 48 1e 16 | .l...Q....N..G...E.4}..O;....H.. |
00a0 | 5f a5 5a 6c 25 9a 49 40 74 2b 44 84 eb e2 11 41 10 12 ad 0b 10 c1 20 34 f1 11 3e f0 34 72 cf 7b | _.Zl%.I@t+D....A.......4..>.4r.{ |
00c0 | 80 6b 16 dc 72 2d f8 8a 63 c7 79 d6 71 9f 5c a4 80 41 d9 09 ce 62 12 7c 7e fc af b2 d3 8b e5 99 | .k..r-..c.y.q.\..A...b.|~....... |
00e0 | 9d 22 af 37 29 94 72 a2 59 51 de a3 66 15 a2 1d 55 6d 3d c1 06 f5 a0 59 d2 28 14 c1 29 55 5a 83 | .".7).r.YQ..f...Um=....Y.(..)UZ. |
0100 | b6 db a0 07 0c c5 06 9c 09 04 9f e8 96 74 a3 7e 20 47 3d ea 6c 26 10 5f 42 98 48 dc 45 4a 6b e7 | .............t.~.G=.l&._B.H.EJk. |
0120 | b7 91 d6 e0 04 9c 30 81 5c 88 de 44 9a 74 40 68 dd 2d 8e e3 33 6c a6 07 4c 6b 11 db 7e 9b 2b 74 | ......0.\..D.t@h.-..3l..Lk..~.+t |
0140 | 11 55 18 6d 70 0d a8 71 b5 56 81 76 a6 02 a5 46 ef 95 26 0d ae 30 a8 67 8a ab 7c 55 05 f2 cc 4e | .U.mp..q.V.v...F..&..0.g..|U...N |
0160 | 76 7a 95 3f f6 be c3 c9 aa 2a 5b df ff e3 37 2a c1 19 19 90 9c 83 82 8e fe 50 1c 11 90 80 28 83 | vz.?.....*[...7*.........P....(. |
0180 | 04 7d 02 ea 73 28 24 2b a2 8e 92 33 a8 8c 04 90 a0 e0 1b a0 a1 69 68 82 08 ea 1b d1 79 03 0d dd | .}..s($+...3.........ih.....y... |
01a0 | 4d 96 ac e4 9c c3 7b 5f 79 aa 56 75 1d fa bb f5 dd de cd f5 de 76 7d d5 45 ed 7b d8 67 9d b5 f7 | M.....{_y.Vu.........v}.E.{.g... |
01c0 | 5a fb 7c 7b ef 73 ee 77 41 22 a0 12 84 fb ae ff 5a f8 f9 ba 35 ab ff d7 e1 70 38 1c 8e 00 80 4a | Z.|{.s.wA"......Z...5....p8....J |
01e0 | 40 28 77 2d f9 c7 3f b6 6e d9 1c 62 e8 de df fd bf 4c 69 b3 b9 1a 6e 01 85 b4 72 3b c4 9f 7f fd | @(w-..?.n..b.....Li...n...r;.... |
0200 | f0 43 b3 07 9b c0 82 de 70 47 d9 c6 a6 4d df 35 a8 5b a7 2c c5 3a 05 6d 71 80 4a 40 28 77 ad 59 | .C......pG...M.5.[.,.:.mq.J@(w.Y |
0220 | 99 b3 67 c7 f6 74 8b 56 b8 59 27 15 1d 6d 5b b7 5e 99 93 a3 37 dc 07 76 99 47 bb 36 6d be 5a bf | ..g..t.V.Y'..m[.^...7..v.G.6m.Z. |
0240 | 3e a9 a8 39 a9 38 40 25 20 94 88 54 0a c5 a8 dc fe e7 2b 15 1d e1 67 f1 83 41 4d ab 52 a9 d2 d5 | >..9.8@%...T......+...g..AM.R... |
0260 | ab 57 03 1a ee c8 8c a9 95 8e aa 95 ff 78 ed da b5 d4 5f f7 dc b9 73 c3 3f 78 1f eb e6 fb ef ab | .W...........x...._...s.?x...... |
0280 | 58 ad 4a e5 1e dd ba 7d bd 71 63 a6 f4 a4 03 54 f2 0b a9 e4 e4 ec d9 5e 18 12 1e 27 95 4c 27 15 | X.J....}.qc....T.......^...'.L'. |
02a0 | 3b d7 49 c5 49 e5 d7 bd 6e e7 e7 3a 0d e8 f7 c6 de bd 7b 41 69 27 4f 9c 58 96 95 d5 be ed 33 99 | ;.I.I...n..:......{Ai'O.X.....3. |
02c0 | d2 22 07 a8 04 84 52 3a a4 32 77 ce 9c 46 0d ea ff a1 62 85 56 2d 9f da be 7d 7b 74 fc e6 cd 9b | ."....R:.2w..F....b.V-...}{t.... |
02e0 | 13 27 8c 6f dc a0 01 66 1c 7d fb f4 b9 78 f1 62 cc ce 43 8d 1b ed d8 b1 23 2a 7f b1 70 61 54 c0 | .'.o...f.}...x.b..C.....#*..paT. |
0300 | 11 1c 8f dd c5 ec cf 0e ee dd b3 e7 e5 97 5e ac fe 40 15 cc b2 5f ea d1 fd e4 c9 93 56 19 2f 05 | ..............^..@..._......V./. |
0320 | 62 3b b8 dc dd bf c3 47 a4 e6 90 41 83 50 ad 76 8d 1a 1f 7d 38 b5 d8 c4 ba 7e fd fa 98 51 a3 1a | b;.....G...A.P.v...}8....~...Q.. |
0340 | d6 af 87 d9 d9 b4 8f 3f 8a 0e 62 e6 3e 6c e8 5b 38 0b 7f 28 e0 23 b9 b7 16 d3 4c 66 36 de 0a 76 | .......?..b.>l.[8..(.#....Lf6..v |
0360 | ae e0 76 dc 54 52 51 e0 a6 f4 86 b3 9a 6a 4c 89 b7 30 32 68 e0 80 a8 e1 1f 4e 9d c2 d8 14 ff 55 | ..v.TRQ......jL..02h.....N.....U |
0380 | ab 46 75 54 7b 73 f0 60 f4 95 9e 12 89 ab 7d 3a 67 76 93 86 0d ef 2b 5f ee b1 47 1e c6 43 85 45 | .FuT{s.`......}:gv....+_..G..C.E |
03a0 | 0b 3f c7 94 39 f2 70 f7 ae 5d bc 3f f5 c8 c6 9d c1 34 bc c5 e3 cd 71 09 74 c5 82 f9 f3 79 68 78 | .?..9.p..].?.....4....q.t....yhx |
03c0 | 9f 87 e4 33 09 44 71 1b 12 24 3a 7c 7e 13 6f ac 90 8a 00 16 28 58 ac dc 7e 3c 24 70 49 a7 4d 20 | ...3.Dq..$:|~.o.....(X..~<$pI.M. |
03e0 | 9c 54 56 e7 e4 ec 0e 26 95 17 bb 77 3f 78 f0 00 b2 64 fc b8 b1 cf b4 6e 15 1d ff fb b4 8f 3b 75 | .TV....&...w?x...d.....n......;u |
0400 | ec 70 e0 c0 fe 33 67 ce bc fe da ab ef 0e 1b 16 b3 83 fb 26 b2 01 85 23 47 8e 54 ae 74 ff 85 f3 | .p...3g............&...#G.T.t... |
0420 | e7 51 9e 33 7b 16 42 5e ec cc 62 fe bc 79 dd 5e e8 12 95 9b 3f f6 e8 b7 df 7c 73 f9 f2 65 a4 e0 | .Q.3{.B^..b..y.^....?....|s..e.. |
0440 | 5b 43 86 f4 7f a3 af 39 83 25 f3 cf 3f ff 1c 7d 1c 37 66 cc 73 cf 76 fc e9 a7 9f 70 89 8e ed db | [C.....9.%..?..}.7f.s.v....p.... |
0460 | 15 7b 93 9a 34 71 42 87 76 6d f7 ed db 07 3f 87 bd 3d 34 3a 88 61 89 13 71 56 74 e2 d8 d1 a3 c9 | .{..4qB.vm....?..=4:.a..qVt..... |
0480 | bd 95 34 93 98 b5 b3 d8 b9 ba db a1 51 20 a6 a4 86 f3 9a 62 4c 99 b7 a3 47 8e ec d2 f9 79 84 0f | ..4.........Q......bL...G....y.. |
04a0 | 78 be 53 27 d6 f0 a8 73 00 14 c6 8d 1d a3 a7 44 e2 6a 5d bb fc 05 f1 82 4b 93 27 4e 84 f3 3d ba | x.S'...s.......D.j].....K.'N..=. |
04c0 | 76 dd bf 7f 7f f4 11 f3 65 de 9f 7a 64 e3 ce d4 ad 55 73 45 76 36 6e d6 87 0f 1d ea d7 b7 2f 0d | v.......e..zd....UsEv6n......./. |
04e0 | 0d 8f 4e 50 3e f3 40 d8 75 ad cc a3 c3 49 c5 1a 2b a7 22 ec f7 ee f9 f2 f7 9b 36 21 40 76 30 3c | ..NP>.@.u....I..+.".......6!@v0< |
0500 | 70 c9 a7 8d a3 24 00 95 ac 2e 2d 52 39 76 ec 58 54 be 74 e9 12 e6 1a 51 f9 91 66 4d f7 ec de 1d | p....$....-R9v.XT.t....Q..fM.... |
0520 | 95 8f 1f 3f 86 d9 50 cc 4e 6e ee aa de 3d 7b a2 30 75 ca 94 9a d5 ab 45 33 35 a4 d4 ea dc dc db | ...?..P.Nn...={.0u.....E35...... |
0540 | af b2 71 c3 06 cc e9 a2 9b 54 0c e7 cf 9f c3 6c c8 9c 39 74 f0 60 d1 c5 d0 ce 9d 3b a2 32 66 61 | ..q......T.....l..9t.`.....;.2fa |
0560 | c5 de a4 9a 36 69 6c 33 65 c3 83 8d 1a 16 3d 11 76 c8 bd 95 34 93 98 b5 b3 d8 b9 ba db a1 51 20 | ....6il3e.....=.v...4.........Q. |
0580 | a6 a4 86 f3 9a 62 4c 99 b7 b0 69 53 4b 18 67 0d b7 eb da 1a 48 4c 89 c4 d5 8e 1e 3d 6a 2e e9 fd | .....bL...iSK.g.....HL.....=j... |
05a0 | 29 47 b6 18 67 1a d4 ab 3b 73 c6 8c 23 87 0f 0b 63 8d f4 79 40 3e 93 40 10 52 e1 d1 e1 a4 62 8d | )G..g...;s..#...c..y@>.@.R....b. |
05c0 | 55 53 11 11 01 ff 3d fe ff 1f c3 3a 03 97 fb db bb ef e2 5e 1f 1e b8 e4 d3 26 f5 70 52 11 3e 22 | US....=....:.......^.....&.pR.>" |
05e0 | 9c 28 db 5f f9 7b ee 8e d9 b9 70 e1 02 16 e9 28 34 7f f4 4f 6b d7 ac 69 d3 ea 69 94 71 04 53 0c | .(._.{....p....(4..Ok..i..i.q.S. |
0600 | b3 63 19 8c f5 6c d1 04 dd b2 65 cb b3 1d da 63 1d 1d 19 af 70 ef 3d 76 f5 5b b7 6e 59 35 a4 e6 | .c...l....e....c....p.=v.[.nY5.. |
0620 | 95 2b 57 a2 32 0a 31 57 6f af c3 4e c4 47 b3 2f 35 93 98 b5 b3 94 73 b9 db e1 51 a0 a6 a4 86 f3 | .+W.2.1Wo..N.G./5.....s...Q..... |
0640 | 9a 52 4c b9 b7 30 62 3b 33 09 1a 1e bf ae 98 12 bc 5a 78 7f 8a 91 8d 39 b3 35 2f 0f 0b 85 1a 55 | .RL..0b;3........Zx....9.5/....U |
0660 | 1f 40 7a 7f b9 6e 1d 0f 0d 8d 4e 68 3e 73 3e d0 a3 c3 8d 58 63 49 9f 70 e0 44 dc fa fb fc f5 75 | .@z..n....Nh>s>....XcI.p.D.....u |
0680 | ac 42 c2 03 97 7c da 38 d2 92 54 1e 6e fa 10 96 d5 89 4d 61 9d 8e 67 71 2d ff fc 24 ca f8 37 77 | .B...|.8..T.n.....Ma..gq-..$..7w |
06a0 | d5 4a ac cd 63 76 4e 1c 3f 0e 53 58 11 c7 9e c7 7c b1 68 d1 e9 d3 a7 6f dc b8 81 7f 59 7e a3 5a | .J..cvN.?.SX....|.h....o....Y~.Z |
06c0 | d1 e9 49 b1 37 29 8c e7 80 95 0a 69 26 31 1b 6d 2e 03 fc 5c d5 6d 98 0a 8e 42 e9 af 54 a4 98 72 | ..I.7).....i&1.m...\.m...B..T..r |
06e0 | 6f 93 5d a9 a0 80 eb ea 29 a1 57 d3 fb 53 8a 2c 31 6b 37 50 10 70 9d 9a 35 b8 59 1a 9d a0 7c d6 | o.].....).W..S.,1k7P.p..5.Y...|. |
0700 | 49 85 44 c7 c8 06 6b 82 a8 8c 55 02 eb 52 eb 13 1d 67 cf 9e c5 76 56 78 e0 92 4f 1b 47 5a 92 ca | I.D...k...U..R...g...vVx..O.GZ.. |
0720 | f4 4f 3e c1 de e5 ae 5d 3b f1 4c ac b0 b0 30 da 15 89 01 9b 24 f5 eb d4 c6 0e 00 ca 33 a6 4f c7 | .O>....];.L...0.....$.......3.O. |
0740 | da 13 0f d3 62 76 f0 b4 cd 1e f9 1a 30 02 57 ad cc c1 bc 09 9b a7 78 ce 86 ca 6c 0f 1a 9b bf b6 | ....bv......0.W.......x...l..... |
0760 | 91 5a 6c c6 60 e3 15 f7 41 d8 29 ba 07 3d 6a c4 08 db 83 c6 44 06 bb c9 66 5f 6a 26 31 8b 1d 21 | .Zl.`...A.)..=j.....D...f_j&1..! |
0780 | d4 44 81 9f ab ba 6d a6 c2 a3 60 95 f5 86 f3 9a 42 4c b9 b7 b0 69 bb f6 78 11 88 91 8a 75 0e 0a | .D....m...`.....BL...i..x....u.. |
07a0 | 78 3c a0 a6 04 af 16 9e d5 5a 64 e3 66 5f e9 d5 0b 37 38 d4 01 a9 d4 ab 5d 8b 47 99 46 27 3c 9f | x<.......Zd.f_...78.....].G.F'<. |
07c0 | 75 52 61 d1 c1 93 18 3c 8f c1 62 14 cf 4b f0 3c 83 75 a9 92 8a 78 04 82 19 09 36 c7 f0 ba 01 ac | uRa....<..b..K.<.u...x....6..... |
07e0 | 0d 1c d0 1f 57 0c 0f 5c f2 69 63 e7 3a d2 89 54 f0 b2 07 ee 2c d8 48 fd 7d 85 f2 d8 0c c1 8c f5 | ....W..\.ic.:..T....,.H.}....... |
0800 | 76 53 f9 db b6 55 2c 77 2f de 1d 8c 56 24 28 17 e4 e7 9b 9d 04 6f 7f ad 5b bb 16 13 1f d4 c7 d6 | vS...U,w/...V$(......o..[....... |
0820 | 0a ae c2 32 2c 7a 5f 05 6b 5b bc f5 91 e0 ed af 91 23 86 e3 de 87 6a 78 59 c5 16 c8 43 df 1c 12 | ...2,z_.k[.......#....jxY...C... |
0840 | bd 2d 83 02 3e 9a 7d a9 99 c4 2c 9e 55 e2 9d 9c c4 e7 8a 6e 9b a9 f0 28 58 65 bd e1 bc a6 10 53 | .-..>.}...,.U......n...(Xe.....S |
0860 | ee 2d 8c 0c ec df 2f 6a f8 84 f1 e3 70 6e 82 b7 bf 50 6d f0 c0 81 e8 2b 35 25 78 b5 f0 ac d6 22 | .-..../j....pn...Pm....+5%x...." |
0880 | 1b 37 9b b5 74 09 9c c1 4c 1f cf 0b f1 b8 98 47 99 f6 79 78 3e eb a4 c2 a2 83 a5 0f 66 7e d1 3b | .7..t...L......G..yx>.......f~.; |
08a0 | 6c 78 4d 83 75 a9 92 8a df 7c fd 35 5e c1 c2 25 60 0d 2f 74 e1 fd 0e ac 1e c2 03 97 7c da 38 a9 | lxM.u....|.5^..%`./t........|.8. |
08c0 | 04 91 ca 8a dd db 0b d2 cd 39 87 a3 b0 a0 00 b7 95 4c f9 c2 81 47 c7 e1 00 95 80 50 9c 54 1c e9 | .........9.......L...G.....P.T.. |
08e0 | 05 ec d8 60 5f 1e 2f 65 e0 f5 d3 77 86 bd 9d 39 a4 e2 d1 31 38 9c 54 0a 9d 54 1c
my $xf_ver = $X->{card}{driver} && !$X->{card}{prefer_xf3} ? "4.2.0" : "3.3.6";
my $title = ($X->{card}{use_DRI_GLX} || $X->{card}{use_UTAH_GLX} ?
_("XFree %s with 3D hardware acceleration", $xf_ver) : _("XFree %s", $xf_ver));
$info .= _("Keyboard layout: %s\n", $X->{keyboard}{XkbLayout});
$info .= _("Mouse type: %s\n", $X->{mouse}{XMOUSETYPE});
$info .= _("Mouse device: %s\n", $X->{mouse}{device}) if $::expert;
$info .= _("Monitor: %s\n", $X->{monitor}{ModelName});
$info .= _("Monitor HorizSync: %s\n", $X->{monitor}{hsyncrange}) if $::expert;
$info .= _("Monitor VertRefresh: %s\n", $X->{monitor}{vsyncrange}) if $::expert;
$info .= _("Graphics card: %s\n", $X->{card}{VendorName} . ' '. $X->{card}{BoardName});
$info .= _("Graphics card identification: %s\n", $X->{card}{identifier}) if $::expert;
$info .= _("Graphics memory: %s kB\n", $X->{card}{VideoRam}) if $X->{card}{VideoRam};
if ($X->{default_depth} and my $depth = $X->{card}{depth}{$X->{default_depth}}) {
$info .= _("Color depth: %s\n", translate($Xconfigurator_consts::depths{$X->{default_depth}}));
$info .= _("Resolution: %s\n", join "x", @{$depth->[0]}) if $depth && !is_empty_array_ref($depth->[0]);
}
$info .= _("XFree86 server: %s\n", $X->{card}{server}) if $X->{card}{server};
$info .= _("XFree86 driver: %s\n", $X->{card}{driver}) if $X->{card}{driver};
"$title\n\n$info";
}
sub getinfo {
my $X = shift || {};
getinfoFromDDC($X);
getinfoFromSysconfig($X);
my ($mouse) = mouse::detect();
add2hash($X->{mouse}, $mouse) if !$X->{mouse}{XMOUSETYPE};
add2hash($X->{mouse}{auxmouse}, $mouse->{auxmouse}) if !$X->{mouse}{auxmouse}{XMOUSETYPE};
$X->{mouse}{auxmouse}{XMOUSETYPE} or delete $X->{mouse}{auxmouse};
$X->{mouse}{device} ||= "mouse" if -e "/dev/mouse";
$X;
}
sub getinfoFromXF86Config {
my ($X, $prefix) = @_; #- original $::o->{X} which must be changed only if sure!
$X ||= {};
#- don't keep the preference on upgrades??
$X->{card}{prefer_xf3} = readlink("$::prefix/etc/X11/X") =~ /XF86_/ if $::isStandalone;
my (%keyboard, %mouse, %wacom, %card, %monitor);
my (%c, $depth);
foreach (cat_("$prefix/etc/X11/XF86Config-4")) {
if (my $i = /^Section "InputDevice"/ .. /^EndSection/) {
%c = () if $i == 1;
$c{driver} = $1 if /^\s*Driver\s+"(.*?)"/;
$c{id} = $1 if /^\s*Identifier\s+"[^\d"]*(\d*)"/;
$c{XkbModel} ||= $1 if /^\s*Option\s+"XkbModel"\s+"(.*?)"/;
$c{XkbLayout} ||= $1 if /^\s*Option\s+"XkbLayout"\s+"(.*?)"/;
$c{XMOUSETYPE} ||= $1 if /^\s*Option\s+"Protocol"\s+"(.*?)"/;
$c{device} ||= $1 if /^\s*Option\s+"Device"\s+"\/dev\/(.*?)"/;
$c{nbuttons} = 2 if /^\s*Option\s+"Emulate3Buttons"\s+/;
$c{nbuttons} ||= 5 if /^\s*#\s*Option\s+"ZAxisMapping"\s.*5/;
$c{nbuttons} = 7 if /^\s*#\s*Option\s+"ZAxisMapping"\s.*7/;
if ($i =~ /E0/) {
@keyboard{qw(XkbLayout)} = @c{qw(XkbLayout)}
if $c{driver} =~ /keyboard/i;
@{$mouse{auxmouse}}{qw(XMOUSETYPE device nbuttons)} = @c{qw(XMOUSETYPE device nbuttons)}
if $c{driver} =~ /mouse/i && $c{id} > 1;
@mouse{qw(XMOUSETYPE device nbuttons)} = @c{qw(XMOUSETYPE device nbuttons)}
if $c{driver} =~ /mouse/i && $c{id} < 1;
$wacom{$c{device}} = undef
if $c{driver} =~ /wacom/i;
}
} elsif (/^Section "Monitor"/ .. /^EndSection/) {
$monitor{hsyncrange} ||= $1 if /^\s*HorizSync\s+(.*)/;
$monitor{vsyncrange} ||= $1 if /^\s*VertRefresh\s+(.*)/;
$monitor{VendorName} ||= $1 if /^\s*VendorName\s+"(.*?)"/;
$monitor{ModelName} ||= $1 if /^\s*ModelName\s+"(.*?)"/;
$monitor{ModeLines} .= $_ if /^\s*Mode[lL]ine\s+(\S+)\s+(\S+)\s+/;
} elsif (my $s = /^Section "Screen"/ .. /^EndSection/) {
$card{default_depth} ||= $1 if /^\s*DefaultColorDepth\s+(\d+)/;
if (my $i = /^\s*Subsection\s+"Display"/ | P......E}LB1...;.zc..~....]l_... |
1540 | fe 58 27 24 df 69 0d ea d5 85 5c ca 91 c3 87 e3 ff cb e3 a2 80 68 e6 0b 6d e4 b1 88 b7 22 24 0a | .X'$.i....\..........h..m...."$. |
1560 | a4 e1 bc f7 24 41 7e dd 1f dd 25 3d 5d d5 1e e6 d7 d2 11 fe 33 07 21 d9 95 9b bb 2a 12 8b 03 0f | ....$A~...%=].......3.!....*.... |
1580 | 41 6b 2e 9a 2c f7 ee f9 f2 ea dc dc 20 52 e1 1d cb 87 2d 39 4e 5a ad 07 4e 0f 81 9e 27 81 71 64 | Ak..,........R....-9NZ..N...'.qd |
15a0 |
unshift @{$card{depth}{$depth || 8} ||= []}, #- insert at the beginning for resolution_wanted!
grep { $_->[0] >= 640 } map { [ /"(\d+)x(\d+)"/ ] } split ' ', $1;
}
}
}
}
my $first_screen_section;
foreach (cat_("$prefix/etc/X11/XF86Config")) {
if (/^Section "Keyboard"/ .. /^EndSection/) {
$keyboard{XkbModel} ||= $1 if /^\s*XkbModel\s+"(.*?)"/;
$keyboard{XkbLayout} ||= $1 if /^\s*XkbLayout\s+"(.*?)"/;
} elsif (/^Section "Pointer"/ .. /^EndSection/) {
$mouse{XMOUSETYPE} ||= $1 if /^\s*Protocol\s+"(.*?)"/;
$mouse{device} ||= $1 if m|^\s*Device\s+"/dev/(.*?)"|;
$mouse{nbuttons} = 2 if m/^\s*Emulate3Buttons\s+/;
$mouse{nbuttons} ||= 5 if m/^\s*ZAxisMapping\s.*5/;
$mouse{nbuttons} = 7 if m/^\s*ZAxisMapping\s.*7/;
} elsif (/^Section "XInput"/ .. /^EndSection/) {
if (/^\s*SubSection "Wacom/ .. /^\s*EndSubSection/) {
$wacom{$1} = undef if /^\s*Port\s+"\/dev\/(.*?)"/;
}
} elsif (/^Section "Monitor"/ .. /^EndSection/) {
$monitor{hsyncrange} ||= $1 if /^\s*HorizSync\s+(.*)/;
$monitor{vsyncrange} ||= $1 if /^\s*VertRefresh\s+(.*)/;
$monitor{VendorName} ||= $1 if /^\s*VendorName\s+"(.*?)"/;
$monitor{ModelName} ||= $1 if /^\s*ModelName\s+"(.*?)"/;
$monitor{ModeLines_xf3} .= $_ if /^\s*Mode[lL]ine\s+(\S+)\s+(\S+)\s+/;
} elsif (my $i = /^Section "Device"/ .. /^EndSection/) {
%c = () if $i == 1;
$c{indentifier} ||= $1 if /^\s*Identifier\s+"(.*?)"/;
$c{VideoRam} ||= $1 if /VideoRam\s+(\d+)/;
$c{needVideoRam} ||= 1 if /^\s*VideoRam\s+/;
$c{driver} ||= $1 if /^\s*Driver\s+"(.*?)"/;
$c{VendorName} ||= $1 if /^\s*VendorName\s+"(.*?)"/;
$c{BoardName} ||= $1 if /^\s*BoardName\s+"(.*?)"/;
$c{Chipset} ||= $1 if /^\s*Chipset\s+"(.*?)"/;
$c{options_xf3}{$1} ||= 0 if /^\s*#\s*Option\s+"(.*?)"/;
$c{options_xf3}{$1} ||= 1 if /^\s*Option\s+"(.*?)"/;
add2hash(\%card, \%c) if ($i =~ /E0/ && $c{identifier} && $c{identifier} ne "Generic VGA");
} elsif (my $s = /^Section "Screen"/ .. /^EndSection/) {
$first_screen_section++ if $s =~ /E0/;
$first_screen_section or next;
$card{default_depth} ||= $1 if /^\s*DefaultColorDepth\s+(\d+)/;
if (my $i = /^\s*Subsection\s+"Display"/ .. /^\s*EndSubsection/) {
undef $depth if $i == 1;
$depth = $1 if /^\s*Depth\s+(\d*)/;
if (/^\s*Modes\s+(.*)/) {
my $a = 0;
unshift @{$card{depth}{$depth || 8} ||= []}, #- insert at the beginning for resolution_wanted!
grep { $_->[0] >= 640 } map { [ /"(\d+)x(\d+)"/ ] } split ' ', $1;
}
}
}
}
#- get the default resolution according the the current file.
#- suggestion to take into account, but that have to be checked.
$X->{card}{suggest_depth} = $card{default_depth};
if (my @depth = keys %{$card{depth}}) {
$X->{card}{suggest_x_res} = ($card{depth}{$X->{card}{suggest_depth} || $depth[0]}[0][0]);
}
#- final clean-up.
$mouse{nbuttons} ||= 3; #- when no tag found, this is because there is 3 buttons.
$mouse{auxmouse}{nbuttons} ||= 3;
mouse::update_type_name(\%mouse); #- allow getting fullname (type|name).
mouse::update_type_name($mouse{auxmouse});
delete $mouse{auxmouse} if !$mouse{auxmouse}{XMOUSETYPE}; #- only take care of a true mouse.
#- try to merge with $X, the previous has been obtained by ddcxinfos.
put_in_hash($X->{keyboard} ||= {}, \%keyboard);
add2hash($X->{mouse} ||= {}, \%mouse);
@{$X->{wacom} || []} > 0 or $X->{wacom} = [ keys %wacom ];
add2hash($X->{monitor} ||= {}, \%monitor);
$X;
}
sub getinfoFromSysconfig {
my $X = shift || {};
my $prefix = shift || "";
add2hash($X->{mouse} ||= {}, { getVarsFromSh("$prefix/etc/sysconfig/mouse") });
if (my %keyboard = getVarsFromSh "$prefix/etc/sysconfig/keyboard") {
$X->{keyboard}{XkbLayout} ||= keyboard_from_kmap($keyboard{KEYTABLE}) if $keyboard{KEYTABLE};
}
$X;
}
sub getinfoFromDDC {
my $X = shift || {};
my $O = $X->{monitor} ||= {};
#- return $X if $O->{hsyncrange} && $O->{vsyncrange} && $O->{ModeLines};
my ($m, @l) = any::ddcxinfos();
$? == 0 or return $X;
$X->{card}{VideoRam} ||= to_int($m);
local $_;
while (($_ = shift @l) ne "\n") {
my ($depth, $x, $y) = split;
$depth = int(log($depth) / log(2));
if ($depth >= 8 && $x >= 640) {
push @{$X->{card}{depth}{$depth}}, [ $x, $y ]
if ! grep { $_->[0] == $x && $_->[1] == $y } @{$X->{card}{depth}{$depth}};
push @{$X->{card}{depth}{32}}, [ $x, $y ]
if $depth == 24 && ! grep { $_->[0] == $x && $_->[1] == $y } @{$X->{card}{depth}{32}};
}
}
my ($h, $v, $size, @m) = @l;
$O->{hsyncrange} ||= first($h =~ /^(\S*)/);
$O->{vsyncrange} ||= first($v =~ /^(\S*)/);
$O->{size} ||= to_float($size);
$O->{EISA_ID} = lc($1) if $size =~ /EISA ID=(\S*)/;
$O->{ModeLines_xf3} ||= join '', map { " $_" } @m;
$X;
}
sub XF86check_link {
my ($prefix, $ext) = @_;
my $f = "$prefix/etc/X11/XF86Config$ext";
touch($f);
my $l = "$prefix/usr/X11R6/lib/X11/XF86Config$ext";
if (-e $l && (stat($f))[1] != (stat($l))[1]) { #- compare the inode, must be the sames
-e $l and unlink($l) || die "can't remove bad $l";
symlinkf "../../../../etc/X11/XF86Config$ext", $l;
}
}
sub add2card {
my ($card, $other_card) = @_;
push @{$card->{lines}}, @{$other_card->{lines} || []};
add2hash($card, $other_card);
}
sub readCardsDB {
my ($file) = @_;
my ($card, %cards);
my $F = common::openFileMaybeCompressed($file);
my ($lineno, $cmd, $val) = 0;
my $fs = {
NAME => sub {
$cards{$card->{card_name}} = $card if $card;
$card = { card_name => $val };
},
SEE => sub {
my $c = $cards{$val} or die "Error in database, invalid reference $val at line $lineno";
add2card($card, $c);
},
LINE => sub { push @{$card->{lines}}, $val },
CHIPSET => sub { $card->{Chipset} = $val },
SERVER => sub { $card->{server} = $val },
DRIVER => sub { $card->{driver} = $val },
DRIVER2 => sub { $card->{driver2} = $val },
NEEDVIDEORAM => sub { $card->{needVideoRam} = 1 },
DRI_GLX => sub { $card->{DRI_GLX} = 1 if $card->{driver} },
UTAH_GLX => sub { $card->{UTAH_GLX} = 1 if $card->{server} },
DRI_GLX_EXPERIMENTAL => sub { $card->{DRI_GLX_EXPERIMENTAL} = 1 if $card->{driver} },
UTAH_GLX_EXPERIMENTAL => sub { $card->{UTAH_GLX_EXPERIMENTAL} = 1 if $card->{server} },
MULTI_HEAD => sub { $card->{MULTI_HEAD} = $val if $card->{driver} },
BAD_FB_RESTORE => sub { $card->{BAD_FB_RESTORE} = 1 },
BAD_FB_RESTORE_XF3 => sub { $card->{BAD_FB_RESTORE_XF3} = 1 },
UNSUPPORTED => sub { delete $card->{driver} },
COMMENT => sub {},
};
local $_;
while (<$F>) { $lineno++;
s/\s+$//;
/^#/ and next;
/^$/ and next;
/^END/ and do { $cards{$card->{card_name}} = $card if $card; last };
($cmd, $val) = /(\S+)\s*(.*)/ or next;
my $f = $fs->{$cmd};
$f ? $f->() : log::l("unknown line $lineno ($_)");
}
\%cards;
}
sub install_matrox_proprietary_hal {
my ($prefix) = @_;
my $tmpdir = "$prefix/root/tmp";
my $tar = "mgadrivers-2.0.tgz";
my $dir_in_tar = "mgadrivers";
my $dest_dir = "$prefix/usr/X11R6/lib/modules/drivers";
#- already installed
return if -e "$dest_dir/mga_hal_drv.o";
system("wget -O $tmpdir/$tar ftp://ftp.matrox.com/pub/mga/archive/linux/2002/$tar") if !-e "$tmpdir/$tar";
system("tar xzC $tmpdir -f $tmpdir/$tar");
my $src_dir = "$tmpdir/$dir_in_tar/xfree86/4.2.0/drivers";
foreach (all($src_dir)) {
my $src = "$src_dir/$_";
my $dest = "$dest_dir/$_";
rename $dest, "$dest.non_hal";
cp_af($src, $dest_dir);
}
rm_rf("$tmpdir/$tar");
rm_rf("$tmpdir/$dir_in_tar");
}
1;
|