如何在Linux下實現裝置的配置(下)?

如何在Linux下實現裝置的配置(下)

  本文是《如何在Linux下實現裝置的配置》的第二部分,將接著向您介紹視窗系統(XFree86)的配置過程。
  6 視窗系統(XFree86)的配置過程
  6.1 顯示卡的描述檔案介紹(CardDB)
  CardDB是X配置程式使用的顯示卡資料檔案。在對XFree86進行配置時,配置程式一般都需要讀取其上的內容完成顯示卡的配置。它的內容與使用的XFree86的版本密切相關。一般而言,它儲存的位置是在/usr/X11R6/lib/X11/目錄下。現在我們就對XFree86 4.1.0的CardDB檔案進行簡單的介紹:

  NAME
  顯示卡的描述名稱

  CHIPSET
  描述顯示卡使用的晶片集

  SERVER
  為了和3.x版本的XFree86向下相容,由此欄位指定此顯示卡在XFree86 3.x下的X伺服器,例如VGA16,SVGA等。

  DRIVER
  描述在4.x版本的XFree86下顯示卡的驅動程式模組。

  LINE
  設定顯示卡特定的選項資訊,這樣的選項資訊出現在XF86Config的Device節,對應裝置的Option引數。

  SEE
  是指此顯示卡的配置資訊與SEE欄位所制定的顯示卡完全相同,例如

  NAME Number Nine GXE64 with S3 Trio64
  SEE S3 Trio64 (generic)
  表示Number Nine GXE64的顯示卡配置與S3 Trio64 (generic)的配置完全相同。
  RAMDAC
  RAM直接存取控制的控制晶片型號

  DACSPEED
  直接存取控制的速度

  CLOCKCHIP
  此顯示卡的時鐘晶片的

  NOCLOCKCHIP
  此顯示卡無時鐘晶片

  UNSUPPORTED
  此型別的顯示卡,此版本的XFree86不能提供支援

  COMMENT
  註釋

  例如,對於RIVA TNT顯示卡,XFree86 4.1.0中的資訊如下:

  NAME RIVA TNT
  CHIPSET RIVATNT
  SERVER SVGA
  DRIVER nv
  NOCLOCKPROBE

  6.2 顯示器資訊檢測
  顯示器的資訊在XFree86系統中時非常重要的,它對應XFree86配置檔案的Monitor節。在這一節中包含監視器的水平掃描頻率範圍,垂直掃描頻率範圍,顯示器支援的顯示模式等資訊。同樣的,顯示器的自動檢測也就是通過程式自動讀出顯示器的上述資訊。它的正確設定對於XFree86能否正常顯示起到很重要的作用。

  對於顯示器的資訊檢測,要求它必須支援vbe(VESA的BIOS級擴充套件)。在顯示器支援此擴充套件時,通過系統真實模式下的BIOS呼叫INT 10H,可以取得顯示器的詳細資訊。

  可能需要的BIOS子功能呼叫為:

  AH = 0x4F00
  獲得關於監視器的VESA的BIOS級擴充套件資訊

  AH = 0x4F01
  獲得監視器支援的特定顯示模式

  AH = 0x4F02
  設定當前的視訊模式

  AH = 0x4F03
  獲得當前的視訊模式

  AH = 0x4F04
  儲存/還原svga顯示方式

  AH = 0x4F15
  獲得監視器的EDID擴充套件資訊

  一般的顯示器使用上述中斷的方式是:先檢查顯示器是否支援VESA的BIOS級擴充套件,如果顯示器支援BIOS級擴充套件,就檢視顯示器支援的顯示模式,然後獲得顯示器的EDID擴充套件資訊。在讀出的EDID擴充套件資訊中,可以查出顯示器的垂直回掃頻率範圍和水平回掃頻率範圍,也可以計算出顯示器的大小,對於一部分顯示器還可以從此資訊中讀出監視器的製造商資訊。

  由顯示器讀出的資訊可以設定XF86Config的Monitor節,對於設定了正確的垂直回掃頻率範圍和水平回掃頻率範圍的顯示器,X自動設定為當前顯示解析度下支援的最高掃描頻率的顯示模式(此顯示模式要求有對應的Modeline)。

  但是如果您的顯示器不支援EDID擴充套件資訊,那麼您就只有根據經驗來設定顯示器的垂直回掃頻率範圍和水平回掃頻率範圍。如果設定的範圍高於監視器的實際支援範圍,那麼顯示器會出現黑屏的現象。

  對於程式設計實現,如果您要呼叫上述bios中斷,那麼必須使用lrmi這個真實模式介面,並設定正確的暫存器資訊,完成系統呼叫。具體的檢測顯示器資訊的例子,您可以參考Xconfigurator下ddcprobe的源程式,也可以參考Mandrake系統下的ddcxinfos命令的源程式。

  6.3 視窗系統的配置過程
  要正確的在Linux下配置視窗系統,實際上就是生成正確的XFree86配置檔案,這個檔案一般儲存在/etc/X11/下,在X版本是3.x時,它的檔名為XF86Config,在X版本是4.x時,它的檔名一般為XF86Config-4。在現在的發行版本中,處於硬體相容性的考慮,他們一般都讓這兩個版本的XFree86包共存。因此,您也可以在/etc/X11目錄下,發現這兩個檔案同時存在,這時使用那個檔案就要看系統的X伺服器的版本了。

  無論是那個版本的XF86Config檔案都是由許多節(Section)構成的,但是這些節描述的內容主要包括:鍵盤、滑鼠、顯示器、顯示卡、字型(顏色)等。

  在X版本是3.x時,鍵盤和滑鼠的描述分別對應Keyboard和Pointer節。而在X版本是4.x時,鍵盤和滑鼠的描述都對應InputDevice節,只是對應不同的驅動模組,鍵盤的驅動模組是keyboard,滑鼠的驅動模組是mouse。配置這兩節所需要的資訊可以從/etc/sysconfig/keyboard和/etc/sysconfig/mouse中獲得,它們的詳細內容,本文的前面章節已作了介紹。

  配置顯示器實際上是生成XF86Config檔案的Monitor節,需要配置的資訊一般包括:水平掃描頻率範圍、垂直掃描頻率範圍、監視器支援的顯示模式、製造商資訊。對於支援vbe和edid擴充套件的顯示器,可以根據從顯示器上讀出的資訊設定對應欄位的值。但是如果顯示器不支援上述擴充套件,則顯示卡的設定必須由使用者手動完成。如果您在配置XFree86時不指定這一節,那麼XFree86會設定顯示模式為640x480,垂直掃描頻率為60hz的方式。不同顯示模式的掃描頻率: 顯示解析度 垂直掃描頻率(Hz) 水平掃描頻率(kHz)
  640x480 60 31.50
  640x480 72 36.50
  640x480 75 37.50
  640x480 85 43.27
  800x600 60 37.80
  800x600 72 48.00
  800x600 85 55.84
  800x600 100 64.02
  1024x768 60 48.40
  1024x768 70 56.50
  1024x768 76 62.50
  1024x768 85 70.24
  1024x768 100 80.21
  1280x1024 61 64.20
  1280x1024 70 74.59
  1280x1024 74 78.85
  1280x1024 76 81.13
  1280x1024 85 91.15
  1280x1024 100 107.16
  1600x1200 60 75.00
  1600x1200 70 87.50
  1600x1200 75 93.75
  1600x1200 85 105.77
  表 6-1

  從上表可以看出,您要設定顯示器達到某一解析度,那麼與此相對應,它的掃描頻率範圍也要包含上表中此解析度的最低掃描頻率。如果您的顯示器達不到這個範圍,那麼XWindow將無法正常工作。如果您設定的掃描頻率高於顯示器實際的掃描頻率範圍,由於XFree86會尋找對應解析度下最高掃描頻率進行顯示,所以此時XWindow將極有可能黑屏。

  在生成配置指令碼時,掃描頻率的範圍也不是越低越好。設定較低的掃描頻率範圍對於部分LCD顯示器就不合適。比如,一部分LCD顯示器在800x600解析度時,最低支援的垂直掃描頻率為70Hz,那麼您這時指定的水平回掃範圍一定要包含48kHz。

  在配置完顯示器之後,您就需要生成與顯示卡對應的描述了。這樣的描述資訊對應XF86Config檔案的Device節。這一節主要描述的顯示卡資訊包括:顯示卡對應的X伺服器(X版本在3.x),對應的X裝置模組(X版本為4.x),顯示卡的裝置資訊(供應商、型號、支援視訊記憶體存取方式和視訊記憶體大小等),以及此顯示卡支援的裝置選項,比如顯示卡是否支援硬體加速、是否支援軟游標等。生成視窗系統的配置過程一般是先由pci的裝置標識(檢測過程見)獲得顯示卡的型別,由此在XFree86的配置檔案CardDB(這個檔案可在/usr/X11R6/lib/X11/目錄下找到)中查得它對應的顯示卡描述,由此資訊可以設定此節的描述。

  字型和調色盤資訊描述的是字型和調色盤所存放的路徑,您如果新加入字型時,需要在此加入正確的字型路徑。設定字型路徑時,如果指定它為unix:-1,那麼就是說您在啟動X伺服器之前,必須首先啟動字型伺服器xfs,然後由字型伺服器完成字型的訪問請求。

  在您正確的設定了上述資訊之後,您必須將這些資訊存放在Screen節中。這一節描述的是完成顯示對應的顯示卡,顯示器,解析度和預設深度等資訊。

  最後,您還必須生成ServerLayout節,由它描述整個系統所使用的顯示卡配置節、監視器配置節、滑鼠配置節、鍵盤配置節等資訊。

  在生成了/etc/X11/XF86Config(XF86Config-4)檔案後,您就可以測試一下此配置檔案是否正確了。例如,對於XFree86 4.x,生成的配置檔案為/etc/X11/XF86Config.test,測試使用如下命令:

  XFree86 -xf86config /etc/X11/XF86Config.test :9
  -xf86config /etc/X11/XF86Config.test表示使用指定的配置檔案啟動X伺服器
  :9 表示在終端9上執行X伺服器

  一般而言,如果是程式設計實現X的配置過程的話,則要以子程序的方式(系統呼叫fork)執行上述命令,在成功啟動X伺服器之後,執行一個小的圖形化程式,讓使用者選擇配置是否成功。

  當然,如果您不能得到顯示卡的詳細的裝置引數的話,您也可以使用probeonly選項獲得顯示卡的詳細資訊。例如,對於XFree86 4.x測試使用如下命令:
  XFree86 -probeonly :9

  對於正常的啟動XFree86之後,系統輸出的資訊,您可以通過讀取/var/log/XFree86.x.log獲得。x是指XFree86啟動的終端,一般設定此x為0。

  在XF86Config檔案配置之後,您可以使用startx啟動XFree86。這個檔案會執行您的登入目錄下的.xinitrc檔案來修改X Window系統的初始顯示狀態。這個檔案是一個指令碼檔案。如果這個檔案不存在,系統就會預設使用/usr/X11R6/lib/X11/xinit/xinitrc。同時,startx還要查詢/etc/X11/X,這個檔案是一個連結檔案,它指向真正的X服務程式,現在這個程式一般都指向Xwrappers,它是對X服務程式的封裝。當然,這個檔案也可以直接指向X服務程式XFree86。

  6.4 支援FrameBuffer方式的顯示卡的配置過程
  幀緩衝(FrameBuffer)裝置是指一種不帶視訊加速的X11支援裝置。啟動此方式的優點主要有三點:其一是在控制檯方式工作時,您能設定更大的控制檯顯示區,比如設定1024x768解析度大小的控制檯;其二是可以在其上啟動XF86_FBDev(對於XFree86 4.x下,使用啟動模組fbdev);其三是可以在啟動時顯示啟動徽標(一隻胖胖的企鵝)。

  在有時顯示卡對應的XFree86驅動程式不能正常工作時,而您又需要比較豐富的色彩時,啟動FrameBuffer往往是必須的選擇。啟動FrameBuffer時,XFree86啟動的解析度由FrameBuffer的啟動模式決定。

  能夠啟動FrameBuffer的裝置是intel結構下與vesa 2.0標準相容顯示卡的幀緩衝裝置,但是現在不能在支援vesa 1.2的顯示卡上支援FrameBuffer。這是因為vesa 1.2不支援線性幀緩衝(線性幀緩衝意味著CPU能訪問顯示卡的每一位)。您可以下載補丁,以使vesafb支援vesa 1.2的顯示卡,比如一些較老的s3系列顯示卡。

  現在支援vesa 2.0的顯示卡主要有:
  ATI PCI VideoExpression 2MB (max. 1280x1024 @ 8bit)
  ATI PCI All-in-Wonder
  Matrox Millennium PCI - BIOS v3.0
  Matrox Millennium II PCI - BIOS v1.5
  Matrox Millennium II AGP - BIOS v1.4
  Matrox Millennium G200 AGP - BIOS v1.3
  Matrox Mystique & Mystique 220 PCI - BIOS v1.8
  Matrox Mystique G200 AGP - BIOS v1.3
  Matrox Productiva G100 AGP - BIOS v1.4
  All Riva 128 based cards
  Diamond Viper V330 PCI 4MB
  Genoa Phantom 3D/S3 ViRGE/DX
  Hercules Stingray 128/3D with TV output
  Hercules Stingray 128/3D without TV output - needs BIOS upgrade (free from
  [email protected])
  SiS 6326 PCI/AGP 4MB
  STB Lightspeed 128 (Nvida Riva 128 based) PCI
  STB Velocity 128 (Nvida Riva 128 based) PCI
  Jaton Video-58P ET6000 PCI 2MB-4MB (max. 1600x1200 @ 8bit)
  Voodoo2 2000

  主機板整合顯示卡:
  Trident Cyber9397
  SiS 5598

  啟動FrameBuffer必須設定核心的啟動顯示模式,設定這個引數是通過核心引數vga=實現的。比如,設定啟動之後的解析度為640x480下的16位色時,傳遞的引數為vga=785(十進位制數)。您也可以在/etc/lilo.conf檔案中設定此引數,由lilo傳遞核心引數。

  核心支援的FrameBuffer顯示模式如下表: 顯示深度 640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200
  4 bits 0x302
  8 bits 0x300 0x301 0x303 0x305 0x161 0x307 0x31C
  15 bits 0x310 0x313 0x316 0x162 0x319 0x31D
  16 bits 0x311 0x314 0x317 0x163 0x31A 0x31E
  24 bits 0x312 0x315 0x318 0x31B 0x31F
  32 bits 0x164
  表 6-2

  向核心傳遞vesa選項還包括:
  video=vesa:option,多個選項之間可用逗號隔開;

  可接受的選項:
  ypan
  使用vesa保護模式介面顯示,可視螢幕是視訊記憶體的一個視窗。

  pro
  快速的整屏卷滾,允許回滾。

  kontra
  部分卷滾,可產生一些閃動效果。

  ywrap
  比ypan速度快,但是相容性差。

  redraw
  預設使用,通過重繪受影響的螢幕區進行重畫。

  vgapal
  預設使用,標準的vga調色版暫存器。

  pmipal
  使用保護模式的調色版介面。

  例如,下面的操作設定FrameBuffer裝置的顯示:
  export FRAMEBUFFER=/dev/fb1
  fbset -fb /dev/fb1 -vyres 600
  fbset -fb $FRAMEBUFFER [email protected]
  startx -- :0 -bpp 16 vt06
  在虛擬控制終端6以16為顏色深度啟動X伺服器。

  如果您要對幀緩衝裝置程式設計,則可以象使用/dev/mem一樣,讀、寫、定位以及mmap()此裝置。不同的是,您此時操作的裝置記憶體位於視訊裝置記憶體中。/dev/fb*裝置也支援幾種ioctl操作,由此可以獲得或設定裝置資訊。顏色表的處理使用ioctl()。

  6.5 XF86Config檔案格式(版本為4.x系列)
  6.5.1 檔案的基本組成

  檔案的每節都是由下述的部分組成:

  Section "SectionName"
  SectionEntry
  …
  EndSection
  SectionName包括:

  Files 檔案路徑名
  ServerFlags 伺服器標誌
  Module 動態模組載入
  InputDevice 輸入裝置描述
  Device 圖形裝置描述
  VideoAdaptor Xv視訊卡描述
  Monitor 監視器描述
  Modes 視訊模式描述
  Screen 螢幕配置
  ServerLayout 全面的層疊
  DRI DRI特定的配置
  Vendor 供應商特定的配置

  出於向下相容的目的,下列項雖已廢除但是配置檔案仍能識別。在新的配置檔案中,應使用新的InputDevice項。
  Keyboard 鍵盤配置
  Pointer 指標/滑鼠配置
  老的XInput節已經被廢除。

  ServerLayout在最高層。它們繫結的輸入輸出裝置會在這一節裡使用。輸入裝置由InputDevice描述,輸出裝置通常有多個獨立的元件組成。多個元件組成Screen節。每個Screen節將圖形板和監視器繫結在一起。顯示卡由Device節描述,監視器由Monitor節描述。

  6.5.2 Files節
  Files節指定X伺服器的字型路徑、調色盤路徑和模組路徑。

  FontPath "path"
  設定字型的查詢路徑。對於字型伺服器的表示採用下述的形式:
  / :
  指定與字型伺服器連線的傳輸型別(unix,tcp)。
  若此節不指定,則預設的字型路徑是:
  /usr/X11R6/lib/X11/fonts/misc/
  /usr/X11R6/lib/X11/fonts/Speedo/
  /usr/X11R6/lib/X11/fonts/Type1/
  /usr/X11R6/lib/X11/fonts/CID/
  /usr/X11R6/lib/X11/fonts/75dpi/
  /usr/X11R6/lib/X11/fonts/100dpi/
  一般而言,推薦的字型路徑是:
  /usr/X11R6/lib/X11/fonts/local/
  /usr/X11R6/lib/X11/fonts/misc/
  /usr/X11R6/lib/X11/fonts/75dpi/:unscaled
  /usr/X11R6/lib/X11/fonts/100dpi/:unscaled
  /usr/X11R6/lib/X11/fonts/Type1/
  /usr/X11R6/lib/X11/fonts/CID/
  /usr/X11R6/lib/X11/fonts/Speedo/
  /usr/X11R6/lib/X11/fonts/75dpi/
  /usr/X11R6/lib/X11/fonts/100dpi/
  RGBPath "path"
  rgb顏色資料庫的路徑,預設值為:/usr/X11R6/lib/X11/rgb。
  ModulePath "path"
  設定可載入的X伺服器模組的查詢路徑。
  6.5.3 ServerFlags節
  ServerFlags節用於指定全域性的X伺服器選項,在一般情況下這個部分是空的。

  Option "NoTrapSignals" "boolean"
  此選項可以阻止X伺服器捕獲未期待的致命訊號並乾淨的退出。X伺服器退出並擦除core檔案。
  Option "DontZap" "boolean"
  開啟此選項之後,可以禁止Ctrl+Alt+Backspace的使用。
  Option "DontZoom" "boolean"
  開啟此選項,可以禁止鍵Ctrl+Alt+Keypad-Plus and Ctrl+Alt+Keypad-Minus來切換視訊模式。
  Option "DisableVidModeExtension" "boolean"
  可以用來禁止VidMode擴充套件。
  Option "AllowNonLocalXvidtune" "boolean"
  開啟允許xvidtune客戶從其他的主機連線。
  Option "DisableModInDev" "boolean"
  關閉可以禁止XFree86-Misc擴充套件(可用於動態修改輸入裝置的設定)。
  Option "AllowNonLocalModInDev" "boolean"
  允許客戶連線另一臺主機並且在執行的伺服器上改變鍵盤和滑鼠的設定。
  Option "AllowMouseOpenFail" "boolean"
  即使滑鼠裝置不能被開啟/初始化也允許X伺服器啟動。
  Option "VTInit" "command"
  在伺服器所用的VT被開啟之後執行命令。此命令被傳到"/bin/sh -c",以與此VT設定的stdin和stdout相同的真正使用者id執行。
  Option "VTSysReq" "boolean"
  使非SYSV系統的VT能支援SYSV風格的切換序列。這意味著在Alt-SysRq之後緊接著功能鍵(Fn)。這阻止X伺服器捕獲用於預設VT的切換序列鍵(已使客戶能夠存取它們)。
  Option "BlankTime" "time"
  設定黑屏屏保的超時時間。time以分鐘為單位,預設10分鐘。(xset進行動態設定)
  Option "StandbyTime" "time"
  Option "SuspendTime" "time"
  Option "OffTime" "time"
  設定進入DPMS的等待狀態的時間,這僅適於支援VESA DPMS相容方式的監視器。預設時間是20分鐘。(螢幕設定有DPMS選項設定)
  Option "Pixmap" "bpp"
  設定象素格式使用深度為24的格式。
  Option "NoPM" "boolean"
  禁止電源管理
  Option "Xinerama" "boolean"
  使能或禁止XINERAMA擴充套件
  6.5.4 Module節
  此節用於指定載入的X伺服器模組。此節在X伺服器以靜態方式建立時是被忽略的。在此節中載入的模組一般為X伺服器擴充套件模組和光柵字型模組。大多數其他模組在需要時自動載入。

  Load "modulename"
  例如:Type 1光柵字型模組由下列入口載入:

  Load "type1"

  SubSection "modulename"
  Option "moduleoption"
  EndSubSection

  6.5.5 Inputdevice節
  這一節寫入的資訊是從/etc/sysconfig/mouse和/etc/sysconfig/keyboard中讀出的,並且要求兩者的設定基本保持一致。一般而言,都存在兩種輸入裝置:其一是核心鍵盤,另一是核心指標,指標裝置主要是指滑鼠,但也可以是觸控式螢幕等其他裝置。

  Section "InputDevice"
  Identifier "name"
  Driver "InputDriver"
  options
  ...
  EndSection
  最常見的InputDriver是"keyboard"和"mouse"。
  Option "CorePointer"
  裝置被作為核心指標安裝。系統必須要有一個核心指標。
  Option "CoreKeyboard"
  在這一選項被設定時,裝置被作為核心鍵盤安裝。系統中有且只有一個核心鍵盤。
  Option "AlwaysCore" "boolean"
  Option "SendCoreEvents" "boolean"
  上面的兩個選項是等價的,它引起輸入裝置總是報告核心事件。它可以用於附加的指標裝置生成核心事件。
  Option "HistorySize" "number"
  設定移動歷史的大小,預設是0。
  6.5.6 Device節
  這一節描述顯示卡對應的資訊,它的內容一般從CardDB檔案中顯示卡對應的描述中獲得。若此裝置節被Screen節引用,則認為此節是可用的。

  Section "Device"
  Identifier "name"
  Driver "driver"
  entries
  … …
  EndSection
  BusID "bus-id"
  指定圖形卡的匯流排位置。對於PCI/AGP卡,bus-id串具有PCI:bus:device:function的格式。XFree86支援多個顯示卡的同時顯示
  Screen number
  VideoRam mem
  此選項指定圖形卡的RAM數量,以KB為單位。X服務程式會自動探測顯示卡,所以此欄位一般並不需要指定。
  Chipset "chipset"
  圖形卡上的晶片組型別。
  Ramdac "ramdac-type"
  DacSpeed speed
  DacSpeed speed-8 speed-16 speed-24 speed-32
  ClockChip "clockchip-type"
  BiosBase baseaddress
  MemBase baseaddress
  IOBase baseaddress
  ChipID id
  ChipRev rev
  TextClockFreq freq
  以上10個欄位,它們表示一些具體的X配置引數。一般在配置X伺服器時無需指定,而由自動檢測決定它們的值。

  6.5.7 Monitor節
  Monitor節描述顯示器的資訊,至少有一個顯示器節。在顯示器支援vbe和edid擴充套件時,它的所有資訊都可以從顯示器上讀出。

  Section "Monitor"
  Identifier "name"
  entries
  …
  EndSection
  VendorName "vendor"
  顯示器的製造商

  ModelName "model"
  監視器的型號

  HorizSync horizsync-range
  監視器支援的水平重新整理頻率範圍。單位是kHz,預設範圍是28-33kHz。

  VertRefresh vertrefresh-range
  監視器支援的垂直重新整理頻率範圍。單位是Hz,預設範圍是43-72Hz。

  Gamma gamma-value
  Gamma red-gamma green-gamma blue-gamma
  用於gamma校正,範圍從0.1到10.0,預設值是1.0。並非所有的驅動程式具有使用此資訊的能力。

  UseModes "modesection-id"
  包括Modes節稱為modesection-id列出的模式集合。這使得這些模式可用於此顯示器。

  Mode "name"
  設定視訊模式的詳細定義。以EndMode關鍵字結束。

  DotClock clock
  此模式下的點時鐘速率。

  HTimings hdisp hsyncstart hsyncend htotal
  指定模式的水平定時。

  VTimings vdisp vsyncstart vsyncend vtotal
  指定模式的垂直定時。

  Flags "flag" ...
  flag指定模式的選項設定。"Interlace"設定模式是交錯的。"DoubleScan"指定每個掃描行是雙次的。"+HSync"和"-HSync"指定HSync訊號的極性。"+VSync"和"-VSync"指定VSync訊號的極性。"Composite"指定複合同步訊號。"+CSync"和"-CSync"指定複合同步訊號的極性。

  HSkew hskew
  指定畫素數

  VScan vscan
  每根掃描線繪製的次數。"DoubleScan"加倍這個值。

  ModeLine "name" mode-description
  Mode項的緊湊版本。大多數情況下,X服務程式內含的VESA顯示模式已經足夠,您無需另外指定。

  6.5.8 Screen節
  一個配置檔案中可以有多個Screen節,但至少要有一個。這一節表示了顯示卡和監視器聯結在一起的資訊。當它出現在ServerLayout中時,這一節所表示的資訊就是啟用的,否則系統選擇第一個出現的Screen節作為活動的。這一節描述了顯示解析度,預設深度等資訊。它必須包含至少一個Display子節,這些子節提供了與顯示深度相關的資訊。

  Section "Screen"
  Identifier "name"
  Device "devid"
  Monitor "monid"
  entries
  …
  SubSection "Display"
  entries
  …
  EndSubSection
  …
  EndSection
  Device "device-id"
  指定這一節所使用的Device節,device-id和Device節的Identifier相同。

  Monitor "monitor-id"
  指定這一節所使用的Monitor描述

  VideoAdaptor "xv-id"
  指定可選的Xv介面卡描述

  DefaultDepth depth
  指定預設顯示深度。

  DefaultFbBpp bpp
  指定預設時使用的幀緩衝深度。

  Display子節:

  SubSection "Display"
  Depth depth
  entries
  …
  EndSubSection
  Depth depth
  指定此節表示的深度。

  FbBpp bpp
  指定此節表示的幀緩衝格式。

  Weight red-weight green-weight blue-weight
  指定16位顯示時,RGB三種顏色所佔的權重

  Virtual xdim ydim
  設定邏輯虛屏的大小,xdim一般要求為8或16的整數倍。注意:有的驅動程式不允許設定虛屏。

  ViewPort x0 y0
  設定初始顯示的左上角。

  Modes "mode-name" ...
  設定此深度下的視訊模式列表。所指定沒個模式必須被雙引號括起來。這必須和Monitor節指定的資訊相對應,也就是說,Monitor節指定的掃描頻率範圍一定要包含對應的模式。

  Visual "visual-name"
  visual-name可用的型別是StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor

  Black red green blue

  White red green blue
  分別可以指定黑色和白色的顏色

  6.5.9 ServerLayout節
  每個配置檔案可以有多個ServerLayout節,一個ServerLayout表示多個Screen和一個或多個輸入裝置(InputDevice節)的組合。

  Section "ServerLayout"
  Identifier "name"
  Screen "screen-id"
  …
  InputDevice "idev-id"
  …
  options
  …
  EndSection
  Screen screen-num "screen-id" position-information

  screen-id是強制的,指定引用的Screen節
  InputDevice "idev-id" "option" ...
  idev-id也是強制的,指定被引用的InputDevice節,可以指定多個選項,它們之間由引號隔開,這些選項也是InputDevice節支援的,包括:"CorePointer","CoreKeyboard","SendCoreEvents"。

  例如,指定兩個滑鼠:

  Section "ServerLayout"
  Identifier "Layout 1"
  Screen "MGA 1"
  Screen "MGA 2" RightOf "MGA 1"
  InputDevice "Keyboard 1" "CoreKeyboard"
  InputDevice "Mouse 1" "CorePointer"
  InputDevice "Mouse 2" "SendCoreEvents"
  Option "BlankTime" "5"
  EndSection

相關問題答案