Page suivantePage pr�c�denteTable des mati�res

6. Rendre le processus automatique

Le petit script qui suit automatise la plupart du travail. Faites tr�s attention au ScanType (type de balayage) et aux deux lignes Polarity (polarit�): le script ne les positionne pas et, si vous avez la paresse de ne pas les corriger, les risques d'endommager votre moniteur augmentent en fl�che.

Remarquez que je ne sais pas si le drapeau "Doublescan" (balayage double) a une signification quelconque dans XInside: si vous tentez de convertir un mode de double balayage de faible r�solution FAITES ATTENTION, vous pouvez assez facilement casser votre moniteur puisque le taux de rafra�chissement que vous obtenez sera doubl� (en fait mon 400x300 � 72Hz est devenu un 400x300 � 144Hz!).

#!/bin/sh
##########################################################################
# XF2XInside
#
# Ce script convertit les lignes de mode vid�o du format XF86Config au
# format XInside pour remplir les besoins du fichier etc/Xtimings.
#
# C'est une bidouille vite programm�e, n'en attendez pas des v�rifications
# d'erreurs fines (et ne parlons pas de l'interface utilisateur).
#
# Si vous l'appelez sans argument, il devrait vous dire quoi faire.
#
#                               (juillet 1996, hcz@tazlwurm.bb.bawue.de)
#
# Au fait: Les nouveaux modes cr��s comme expliqu�s dans ce HOWTO
# fonctionnent, mais n'apparaissent pas dans le menu de Xsetup. Quelqu'un
# sait-il pourquoi ?
#
##########################################################################
#----------------------------------------------- On y va:
# Modifiez ceci si votre fichier de lignes de modes vid�o est ailleurs:
XF=/usr/X11/lib/X11/XF86Config
if [ $# -ne 1 ] ; then
 echo "utilisation: ${0##*/} <mode>"
 echo " exemple: ${0##*/} 1024x764"
 echo -e " r�le: convertit une entr�e de ligne de mode vid�o de $XF au\nformat XInside (stdout, ou la sortie standard)"
 exit 1
fi
egrep -i "^[\t ]*modeline.+\"$1\""  /usr/X11/lib/X11/XF86Config |
gawk '
NF < 11  { print "! mauvaise ligne:\n! " $0 "\n!"; next }
{
 print "//", $0  ":"
 name = $2
 DOT_CLK = $3;
 A = $4;
 B = $5;
 C = $6;
 D = $7;
 a = $8;
 b = $9;
 c = $10;
 d = $11;
 VerFrequency =  1000000 / ((D / DOT_CLK) * d)
 print "[MODE_PR�AJUST�]"
 printf "  NomDuModePr�ajust� = \"%dx%d @ %.0dHz\";\n", A, a, VerFrequency
 print "  HorPixel\t\t= " A ";"
 print "  VerPixel\t\t= " a ";"
 print "  PixelWidthRatio\t= 4;\n  PixelHeightRatio\t= 3;"
 print "  HorFrequency\t\t= " DOT_CLK / D * 1000 ";\t// kHz"
 print "  VerFrequency\t\t= " VerFrequency  ";\t// Hz"
 print "  ScanType\t\t= NONINTERLACED;\t\t// *V�RIFIEZ*"
 print "  HorSyncPolarity\t= NEGATIVE;\t\t\t// *V�RIFIEZ*"
 print "  VerSyncPolarity\t= NEGATIVE;\t\t\t// *V�RIFIEZ*"
 print "  CharacterWidth\t= 8;"
 print "  PixelClock\t\t= " DOT_CLK ";"
 HorTotalTime = D / DOT_CLK
 print "  HorTotalTime\t\t= " HorTotalTime ";"
 print "  HorAddrTime \t\t= " A / DOT_CLK ";"
 print "  HorBlankStart\t\t= " A / DOT_CLK ";"
 print "  HorBlankTime\t\t= " D / DOT_CLK - A / DOT_CLK ";"
 print "  HorSyncStart\t\t= " B / DOT_CLK ";"
 print "  HorSyncTime\t\t= " C / DOT_CLK - B / DOT_CLK ";"
 VerTotalTime  = ( HorTotalTime * d ) / 1000
 print "  VerTotalTime\t\t= " VerTotalTime ";"
 print "  VerAddrTime\t\t= " ( HorTotalTime * a ) / 1000 ";"
 VerBlankStart = ( HorTotalTime * a ) / 1000
 print "  VerBlankStart\t\t= " VerBlankStart ";"
 print "  VerBlankTime\t\t= " VerTotalTime - VerBlankStart ";"
 print "  VerSyncStart\t\t= " ( HorTotalTime * b ) / 1000 ";"
 print "  VerSyncTime\t\t= " ( HorTotalTime * ( c - b ) ) / 1000
 print ""
}'


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:20