Chapter 11 X Window System ¤Î Virtual Consoles

Wei-Hon Chen
11.1. §Ú·Q­n°õ¦æ X ¡A§Ú¸Ó«ç»ò°µ¡H
11.2. §Ú ¸ÕµÛ ­n°õ¦æ X, ¦ý¬O·í§ÚÁä¤J startx ®É¡A±o¨ì ¡§KDENABIO failed (Operation not permitted)¡¨ ¿ù»~¡C§Ú¸Ó«ç»ò¿ì¡H
11.3. ¬°¤°»ò§Ú¤£¯à¦b X ¸Ì¨Ï¥Î·Æ¹«¡H
11.4. ·Æ¹«ªººu½ü¡A¯à¦b X ¸Ì­±¨Ï¥Î¶Ü¡H
11.5. ¬°¤°»ò X Window ªº¿ï³æ©M¹ï¸Ü®Ø¤£¯à¥¿±`¹B§@¡H
11.6. ¤°»ò¬O virtual console¡H§Ú­n«ç»ò°µ¤~¯à¥Î¦h¤@ÂI¡H
11.7. §Ú­n«ç»ò±q X ¤Á´«¨ì virtual console¡H
11.8. §Ú­n«ç»ò°µ¤~¯à¦b¶}¾÷®É±Ò°Ê XDM¡H
11.9. ¬°¤°»ò·í§Ú°õ¦æ xconsole ®É¡Aµo¥Í¤F ¡§Couldn't open console¡¨ ªº¿ù»~¡H
11.10. ¥H«e§Ú¥i¥H¥H¤@¯ë¨Ï¥ÎªÌ°õ¦æ XFree86¡A¬°¤°»ò²{¦b¥¦»¡§Ú¤@©w­n ¥H root ¤~¯à°õ¦æ¡H
11.11. §Úªº PS/2 ·Æ¹«¦b X ¤¤¦³ÂI¤£¥¿±`¡H
11.12. §Úªº PS/2 ·Æ¹«¤£¯à³z¹L MouseSystem ¨Ó¹B§@¡H
11.13. ·í§Ú«Ø¥ß X µ{¦¡®É¡Aimake »¡¥¦§ä¤£¨ì Imake.tmpl¡C¥¦¦b­þ¨à¡H
11.14. §Ú¦b build ¤@­Ó X À³¥Îµ{¦¡¡A¥¦»Ý­n XFree86 3.3.x¡A¦ý¬O §Ú¤w¸g¦w¸Ë XFree86 4.x ¤F¡C§Ú¸Ó«ç»ò¿ì¡H
11.15. §Ú­n«ç»ò°µ¤~¯à³]©w¥ªºJ¤l¥Îªº·Æ¹«¡H
11.16. ­n¦p¦ó¦w¸Ë splash ¹Ï§ÎÅã¥Üµ{¦¡¡H¨º¸Ì¥i¥H§ä±o¨ì©O¡H
11.17. §Ú¯à¦b X ¸Ì¨Ï¥ÎÁä½L¤Wªº Windows ® ¶Ü¡H
11.18. §Ú­n«ç»ò¼Ë¤~¯à±o¨ì OpenGL ªº 3D µwÅé¥[³t¥\¯à¡H

11.1. §Ú·Q­n°õ¦æ X ¡A§Ú¸Ó«ç»ò°µ¡H

³Ì²³æªº¤èªk´N¬O¦b¦w¸Ë¨t²Îªº®É­Ô¤@¨Ö¦w¸Ë¡C

µM«á¬Ý¬Ý xorgconfig(1) ªº¤å¥ó¡A³o­Óµ{¦¡¥i¥H À°±z³]©w Xorg ¬ÛÃö³]©w¡A¨Ï¥¦¯à°÷¥¿½T¹B¥Î±zªºÅã¥Ü¥d¡B·Æ¹«µ¥¶gÃä¡C¦¹¥~¡AÁÙ¥i¥H¥Î xorgcfg(1) ªº¹Ï§Î¤¶­±¨Ó°µ¬ÛÃö³]©w¡C

±z©Î³\¤]·Q¸Õ¸Õ¬Ý Xaccel server¡C¸Ô±¡½Ð¬Ý Xi Graphics ³o¤@¬q¡C

11.2. §Ú ¸ÕµÛ ­n°õ¦æ X, ¦ý¬O·í§ÚÁä¤J startx ®É¡A±o¨ì ¡§KDENABIO failed (Operation not permitted)¡¨ ¿ù»~¡C§Ú¸Ó«ç»ò¿ì¡H

§Aªº¨t²Î¤@©w´£°ª¤F securelevel¡A¹ï¤£¹ï¡H¦b¤@­Ó´£°ª¤F securelevel ªº¨t²Î¤W¡A¬Oµ´¹ïµLªk°_°Ê X ªº¡C·Qª¾¹D¬°¤°»ò¡A ½Ð°Ñ¦Ò init(8) »¡©ú¤å¥ó¡C

©Ò¥H³o­Ó°ÝÃDÅܦ¨¡G§AÁÙ¯à«ç»ò¿ì¡C°ò¥»¤W§A¦³¨âºØ¿ï¾Ü¡G ±N§Aªº securelevel ³]¦^¹s (³q±`¦b /etc/rc.conf ¸Ì­±³]©w)¡A©Î¬O¦b±Ò°Ê®É°õ¦æ xdm(1) (¦b securelevel ³Qª@°ª«e)¡C

½Ð°Ñ¦Ò Q: 11.8. ¥H¨ú±o§ó¦h¦³Ãö±Ò°Ê®É °õ¦æ xdm(1) ªº¸ê°T¡C

11.3. ¬°¤°»ò§Ú¤£¯à¦b X ¸Ì¨Ï¥Î·Æ¹«¡H

¦pªG±z¥Îªº¬O syscons (¤º©wªº console ÅX°Êµ{¦¡) ªº¸Ü¡A±z¥i¥H ¸g¥Ñ³]©w FreeBSD ¨ÓÅý¥¦¤ä´©¦b¨C­Ó virtual console ¨Ï¥Î·Æ¹«¡C¬°¤F Á×§K©M X ²£¥Í½Ä¬ð¡Asyscons ¨Ï¥Î¤F¤@­Ó¥s°µ /dev/sysmouse ªºµêÀÀ¸Ë¸m¡C©Ò¦³·Æ¹«²£¥Íªº event ³£·|§Q¥Î moused ¨Ó¼g¨ì sysmouse ³o­Ó¸Ë¸m¡C¦pªG±z§Æ±æ¦b¤@­Ó ©Î¥H¤Wªº virtual console ¤W¨Ï¥Î·Æ¹«¡A¨Ã¥B ¯à°÷¨Ï¥Î X ªº¸Ü¡A½Ð°Ñ¦Ò Q: 4.4.4. ¨Ã¥B³]©w¦n moused¡C

µM«á½s¿è /etc/XF86Config ³o­ÓÀɮסA ¨Ã¥B½T»{§A¦³¥H¤U³o´X¦æªº³]©w¡C

Section         Pointer
Protocol        "SysMouse"
Device          "/dev/sysmouse"
....

¥H¤Wªº¨Ò¤l¡A¾A¥Î©ó XFree86 3.3.2 ¤Î¨ä«áªºª©¥»¡C¥Î©ó§ó¦­ªº ª©¥»ªº¡A¨ä Protocol À³¬° MouseSystems¡C

¦³¨Ç¤H¤ñ¸û³ßÅw¦b³]©w X ªº®É­Ô¥Î /dev/mouse ³o­Ó¸Ë¸m¡C¦pªG±z­nÅý¥¦¯à°÷ ¥¿±`¤u§@ªº¸Ü¡A±z´N¥²¶·§â /dev/mouse ³sµ²¨ì /dev/sysmouse (½Ð°Ñ¦Ò sysmouse(4)):

# cd /dev
# rm -f mouse
# ln -s sysmouse mouse

11.4. ·Æ¹«ªººu½ü¡A¯à¦b X ¸Ì­±¨Ï¥Î¶Ü¡H

¥i¥H¡C¤£¹L»Ý­n³]©w X client ºÝµ{¦¡¡C ½Ð°Ñ¦Ò Colas Nahaboo ªººô­¶ (http://www.inria.fr/koala/colas/mouse-wheel-scroll/) .

¦pªG§A­n¨Ï¥Î imwheel µ{¦¡¡A ¥u­n¸òµÛ¤U¦C¨BÆJ§@§Y¥i¡C

  1. Âà´«ºu½ü event Translate the Wheel Events

    imwheel µ{¦¡ªº¹B§@­ì²z¡A ¬O±N·Æ¹«ªº²Ä¥|Áä»P²Ä¤­ÁäÂà´«¦¨«öÁä event¡C¦]¬°¦p¦¹¡A©Ò¥H §A¥²¶·Åý·Æ¹«ÅX°Êµ{¦¡±N·Æ½ü¨Æ¥óÂà´«¦¨²Ä¥|Áä»P²Ä¤­Áä event¡C ¦³¨âºØ¤èªk¥i¥H¹F¨ì¥Øªº¡A¤@¬OÅý moused(8) §@Âà´«¡A¤G¬O Åý X ¥»¨­¥h§@ event Âà´«¡C

    1. ¨Ï¥Î moused(8) ¨ÓÂà´«ºu½ü Event

      ­nÅý moused(8) ¨Ó§@ event Âà´«¡A¥u­n¦b °õ¦æ moused(8) ªº©R¥O¦C¤¤¥[¤W -z 4 §Y¥i¡CÁ|­Ó¨Ò¤l¡A¦pªG§A¤@¯ë³£¬O¥H moused -p /dev/psm0 ¨Ó°_°Ê moused(8) ªº¸Ü¡A¥u­n§ï¦¨ moused -p /dev/psm0 -z 4 §Y¥i¡C¦pªG§A¬O¦b¶}¾÷¹Lµ{¤¤§Q¥Î /etc/rc.conf ¨Ó°_°Ê moused(8)¡A §A¥i¥H¦b /etc/rc.conf ¤¤±N moused_flags ¤W¥[ -z 4 §Y¥i¡C

      §A²{¦b»Ý­nÅý X ª¾¹D§Aªº·Æ¹«¦³¤­­Ó«öÁä¡A¥u­n¦b /etc/XF86Config ¤¤ªº ¡§Pointer¡¨ °Ï¶ô¤¤¥[¤W Buttons 5 ³o¤@¦æ§Y¥i¡C¨Ò¦p¡A §A¥i¯à¦b /etc/XF86Config ¤¤¦³ ¥H¤Uªº ¡§Pointer¡¨ °Ï¶ô¡G

      Example 11-1. ¦b XFree86 3.3.x ¨t¦Cªº XF86Config ³]©wÀɪº ¡§Pointer¡¨ °Ï¶ô¤¤¡A¥H moused §@Âà´« ªººu½ü¹«ªº³]©w½d¨Ò

      Section "Pointer"
         Protocol        "SysMouse"
         Device          "/dev/sysmouse"
         Buttons         5
      EndSection
      

      Example 11-2. ¦b XFree86 4.x ¨t¦Cªº XF86Config ³]©wÀɪº ¡§InputDevice¡¨ °Ï¶ô¤¤¡A¥H X Server §@Âà´« ªººu½ü¹«ªº³]©w½d¨Ò

      Section "InputDevice"
         Identifier      "Mouse1"
         Driver          "mouse"
         Option          "Protocol" "auto"
         Option          "Device" "/dev/sysmouse"
         Option          "Buttons" "5"
      EndSection
      

      Example 11-3. ¦b ¡§.emacs¡¨ ¤¤¡A³]©wºu½ü¹«ªº­ì¥Í ­¶­±ºu°Ê¤ä´©½d¨Ò

      ;; wheel mouse
      (global-set-key [mouse-4] 'scroll-down)
      (global-set-key [mouse-5] 'scroll-up)
      
    2. §Q¥Î§Aªº X Server ¨Ó§@ºu½ü Event Âà´«

      ¦pªG§A¨S¦³°õ¦æ moused(8)¡A©Î¬O§A¤£·Q§Q¥Î moused(8) ¥h§@ºu½ü event Âà´«¡A§A¥i¥H§ï¥Î X server ¨Ó§@³o¼Ëªº event Âà´«¡C§A±o¦b /etc/XF86Config Àɮפ¤§@´X­Ó§ó°Ê¡C²Ä¤@¡A §A­n¬°§Aªº·Æ¹«¿ï¾Ü¾A·íªº³q°T¨ó©w¡C¤j¦h¼Æªººu½ü¹«³£ ¨Ï¥Î ¡§IntelliMouse¡¨ ¨ó©w¡A¤£¹L XFree86 ¤]¤ä´©¨ä¥¦ªº³q°T¨ó©w¡A¨Ò¦pù§Þªº MouseMan+ ·Æ¹«©Ò¥Îªº ¡§MouseManPlusPS/2¡¨¡C·í§A¿ï¦n¤§«á¡A¥u­n ¥[¶i¤@¦æ ¡§Pointer¡¨ °Ï¶ôªº Protocol ÅܼƧY¥i¡C

      ²Ä¤G¡A§A­n§i¶D X server ±N±²°Ê¨Æ¥ó­«·s¹ï¬M¦Ü·Æ¹«ªº ²Ä¥|©M²Ä¤­Áä¡C³o¥i¥H§Q¥Î ZAxisMapping ¿ï¶µ¿ì¨ì¡C

      Á|­Ó¨Ò¤l¡A¦pªG§A¨S¦³¨Ï¥Î moused(8)¡A¦Ó§A¦³¤@­Ó IntelliMouse ¦w¸Ë¦b PS/2 ·Æ¹«°ðªº¸Ü¡A§A¥i¥H¦b /etc/XF86Config ¸Ì¨Ï¥Î¥H¤Uªº³]©w¡C

      Example 11-4. ¦b XF86Config ³]©wÀɪº ¡§Pointer¡¨ °Ï¶ô¤¤¡A¥H X Server §@Âà´«ªººu½ü¹«ªº³]©w½d¨Ò

      Section "Pointer"
         Protocol        "IntelliMouse"
         Device          "/dev/psm0"
         ZAxisMapping    4 5
      EndSection
      

      Example 11-5. ¦b XFree86 4.x ¨t¦Cªº XF86Config ³]©wÀɪº ¡§InputDevice¡¨ °Ï¶ô¤¤¡A¥H X Server §@Âà´« ªººu½ü¹«ªº³]©w½d¨Ò

      Section "InputDevice"
         Identifier      "Mouse1"
         Driver          "mouse"
         Option          "Protocol" "auto"
         Option          "Device" "/dev/psm0"
         Option          "ZAxisMapping" "4 5"
      EndSection
      

      Example 11-6. ¦b ¡§.emacs¡¨ ¤¤¡A³]©wºu½ü¹«ªº­ì¥Í ­¶­±ºu°Ê¤ä´©½d¨Ò

      ;; wheel mouse
      (global-set-key [mouse-4] 'scroll-down)
      (global-set-key [mouse-5] 'scroll-up)
      
  2. ¦w¸Ë imwheel

    ±µ¤U¨Ó¡A±q Ports ¸Ì¦w¸Ë imwheel ¡C¦b x11 Ãþ§O¸Ì¥i¥H§ä¨ì¥¦¡A¥¦¥i¥H±N ºu½ü event ¹ï¬M¨ìÁä½L event¡CÁ|­Ó¨Ò¤l¡A¥¦¥i¥H¦b§A ±Nºu½ü©¹«e±À®É¡A°e¥X¤@­Ó Page Up ¨ì§AªºÀ³¥Îµ{¦¡¥h¡CImwheel §Q¥Î¤@­Ó³]©wÀÉ¡A¥H«K¹ïÀ³ºu½ü event ¦ÜÁä½L event¡A³o¼Ë ¥¦´N¥i¥H¦b¤£¦PªºÀ³¥Îµ{¦¡¤¤¡A°e¥X¤£¦PªºÁä½L«öÁä¡C¹w³]ªº imwheel ³]©wÀɬO¦b /usr/X11R6/etc/imwheelrc¡A¦pªG§A·Q ½s¿è¦Û­qªº³]©wÀɪº¸Ü¡A¥i¥H±N¥¦½Æ»s¨ì ~/.imwheelrc¡AµM«á¨Ì§Aªº»Ý­n­×§ï¥¦¡C ³]©wÀɪº®æ¦¡¦b imwheel(1) ¸Ì­±¦³¸Ô²Óªº»¡©ú¡C

  3. ³]©w Emacs »P Imwheel ¨ó¦P¤u§@ (¿ï¾Ü©Ê)

    ¦pªG§A¨Ï¥Î emacs ©Î¬O Xemacs ªº¸Ü¡A¨º§A»Ý­n¦b§Aªº ~/.emacs Àɮ׸̥[¤W¤@¤p¬q³]©w¡C emacs ½Ð¥[¤W³o¤@¬q¡G

    Example 11-7. Imwheel ªº Emacs ³]©w

    ;;; For imwheel
    (setq imwheel-scroll-interval 3)
    (defun imwheel-scroll-down-some-lines ()
      (interactive)
      (scroll-down imwheel-scroll-interval))
    (defun imwheel-scroll-up-some-lines ()
      (interactive)
      (scroll-up imwheel-scroll-interval))
    (global-set-key [?\M-\C-\)] 'imwheel-scroll-up-some-lines)
    (global-set-key [?\M-\C-\(] 'imwheel-scroll-down-some-lines)
    ;;; end imwheel section
    

    Xemacs «h¦b ~/.emacs Àɸ̥[¤W³o¤@¬q¡G

    Example 11-8. Imwheel ªº Xemacs ³]©w

    ;;; For imwheel
    (setq imwheel-scroll-interval 3)
    (defun imwheel-scroll-down-some-lines ()
      (interactive)
      (scroll-down imwheel-scroll-interval))
    (defun imwheel-scroll-up-some-lines ()
      (interactive)
      (scroll-up imwheel-scroll-interval))
    (define-key global-map [(control meta \))] 'imwheel-scroll-up-some-lines)
    (define-key global-map [(control meta \()] 'imwheel-scroll-down-some-lines)
    ;;; end imwheel section
    
  4. °õ¦æ Imwheel

    ¦w¸Ë¤§«á¡A§A¥i¥Hª½±µ¦b xterm ¸ÌÁä¤J imwheel ©R¥O¥H°_°Ê¥¦¡C¥¦·|¥H­I´º°õ¦æ¡A¨Ã¥B°¨¤Wµo´§®Ä¥Î¡C ¦pªG§A½T©w­nª½±µ¨Ï¥Î imwheel¡A ¥u­n§â¥¦¥[¶i§A¦Û¤vªº .xinitrc ©Î .xsession ¤ºÀÉ®×§Y¥i¡C§A¥i¥H¤£ºÞ imwheel ©Ò°e¥X¨Ó¦³Ãö PID ÀÉ®× Äµ§i¡C¨º¨Çĵ§i¥u¹ï Linux ª©ªº imwheel ¦³®Ä¦Ó¤w¡C

11.5. ¬°¤°»ò X Window ªº¿ï³æ©M¹ï¸Ü®Ø¤£¯à¥¿±`¹B§@¡H

§â Num Lock Ãö±¼¸Õ¸Õ¡C

¦pªG±zªº Num Lock ¦b¶}¾÷®Éªº¹w³]­È¬O¶}µÛªº¸Ü¡A±z¥²¶·§â¤U¦C ³o¦æ©ñ¨ì XF86Config ³]©wÀɤ¤ªº Keyboard ³¡¥÷¡C

# Let the server do the NumLock processing.  This should only be
# required when using pre-R6 clients
    ServerNumLock

11.6. ¤°»ò¬O virtual console¡H§Ú­n«ç»ò°µ¤~¯à¥Î¦h¤@ÂI¡H

²³æ¨Ó»¡¡Avirtual console ´N¬O¥i¥HÅý±z¤£¥²°µ¤Ó¦h½ÆÂøªº³]©w ¦p¨Ï¥Îºô¸ô©Î°õ¦æ X ¡A¦Ó¦b¦P¤@»O¾÷¾¹¤W¦P®É°µ¦n´X¥ó¨Æªº¤èªk¡C

·í±Ò°Ê¨t²Î¨ÃÅã¥Ü§¹©Ò¦³¶}¾÷°T®§¤§«á¡A±z´N·|¦b¿Ã¹õ¤W¬Ý¨ì¤@­Ó login ªº´£¥Ü²Å¸¹¡C¦b³o­Ó®É­Ô±z´N¥i¥H¿é¤J±zªº login name ¥H¤Î password ¡AµM«á´N¥i¥H¦b²Ä¤@­Ó virtual console ¤W¶}©l¤u§@¤F (©ÎªÌ¶}©lª±¡I) ¡C

¦b¬Y¨Ç±¡ªp¤U¡A±z¥i¯à·|·Q­n§@¨ä¥Lªº¤u§@¡A¨Ò¦p»¡¬O¬Ý¬Ý±z¥¿¦b °õ¦æªºµ{¦¡ªº»¡©ú¤å¥ó¡A©Î¬O·í±z¦b FTP ¶Ç¿éªºµ¥«Ý®É¶¡¤¤¬Ý¬Ý±zªº ¶l¥ó¡C±z¥u»Ý­n«ö Alt-F2 («ö¦í Alt Á䤣©ñ¡A¨Ã«ö¤U F2 Áä) ¡AµM«á ±z´N·|¦b²Ä¤G­Ó ¡§virtual console¡¨ ¤W¬Ý¨ì¤@­Ó login ´£¥Ü²Å¸¹¡I·í±z·Q­n¦^¨ì­ì¨Óªº¤u§@®É¡A½Ð«ö Alt-F1¡C

FreeBSD ¦b¦w¸Ë®Éªº¹w³]­È¬O¨Ï¥Î¤T­Ó virtual console (3.3-RELEASE «á¬°¤K­Ó)¡A±z¥i¥H¥Î Alt-F1¡AAlt-F2¡A¥H¤Î Alt-F3 ¦b¥¦­Ì¤§¶¡°µ¤Á´«¡C

¦pªG±z·Q­n¦h¤@ÂI virtual console ªº¸Ü¡A±z¥u»Ý­n½s¿è /etc/ttys ³o­ÓÀÉ (½Ð°Ñ¦Ò ttys(5))¡A ¦b ¡§Virtual terminals¡¨ ³o­Óµù¸Ñ«á­±¥[¤J ttyv4 ¨ì ttyvc ªºÄæ¦ì¡G

# Edit the existing entry for ttyv3 in /etc/ttys and change
# "off" to "on".
ttyv3   "/usr/libexec/getty Pc"         cons25  on secure
ttyv4   "/usr/libexec/getty Pc"         cons25  on secure
ttyv5   "/usr/libexec/getty Pc"         cons25  on secure
ttyv6   "/usr/libexec/getty Pc"         cons25  on secure
ttyv7   "/usr/libexec/getty Pc"         cons25  on secure
ttyv8   "/usr/libexec/getty Pc"         cons25  on secure
ttyv9   "/usr/libexec/getty Pc"         cons25  on secure
ttyva   "/usr/libexec/getty Pc"         cons25  on secure
ttyvb   "/usr/libexec/getty Pc"         cons25  on secure

±z·Q¥Î´X­Ó´N³]´X­Ó¡C±z³]¶V¦h virtual terminal ¡A¥¦­Ì´N¥Î±¼ ¶V¦h¨t²Î¸ê·½¡F¦pªG±z¥u¦³¤£¨ì 8MB ªº°O¾ÐÅ骺¸Ü¡A³o¼vÅT´N¤j¤F¡C ±z¥i¯à¤]·|·Q§â secure ´«¦¨ insecure¡C

Important: ¦pªG±z·Q­n°õ¦æ X ªº¸Ü¡A±z ¥²¶· ¬°¥¦«O¯d (©ÎÃö±¼) ¦Ü¤Ö¤@­Ó virtual terminal ¡C³o´N¬O»¡¡A¦pªG ±z·Q¦b«ö¤Q¤G­Ó Alt ¥\¯àÁä®É³£¦³ login ´£¥Ü²Å¸¹¡A¦Ó¥B¤S¦b¦P¤@ ³¡¹q¸£¤W¤]·Q°õ¦æ X ªº¸Ü¡A¨º»ò³o¯u¬O¤Ó¤£©¯¤F - ±z¥u¯à¥Î¤Q¤@­Ó¡C

¨ú®ø¤@­Ó console ³Ì²³æªº¤èªk´N¬O§â¥¦Ãö±¼¡CÁ|¨Ò¨Ó»¡¡A¦pªG ±z¹³¤W­±Á¿ªº¤@¼Ë³]©w¤F¥þ³¡ªº 12 ­Ó terminal ¨Ã¥B·Q­n°õ¦æ X ¡A ±z¥²»Ý§â virtual terminal 12 ±q¡G

ttyvb   "/usr/libexec/getty Pc"         cons25  on  secure

³]¦¨¡G

ttyvb   "/usr/libexec/getty Pc"         cons25  off secure

¦pªG±zªºÁä½L¥u¦³ 10 ­Ó¥\¯àÁ䪺¸Ü¡A±z´N­n§ï¦¨³o¼Ë¡G

ttyv9   "/usr/libexec/getty Pc"         cons25  off secure
ttyva   "/usr/libexec/getty Pc"         cons25  off secure
ttyvb   "/usr/libexec/getty Pc"         cons25  off secure

(±z¤]¥i¥Hª½±µ§â³o´X¦æ¬å±¼¡C)

¤@¥¹±z§ï¤F /etc/ttys¡A¤U¤@­Ó¨BÆJ´N¬O­n ½T©w±z¦³¨¬°÷ªº virtual terminal ¸Ë¸m¡C³Ì²³æªº¤èªk´N¬O¡G

# cd /dev
# sh MAKEDEV vty12

¦A¹L¨Ó¡A·Q­n±Ò°Ê³o¨Ç virtual console ³Ì²³æ (¤]¬O³Ì°®²b) ªº°µªk´N¬O­«¶}¾÷¡CµM«á¡A¦pªG±z¤£·Q­«¶}¾÷ªº¸Ü¡A±z¥i¥H§â X Window Ãö±¼¡AµM«á¥Î root ªº¨­¥÷°õ¦æ¤U¦C«ü¥O¡G

# kill -HUP 1

·í±z°õ¦æ³o­Ó©R¥O«e¡A±z¤@©w­n§¹¥þ§â X Window Ãö±¼¡C¦pªG ±z¤£³o»ò°µªº¸Ü¡A±zªº¨t²Î¥i¯à·|¦b±z°õ¦æ kill ©R¥O«á¥X²{·í±¼©Î Âꦺªº±¡ªp¡C

11.7. §Ú­n«ç»ò±q X ¤Á´«¨ì virtual console¡H

½Ð¥Î Ctrl+Alt+Fn ¥H¤Á¦^¦Ü virtual console¡C Ctrl+Alt+F1 ¥i¥H¤Á¦^¦Ü²Ä¤@­Ó virtual console¡C

·í§A¤Á¦^¦Ü¤å¦r console «á¡A§A´N¥i¥H¨Ï¥Î¤@¯ë Alt+Fn «öÁä²Õ¦X¡A¦b¦U console ¤§¶¡¤Á´«¡C

­n¦^¨ì X ªº¸Ü¡A§A¥²¶·¤Á¦^¦Ü°õ¦æ X ªº virtual console¡C ¦pªG§A¬O±q©R¥O¦C¸Ì°_°Ê X ªº¸Ü (¨Ò¦p¨Ï¥Î startx «ü¥O)¡A¨º»ò X ·|¨Ìªþ¦b¤U¤@­Ó¥¼¨Ï¥Îªº virtual console¡A¦Ó¤£¬O¥¦³Q °_°Êªº¤å¦r console¡C¦pªG§A¦³¤K­Ó¨Ï¥Î¤¤ªº virtual terminal¡A¨º»ò X ´N·|¦b²Ä¤E­Ó¤W°õ¦æ¡A§A´N¥i¥H¨Ï¥Î Alt+F9 ¥Hªð¦^¦Ü X ¤¤¡C

11.8. §Ú­n«ç»ò°µ¤~¯à¦b¶}¾÷®É±Ò°Ê XDM¡H

¦³¨âºØ¤èªk¥i¥H±Ò°Ê xdm¡C¤@ºØ¤èªk¬O±q /etc/ttys ¨Ó±Ò°Ê¡A ¥i¥H°Ñ¦Ò ttys(5) »¡©ú¤å¥ó¤¤ªº½d¨Ò¡F¥t¤@ºØ¤èªk¬O¦b rc.local (½Ð°Ñ¦Ò rc(8)) °õ¦æ xdm¡A©Î¬O ¦b /usr/local/etc/rc.d ©ñ¤@­Ó X.sh¡C³o¨âºØ¤èªk³£¬O¦Xªkªº¡A¦pªG±z¸Õ¬Y¤@ºØ ¤èªkµL®Äªº¸Ü¡A±z¥i¥H¸Õ¸Õ¥t¥~¤@ºØ¡C³o¨âºØ¤èªkªºµ²ªG¬O¤@¼Ëªº¡GX ·|Åã¥Ü¤@­Ó¹Ï§Î¤Æªº login: ´£¥Ü¡C

¥Î ttys ªº¤èªkªºÀuÂI¡A¦b©ó«ü©ú¤F X ¦b±Ò°Ê®É¨ì©³¬O¥Î¨º­Ó vty¡A ¨Ã¥B±N logout ®É­«·s±Ò°Ê X server ªº³d¥ô¥áµ¹ init¡C rc.local ªº¤èªk«h¬O¦b·í±Ò°Ê X ¥X¤F°ÝÃD®É¡A¥i¥H«Ü»´ÃP¦a§â xdm ±þ±¼¨Ó¸Ñ¨M °ÝÃD¡C

¦pªG¬O¥Î rc.local ªº¤èªk¡A¦b°õ¦æ xdm ®É±z¤£¯à¥[¥ô¦ó°Ñ¼Æ¡]¤]´N¬O¶]¦¨ daemon¡^¡C¥²¶·¦b getty °õ¦æ«á ¤~¯à±Ò°Ê xdm¡A§_«h getty ©M xdm ·|¤¬¬Û½Ä¬ð¦ÓÂê¦í console¡C³Ì¦nªº ¤è¦¡¬O¦b script ¤¤¥[­Ó sleep¡AÅý¥¦¼È°± 10 ¬íÄÁ¥ª¥k¡A±µµÛ¤~°õ¦æ xdm¡C

¦pªG§A¬O±q /etc/ttys ±Ò°Ê xdm¡Axdm »P getty(8) ¤´¦³¾÷·|¤¬¬Û½Ä¬ð¡C¤@­ÓÁ×§K¥¦ªº¤èªk¡A´N¬O¦b /usr/X11R6/lib/X11/xdm/Xservers Àɮפ¤¥[¤J vt ¼Æ¦r¡C

:0 local /usr/X11R6/bin/X vt4

¤W­±ªº¨Ò¤l¤¤¡A·|«ü¥Ü X server ¦b /dev/ttyv3 ¤¤°õ¦æ¡C½Ðª`·N¼Æ¦r¬O®t¤@ªº¡CX server ±q¤@¶}©l¼Æ vty¡A¦Ó FreeBSD ®Ö¤ß«h¬O±q¹s¶}©l¼Æ vty ªº¡C

11.9. ¬°¤°»ò·í§Ú°õ¦æ xconsole ®É¡Aµo¥Í¤F ¡§Couldn't open console¡¨ ªº¿ù»~¡H

¦pªG§A¬O¥Î startx ¨Ó±Ò°Ê startx ªº¸Ü¡A/dev/console ªºÅv­­¨Ã ¤£·| §ïÅÜ¡Aµ²ªG´N¬O xterm -C ©M xconsole ³oÃþªºµ{¦¡µLªk ¥¿±`°õ¦æ¡C

³o¤@¤Áªº°ÝÃD¡A³£¬O¦]¬° console ªºÅv­­¬O±Ä¥Î¨t²Î¹w³]­È¡C ¦b¤@­Ó¦h¨Ï¥ÎªÌªº¨t²Î¸Ì¡A§Ú­Ì¤£§Æ±æ¨C­Ó¨Ï¥ÎªÌ³£¥i¥Hª½±µ¼g¤J¨t²Î console ¡C¦pªG¨Ï¥ÎªÌ¬O±q¾÷¾¹ªº VTY ª½±µ login ªº¸Ü¡A¨º»ò fbtab(5) ¥i¥H¸Ñ¨M³oÃþªº°ÝÃD¡C

²³æ¦a»¡¡A½Ð½T«O /etc/fbtab (½Ð°Ñ¦Ò fbtab(5)) ³o­ÓÀɮפ¤ªº³o¤@¦æ¨S¦³³Qµù¸Ñ±¼¡G

/dev/ttyv0 0600 /dev/console

³o¤@¦æ³]©wªº¦s¦b¥i¥H½T«O±q /dev/ttyv0 µn¤Jªº¨Ï¥ÎªÌ¥i¥H±±¨î console¡C

11.10. ¥H«e§Ú¥i¥H¥H¤@¯ë¨Ï¥ÎªÌ°õ¦æ XFree86¡A¬°¤°»ò²{¦b¥¦»¡§Ú¤@©w­n ¥H root ¤~¯à°õ¦æ¡H

©Ò¦³ªº X server ³£»Ý­n¥H root ¨Ó°õ¦æ¡A ¤~¯àª½±µ¦s¨ú§Aªºµø°TµwÅé¡Cª©¥»ªº XFree86 (<= 3.3.6) ·|¦Û°Ê ±N©Òªþªº server ¥H§Q¥Î root ¨­¥÷°õ¦æªº¤è¦¡ ¦w¸Ë°_¨Ó (setuid ¬° root)¡C¥Ñ©ó X server ³£¬OÅé¿nÃe¤j¤S½ÆÂøªºµ{¦¡¡AÅã¦Ó©ö¨£¦a¡A³o¬O¤@­Ó¦w¥þ¤Wªº¨aÃø¡C ¦]¬°³o­Ó­ì¦]¡A·sª©ªº XFree86 ´N¤£±N³o¨Ç server ¥H setuid ¬° root ªº¤è¦¡¦w¸Ë¡C

«Ü©úÅã¦a¡A§Ú­Ì§¹¥þµLªk±µ¨ü±N X server ¥H root ªº¨­¥÷°õ¦æ¡C°_½X´N¦w¥þ¤W¤£¬O­Ó¦n¥D·N¡C ¦³¨âºØ¤èªk¥i¥H¥H¤@¯ë¨Ï¥ÎªÌªº¨­¥÷¨Ï¥Î X¡C²Ä¤@¬O§Q¥Î xdm ©Î¬O¨ä¥¦ªº display manager (¨Ò¦p kdm)¡F²Ä¤G¬O§Q¥Î Xwrapper¡C

xdm ¬O¤@­Ó³B²z¹Ï§Î¬É­±µn¤Jªº daemon¡C ¥¦³q±`¦b¶}¾÷®É°õ¦æ°_¨Ó¡A¦Ó¥B­t³d¹ï¨Ï¥ÎªÌ§@¨­¥÷»{ÃÒ¡A¥H¤Î°_°Ê ¨Ï¥ÎªÌªº¤u§@Àô¹Ò¡F¥¦¥i»¡¬O¹Ï§ÎÀô¹Ò¤Uªº getty(8) »P login(1) ªº¹ïÀ³µ{¦¡¡C·Q±oª¾§ó¦h¦³Ãö xdm ªº¸ê°T¡A½Ð°Ñ¦Ò XFree86 ¤å¥ó¡A¥H¤Î¨ä FAQ ¶µ¥Ø¡C

Xwrapper ¬O X server ªº¥]¸Ëµ{¦¡¡F¥¦¥i¥H Åý¤@¯ë¨Ï¥ÎªÌ¥i¥H¤â°Ê°_°Ê X server ªº¤p¤u¨ã¡A¦ÓÁÙ¯àºû«ù¤@©wªº¦w¥þ Àô¹Ò¡C¥¦·|Àˬd¶Ç¤Jªº©R¥O¦C°Ñ¼Æ¡A¦pªG¨S°ÝÃDªº¸Ü¡A´N°_°Ê¾A·íªº X server¡C¦pªG§A¦]¬°¬YºØ²z¥Ñ¦Ó¤£·Q°õ¦æ display manager ªº¸Ü¡A ¥¦¬O¬°§A¦Ó³]©wªº¡C¦pªG§A¦w¸Ë¤F§¹¾ãªº ports¡A§A¥i¥H¦b /usr/ports/x11/wrapper ¤¤§ä¨ì¥¦¡C

11.11. §Úªº PS/2 ·Æ¹«¦b X ¤¤¦³ÂI¤£¥¿±`¡H

±zªº·Æ¹«©M±zªº·Æ¹«ÅX°Êµ{¦¡¥i¯à¦s¦b¦³¤£¦P¨Bªº²{¶H¡C

¦b 2.2.5 ¥H¤Î§ó¦­ªº¨t²Î¸Ì¡A±q X ¤Á¨ì virtual terminal µM«á ¦A¤Á¦^¨Ó´N¥i¥H¨Ï¥¦­Ì­«·s°µ¦P¨Bªº°Ê§@¡C¦pªG³o­Ó°ÝÃD±`±`µo¥Íªº¸Ü¡A ±z¥i¥H¦b±zªº kernel ³]©wÀɤ¤¥[¤J¤U­±³o­Ó¿ï¶µµM«á­«·s½sĶ¡G

options PSM_CHECKSYNC

¦pªG±z¨S¦³«Ø¥ß kernel ªº¸gÅç¡A½Ð¬Ý ¦Û­q®Ö¤ß ³o¤@¸`¡C

¥[¤W³o­Ó¿ï¶µ¥H«á¡A·Æ¹«©M·Æ¹«ÅX°Êµ{¦¡¶¡ªº¦P¨B°ÝÃDÀ³¸Ó´N¤ñ¸û ¤£·|¥X²{¤F¡C¦pªG³o­Ó°ÝÃD¤´µM¦s¦bªº¸Ü¡A¦b²¾°Ê·Æ¹«®É«ö«ö·Æ¹««öÁä ¥i¥H¨Ï·Æ¹«©M·Æ¹«ÅX°Êµ{¦¡­«·s°µ¦P¨Bªº°Ê§@¡C

¸Óª`·Nªº¬O³o­Ó¿ï¶µ¨Ã¤£¬O¹ï¨C¤@­Ó¨t²Î³£¦³®Ä¡A¥¦¥i¯à·|Åý±µ¦b PS/2 ·Æ¹«¦ì¸mªº ALPS GlidePoint ¸Ë¸m¥¢¥h ¡§tap¡¨ ³o¶µ¥\¯à¡C

¦b 2.2.6 ¤Î¨ä«áªºª©¥»¡A¦P¨Bªº½T»{¤w¸g¦³¤F¸û¦nªº¸Ñ¨M¿ìªk¡A ¦Ó¥B³o¨Ç³£¤w¸g¬O PS/2 ·Æ¹«ÅX°Êµ{¦¡ªº¼Ð·Ç¤F¡C³o­Ó¤èªk¤]¥i¥H¦b GlidePoint ¤W¥¿±`¤u§@¡C (¦]¬°½T»{ªºµ{¦¡½X¤w¸g¦¨¬°¤@­Ó¼Ð·Ç¥\¯à¡A ©Ò¥H¦b³o¨Çª©¥»¤¤§Ú­Ì¤£¦b´£¨Ñ PSM_CHECKSYNC ªº¿ï¶µ¤F¡C) ¤£¹L¦b ·¥¤Ö¼Æªº®×¨Ò¤¤¡A³o¨ÇÅX°Êµ{¦¡·|»~³ø¦P¨B©Ê¿ù»~¡AµM«á±z´N·|¬Ý¨ì ³o¼Ëªº®Ö¤ß°T®§¡G

psmintr: out of sync (xxxx != yyyy)

µM«á±z´N·|µo²{±zªº·Æ¹«¤£¯à¥¿±`¹B§@¤F¡C

¦pªG±zµo¥Í¤F³o¼Ëªºª¬ªp¡A±z¥²¶·Âǥѧâ PS/2 ·Æ¹«ÅX°Êµ{¦¡ªº flag ³]¦¨ 0x100 ¨Ó§â¦P¨B½T»{ªºµ{¦¡½Xµ¹¨ú®ø±¼¡CµM«á¦b¶}¾÷´£¥Ü²Å¸¹®É¥Î -c ¿ï¶µ¨Ó¶i¤J UserConfig¡G

boot: -c

µM«á¡A¦b UserConfig ©R¥O¦C¤¤Áä¤J¡G

UserConfig> flags psm0 0x100
UserConfig> quit

11.12. §Úªº PS/2 ·Æ¹«¤£¯à³z¹L MouseSystem ¨Ó¹B§@¡H

¦³¤@¨Ç³ø§i«ü¥X¬Y¨Ç¼tµPªº PS/2 ·Æ¹«¥u¯à¦b ¡§°ª¸ÑªR«×¡¨ ª¬ºA¤U¤~¯à¹B§@¡C¦pªG¤£¬Oªº¸Ü¡A·Æ¹«´å¼Ð ·|±`±`¶]¨ì¿Ã¹õªº¥ª¤W¨¤¥h¡C

«D±`¤£©¯ªº¡A³o­Ó°ÝÃD¦b 2.0.X ©M 2.1.X ¤U¬OµL¸Ñªº¡C¦b 2.2 ¨ì 2.2.5 ª©¡A±z¥i¥H¹ï /sys/i386/isa/psm.c ¨Ï¥Î¤U¦C patch µM«á­««Ø±zªº®Ö¤ß¡C¦pªG±z¨S¦³«Ø¥ß kernel ªº¸gÅç¡A ½Ð¬Ý ¦Û­q®Ö¤ß ³o¸`¡C

@@ -766,6 +766,8 @@
     if (verbose >= 2)
         log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n",
             unit, i);
+    set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH);
+
 #if 0
     set_mouse_scaling(sc->kbdc);        /* 1:1 scaling */
     set_mouse_mode(sc->kbdc);                /* stream mode */

¦b 2.2.6 ¤Î¥H«áªºª©¥»¡A¦b PS/2 ·Æ¹«ÅX°Êµ{¦¡¤¤³]©w 0x04 ªº flag ·|§â·Æ¹«³]¦¨°ª¸ÑªR«×¼Ò¦¡¡C¦b¶}¾÷´£¥Ü²Å¸¹®É¥Î -c ¿ï¶µ¨Ó¶i¤J UserConfig¡G

boot: -c

µM«á¡A¦b UserConfig ªº©R¥O¦C¤¤Áä¤J¡G

UserConfig> flags psm0 0x04
UserConfig> quit

«e¤@¸`¦³´£¨ì¥t¤@­Ó¥i¯à¾É­P·Æ¹«°ÝÃDªº­ì¦]¡C

11.13. ·í§Ú«Ø¥ß X µ{¦¡®É¡Aimake »¡¥¦§ä¤£¨ì Imake.tmpl¡C¥¦¦b­þ¨à¡H

Imake.tmpl ¬O Imake ®M¥óªº¤@³¡¥÷¡AImake ¬O¼Ð·Çªº«Ø¥ß X µ{¦¡ªº¤u¨ã¡C Imake.tmpl ©M¨ä¥L¼Æ­Ó header file ¤@¼Ë¬O«Ø¥ß X µ{¦¡ªº¥²­nÀɮסA±z¥i¥H¦b X prog distribution ¤¤§ä¨ì¥¦­Ì¡C±z¥i¥H¥Î sysinstall(FreeBSD 5.2 ¤§«eª©¥»«h¬O /stand/sysinstall) ¨Ó¦w¸Ë©Î¬Oª½±µ±q X distribution ¤¤¤â°Ê¦w¸Ë¡C

11.14. §Ú¦b build ¤@­Ó X À³¥Îµ{¦¡¡A¥¦»Ý­n XFree86 3.3.x¡A¦ý¬O §Ú¤w¸g¦w¸Ë XFree86 4.x ¤F¡C§Ú¸Ó«ç»ò¿ì¡H

­n§i¶D port ¦b½s͵{¦¡®É¡A¨Ï¥Î XFree86 4.x ¨ç¦¡®w¡A§A¥i¥H ¦b /etc/make.conf ¸Ì (¦pªG§A¨S¦³³o­ÓÀÉ¡A ½Ð«Ø¥ß¥¦) ¥[¤W¤U­±³o¤@¦æ¡G

XFREE86_VERSION=        4

11.15. §Ú­n«ç»ò°µ¤~¯à³]©w¥ªºJ¤l¥Îªº·Æ¹«¡H

¦b±zªº .xinitrc ©Î¬O .xsession ¤¤°õ¦æ xmodmap -e "pointer = 3 2 1" ªº«ü¥O¡C

11.16. ­n¦p¦ó¦w¸Ë splash ¹Ï§ÎÅã¥Üµ{¦¡¡H¨º¸Ì¥i¥H§ä±o¨ì©O¡H

´N¦bµo¦æ FreeBSD 3.1 ¤§«e¡A§Ú­Ì¥[¶i¤F¦b¶}¾÷®ÉÅã¥Ü ¡§splash¡¨ ¹Ï§Îªº·s¥\¯à¡C¥Ø«e¥Î¨ÓÅã¥Ü¦b¿Ã¹õ¤WªºÀÉ®× ¥²¶·¬O 256 ¦âªºÂI¯x°}¹Ï§Î (*.BMP) ©Î ZSoft PCX(*.PCX) ªº®æ¦¡¡C°£¦¹¤§¥~¡A¸ÑªR«×¤]¥²¶·¦b 320x200 ¥H¤U¡A¤~¯à©M¼Ð·Ç VGA Åã¥Ü¥d·f°t¨Ï¥Î¡C¦pªG±z½sĶ kernel ®É¦³¥[¤J VESA ¤ä´©¡A¨º»ò³Ì¤j¸ÑªR«×¥i¥H¨ì 1024x768¡Cª`·N VESA ªº ¤ä´©»Ý­n¥[¤J VM86 ³o­Ó kernel ¿ï¶µ¡CVESA ¤ä´©¹ê»Ú¤W¥i¥H¦b½sĶ kernel ®É¥[¤J VESA ¿ï¶µ¡B ©Î¸ü¤J VESA ªº kld module ¨Ó¹F¦¨¡C

±z­n­×§ï±±¨î FreeBSD ¶}¾÷¨BÆJªº³]©wÀÉ¡A¤~¯à¨Ï¥Î splash Åã¥Ü¹Ï§Îªº¥\¯à¡C³]©wÀɦbµo¦æ FreeBSD 3.2 «e¦³¨Ç§ó°Ê¡A©Ò¥H²{¦b ¦³¨â­Ó¤èªk¥i¥H¸ü¤J splash ªº¥\¯à¡G

  • FreeBSD 3.1

    ¥ý¿ï¥X¥Î¨ÓÅã¥Ü¦b¿Ã¹õ¤Wªº¹Ï§Î¡A3.1 ª©¥u¤ä´© Windows ªºÂI¯x°}®æ¦¡¡C¿ï¦n¤F±z­nªº¹ÏÀÉ«á¡A±N¥¦«þ¨ì /boot/splash.bmp¡C±µµÛ§â¤U­±´X¦æ¥[¤J /boot/loader.rc ¤¤¡G

    load kernel
    load -t splash_image_data /boot/splash.bmp
    load splash_bmp
    autoboot
    
  • FreeBSD 3.2+

    °£¤F¥[¤J¹ï PCX Àɮתº¤ä´©¥~¡AFreeBSD 3.2 ¤]§ï¶i¤F ¶}¾÷µ{§Çªº³]©w¤è¦¡¡C¦pªG±zÄ@·Nªº¸Ü¡A¥i¥H¥Î¤W­z FreeBSD 3.1 ªº¤èªk¡A±N splash_bmp ´«¦¨ splash_pcx ¨Ó¸ü¤J PCX ÀÉ®×§Y¥i¡C ¦pªG·Q¥Î·sªº³]©w¤è¦¡¡A±zªº /boot/loader.rc ¥²¶·¥]¬A³o´X¦æ¡G

    include /boot/loader.4th
    start
    

    Áٻݭn¤@­Ó¥]§t¥H¤U´X¦æªº /boot/loader.conf ¡G

    splash_bmp_load="YES"
    bitmap_load="YES"
    

    ³o¬O°²³]±z¥Î /boot/splash.bmp ¨Ó·í§@ splash ªº¿Ã¹õÅã¥Ü¡C¦pªG·Q¥Î PCX ªºÀɮסA§â¥¦«þ¦¨ /boot/splash.pcx¡A¦p¤W­z°µ¥X /boot/loader.rc¡A¦A±N³o´X¦æ¥[¨ì /boot/loader.conf ¤¤¡G

    splash_pcx_load="YES"
    bitmap_load="YES"
    bitmap_name="/boot/splash.pcx"
    

²{¦b´N¥u³Ñ¤U splash ¥Î¨ÓÅã¥Üªº¹ÏÀÉ¡A±z¥i¥H¦b http://www.baldwin.cx/splash/ §ä¨ì¦UºØ¼Ë«~¡C

11.17. §Ú¯à¦b X ¸Ì¨Ï¥ÎÁä½L¤Wªº Windows ® ¶Ü¡H

¥i¥H¡C§A©Ò­n§@ªº¡A´N¬O§Q¥Î xmodmap(1) ¥h©w¸q§A·Q¨Ï¥Î ªº¥\¯à¡C

°²³]©Ò¦³ªº ¡§Windows®¡¨ ³£¬O¼Ð·Çªº¡A ¨º¥¦­Ìªº keycode ¤À§O¬°¡G

  • 115 - Windows Áä¡A ¦b¥ª¤âªº Ctrl »P Alt Á䤧¶¡

  • 116 - Windows Áä¡A ¦b Alt-Gr Áä¥kÃä

  • 117 - ¿ï³æÁä¡A¥k¤âªº Ctrl Á䥪Ãä

­nÅý¥ªÃ䪺 Windows Áä¦L¥X¤@­Ó³rÂI¡A¸Õ¸Õ³o­Ó¡G

# xmodmap -e "keycode 115 = comma"

§A¥i¯à­n­«¶]§Aªº windows manager¡A¤~·|¦³°Ê§@¡C

­nÅý Windows Áä ªº¹ï¬M¦b¨C¦¸ X °_°Ê®É¦Û°Ê³]©w¦n¡A§A¥i¥H¦b§Aªº ~/.xinitrc ¸Ì¥[¤W xmodmap¡A ©Î¬O³Ì¦n«Ø¥ß¤@­Ó ~/.xmodmaprc ÀɮסA¸Ì­± ¨C¤@¦æ´N¬O¤@­Ó xmodmap ªº¿ï¶µ¡AµM«á¦b§Aªº ~/.xinitrc ¸Ì¥[¤W¡G

xmodmap $HOME/.xmodmaprc

³o¤@¦æ¡C

¨Ò¦p¡A§A·Q­n±N³o¤T­ÓÁä¦U¹ï¬M¨ì F13¡BF14 ©M F15¡C³oÅý§A¯à ¦b§Aªºµ{¦¡©Î¬O window manager ¤º±N¨ä¹ïÀ³¨ì«K§Qªº¥\¯à¤W¡Aµ¥¤@¤U §Ú­Ì·|¥Ü½d¡C

§â³o¨Ç©ñ¶i ~/.xmodmaprc ¸Ì¡G

keycode 115 = F13
keycode 116 = F14
keycode 117 = F15

°²¦p§A¥Î fvwm2 ªº¸Ü¡A§A¥i¥H§@³o¼Ëªº¹ï¬M¡A Åý F13 ¯à°÷Åý´å¼Ð©Ò¦bªºµøµ¡ÁY¦¨¤p¹Ï¥Ü (©Î¬O¤Ï¹L¨Ó)¡CF14 Åý´å¼Ð ©Ò¦bªºµøµ¡Åܦ¨³Ì¤W¼hªºµøµ¡¡A©Î¬O°h¨ì¤U¼h¥h (¦pªG¥¦¤w¸g¬O³Ì¤W¼h ¤Fªº¸Ü)¡CF15 «h±N Workplace (application) ¿ï³æ¥s¥X¨Ó¡A§Y¨Ï´å¼Ð ¤£¦b®à­±¤W¡C·í§A¨S¦³¥i¨£ªº®à­±°Ï°ì®É¡A³o­Ó¥\¯à´N¬Û·í¦a¤è«K (¦Ó¥B «öÁä¤Wªº¹Ï®×©M³o­Ó¥\¯à¬Û§k¦X)¡C

¥H¤Uªº ~/.fvwmrc ³]©w¥i§@¥X«e­zªº¥\¯à¡C

Key F13        FTIWS    A        Iconify
Key F14        FTIWS    A        RaiseLower
Key F15        A        A        Menu Workplace Nop

11.18. §Ú­n«ç»ò¼Ë¤~¯à±o¨ì OpenGL ªº 3D µwÅé¥[³t¥\¯à¡H

3D ¥[³t¥\¯àªº¦³µL¡Aµø§A©Ò¨Ï¥Îªº XFree86 ª©¥»»PÅã¥Ü´¹¤ù ªº«¬¸¹¦Ó©w¡C¦pªG§Aªº¬O NVIDIA ´¹¤ùªº¸Ü¡A½Ð¥h FreeBSD NVIDIA Driver Initiative ºô­¶¬Ý¬Ý¡A¨º¸Ì¦³¦b XFree86-4 ¤W¨Ï¥Î NVIDIA ´¹¤ùªº 3D ¥[³t¥\¯àªº°Q½×¡CXFree86-4 ¤Wªº¨ä¥¦Åã¥Ü¥d¼tµP µwÅé¥[³t¥\¯àªº¸ê°T¡A ¥]¬A Matrox G200/G400, ATI Rage 128/Radeon, 3dfx Voodoo 3, 4, 5, ¥H¤Î Banshee¡A¥i¦b XFree86-4 Direct Rendering on FreeBSD ºô­¶¤W§ä¨ì¡CXFree 3.3 ªº ¨Ï¥ÎªÌ¥i¥H¨Ï¥Î Utah-GLX port¡A¥¦¥i¥H¦b graphics/utah-glx §ä¨ì¡C ¨Ï¥Î¥¦¥i¥H¦b Matrox Gx00, ATI Rage Pro, SiS 6326, i810, Savage, ¥H¤Îªº NVIDIA ¤W±o¨ì¦³­­ªº OpenGL ¥[³t¡C

¥»¤å¤Î¨ä¥L¤å¥ó¡A¥i¥Ñ¦¹¤U¸ü¡Gftp://ftp.FreeBSD.org/pub/FreeBSD/doc/¡C

­Y¦³ FreeBSD ¤è­±ºÃ°Ý¡A½Ð¥ý¾\Ū FreeBSD ¬ÛÃö¤å¥ó¡A¦p¤£¯à¸Ñ¨Mªº¸Ü¡A¦A¬¢¸ß <questions@FreeBSD.org>¡C
Ãö©ó¥»¤å¥óªº°ÝÃD¡A½Ð¬¢¸ß <doc@FreeBSD.org>¡C