ºìÁªLinuxÃÅ»§
Linux°ïÖú

X Window ϵͳʹÓÃÖ¸ÄÏ--17

·¢²¼Ê±¼ä:2006-07-30 10:16:25À´Ô´:ºìÁª×÷Õß:bear10214
µÚ£±£·Õ ¶¨ÖÆÄãµÄ¼üÅ̺ͻ¬Êó -- תÒë
µçÄԵļüÅÌͨ³£º¬ÓÐһЩ "ÌØÊ⹦ÄÜ" (special function)¼ü£¬ÔÚ´ËÓÐÒ»
Щ·½·¨À´ "Öƶ¨"(program)ÕâЩÌØÊ⹦Äܼü£¬Ê¹ËüÃÇÄÜÍê³ÉÌض¨µÄ¹¦ÄÜÒÔÊʺÏ
Ä㹤×÷µÄ·½Ê½¡£ÀýÈ磬Äã¿ÉÒÔ¶¨ÒåһЩ¼üÀ´ÊäÈëÄÇЩÄã³£ÓõÄÃüÁ»òÖ»Ðè°´
Ò»¸ö¼ü±ãÄܹ»ÊäÈëһЩ³ÌʽµÄƬ¶Î¡£
ÔÚ£ØÖУ¬ÄãÄÜÖƶ¨µÄ²»Ö»Êǹ¦Äܼü¶øÒÑ£¬ÆäËüÒ»°ãµÄ¼üºÍ»¬ÊóµÄ°´Å¥Ò²¶¼
¿ÉÖƶ¨¡£¶Ôÿһ¸öÓ¦ÓóÌʽ£¬Äã¾ù¿ÉÖ¸¶¨ÌرðµÄ¹¦Äܸø¼üÅ̺ͻ¬Êó°´Å¥£¬»òÁ½
ÕßÖ®×éºÏ¡£ (ÀýÈçÔÚ xeditÖÐÄã¿ÉÒÔ½áºÏSHIFT ¼üºÍ»¬ÊóµÄÓÒ°´Å¥À´ÈÃÄãÏòÇ°
Òƶ¯Ò»¸öµ¥×Ö)¡£ ËùÓÐʹÓÃ£Ø ToolkitµÄ³Ìʽ¾ùÔÊÐíʹÓÃÕßÀûÓÃÒ»¸ö±»³Æ֮Ϊ
¼üÅÌתÒë (translations) µÄÉèÊ©À´Ö´ÐдËÖÖ¶¨Ò壬ÇÒ´ËÖÖ¶¨Òå½åÖøÕý¹æµÄ
resources ½á¹¹´«µÝ¸øÓ¦ÓóÌʽ¡£ (ÄÇЩ²»Ê¹ÓÃ£Ø ToolkitµÄÓ¦ÓóÌʽ£¬Í¬Ñù
µØÒ²¿ÉÒÔÓÃÏàͬµÄÉèÊ©À´Öƶ¨, µ«ËüÃÇÐè¸ö±ðµÄ¶¨ÒåËùÒÔ²»Äܹ㷺µØÓ¦Ó㬴Ó
ÏÖÔÚÆð£¬ÎÒÃǼÙÉèÿµ±ÌÖÂÛÓйØתÒëµÄÖÖÖÖ£¬¾ùΪ¶ÔÄÇЩʹÓÃ£Ø ToolkitµÄÓ¦
ÓóÌʽ¶øÑÔ¡£)
¾ÍÈçͬËùÓÐµÄ resourcesÒ»Ñù£¬×ªÒëÊǵ±Ó¦ÓóÌʽִÐÐʱ²Å±»´¦Öá£ÀýÈç
Äã¿ÉÒÔÓµÓÐÊý¸ö¾ß±¸²»Í¬×ªÒëÉ趨µÄ xedit£¬ÔÚͬʱһÆðÖ´ÐС£( Äã¿ÉÒÔÈÃÒ»
¸öxedit Êʺϱ༭±¾ÎÄ£¬ÁíÒ»¸öÊʺϱ༭³ÌʽÂ룬¶øÁíÒ»¸öÊʺϱ༭ÎÄÊé)¡£
±¾ÕÂÌÖÂÛתÒë -- °ü¹ÎËüÃǵĶ¨Òå¸ñʽ£¬ÈçºÎ½«ËüÃÇÉ趨µ½Ó¦ÓóÌʽ£¬ºÍ
ËüÃÇËùº­¸Ç¹¦ÄܵġõΧ¡£ÎÒÃÇÊ×ÏÈÒÔʵÀýÀ´½éÉÜ£¬Ö𽥵ص¼ÒýÄã¿´µ½²»Í¬µÄ½Ç
¶È¡£¶øáá±È½ÏÕýʽºÍÏêϸµØÌÖÂÛתÒë¡£×îáᣬÎÒÃÇÁгöµ±ÄãʹÓÃתÒëʱ³£»áÅö
µ½µÄ´íÎ󣬲¢¸øÄãһЩÈçºÎ¿Ë·þÕâЩÎÊÌâµÄÌáʾ¡£
17.1 ʵ¼ÊʹÓÃתÒë
Toolkit תÒë½á¹¹×î¼òµ¥µÄÓÃ;±ãÊÇÈÃÄãÖƶ¨Äã¼üÅ̵ļü¡£ÀýÈ磬µ±Äãʹ
ÓÃxterm Ϊһ¸öÖ´ÐÐÒ»°ãshell ÃüÁîµÄÊÓ´°Ê±£¬Äã¿ÉÄÜÏ£Íû¶¨ÒåһЩÌØÊ⹦ÄÜ
¼üÀ´ÊäÈëÄã³£ÓõÄÃüÁÇÒÏ£ÍûÖ¸¶¨µÄ¹ØϵÈçÏ£º
µ±ÎÒ°´ÏÂÕâ¸ö¼üʱ... ÎÒÏ£ÍûÕâ¸ö×Ö´®±»ÊäÈë
F1 rm core *.tmp
ÀûÓÃToolkit ´ïµ½´ËÄ¿µÄ·½·¨Îª£ºÖ¸¶¨Ò»¸öÖµ¸øʹÓÃתÒëµÄwidgetÖеÄresources
¡£´ËÖµÉ趨ӦÓóÌʽÖÐËù±ØÐèµÄ¶¨ÖÆ (customisation)£¬ÇÒ±»Toolkit µÄ Trans-
lation Manager (תÒë¹ÜÀíÆ÷) Ëù´¦Àí¡£´Ë resourcesÊôì¶Àà±ðTranslation,
ÇÒÆä³ÉÔ±Ãû³Æ¼¸ºõÒ»¶¨ÊÇtranslations¡£
ÔÚÏÂÒ»½ÚÎÒÃǽ«¿´µ½É趨µ½resources ÖеÄÖµµÄ¸ñʽ¡£
17.1.1 ÈçºÎ¶ÔÒ»¸öÓ¦ÓóÌʽָ¶¨×ªÒë
¶ÔÇ°Êöxterm µÄÀý×Ó£¬ÎÒÃǶ¨Òå (ÔÚ¼´½«±»Ó¦ÓóÌʽ¶ÁÈëµÄresource×ÊÁÏ
¿âÖлòһЩresourceµµ°¸ÖÐ) Ò»¸ö¹æ¸ñÀàËÆ£º
xterm*VT100*Translations: (contd.)
F1: string("rm core *.tmp") ×¢Ò⣺²»ÍêÕû£¡£¡
ÆäÒâΪÔÚÈκÎÀà±ð VT100µÄ xterm widget ÖУ¬µ±¼ü F1 ±»°´ÏÂʱ£¬²åÈë
×Ö´® "rm core *.tmp")¡£
²»ÐÒµÄÊÇ£¬²¢Ã»ÓÐÕâ÷á¼òµ¥£¬×ªÒë¹ÜÀíÆ÷»á°ÑÉÏÃæµÄ¹æ¸ñ½âÊÍΪ "È¥µôËù
ÓÐÏÖ´æµÄתÒ룬ÇÒ¼ÓÈë... " £¬ËùÒÔËùÓÐÕý³£µÄÏñ " A¼üÊDzåÈëÒ»¸ö A" ÕâÖÖ
ϵ½á (binding)¶¼»áÏûʧ¡£ÎªÁË¿Ë·þÕâµã£¬Äã±ØÐèʹÓÃһЩ±»³ÆΪ directive
(Ö¸Òý)µÄÓï·¨²åÈëÔÚ resource ֵ֮ǰ£º
xterm*VT100*Translations: #override(contd.)
F1: string("rm core *.tmp")
ͨ³£Äã»áÏ£Íû±£³Ö´ó²¿·ÝÏÖ´æµÄϵ½á£¬¶øÖ»ÊÇ°ÑÄãÃ÷È·Ö¸¶¨µÄÖµ¸²¸ÇÉÏÈ¥
£¬ËùÒÔÄãÒ»°ã¶¼ÊÇÔÚÄãµÄתÒë±íÖУ¬Ö¸¶¨ #override¡£
ÏÖÔÚÕâ¸ö¹æ¸ñ¿ÉÒÔ¿ªÊ¼¹¤×÷ÁË£¬½åÖøÆôʼһ¸ö xtermÇҰѴ˹æ¸ñ (ÔÚÁ½¸ö
µ¥ÒýºÅ (')ÖмäµÄ²¿·Ý) µ±³ÉÑ¡Ïî -xrm µÄÒýÊýÀ´²âÊÔËü£º
xterm -xrm 'xterm*VT100*Translations: ... µÈµÈ'
°´ÏÂÌØÊ⹦Äܼü F1,Ä㽫¿´µ½Ö¸¶¨µÄ×Ö´®³É¹¦µÄ²åÈ룬µ«²¢Î´°üº¬ÐÂÁÐ×ÖÔª
(newline) £¬Äã¿ÉÒÔÓÃÒ»µãÓï·¨µÄ¼¼ÇÉÀ´¿Ë·þËü£¬Ïñ£º
xterm*VT100*Translations: #override(contd.)
F1: string("rm core *.tmp")string(0xd)
Õâ½âÊÍÁËÒÔÏÂÁ½µã£º
1. string()µÄ×÷ÓúÍËüµÄÒýÊýÏà¹Ø¡£Äã¿ÉÒÔÖ±½ÓÊäÈë±¾ÎÄ (ÀýÈç string(lpq))
£¬µ«Èç¹û±¾ÎÄ°üº¬¿Õ°×»ò·Ç×Öĸ×ÖÔª£¬Ôò±ØÐèÔÚ±¾ÎÄÇ°áá¼ÓÉÏË«ÒýºÅ¡£
Èç¹ûÒýÊýÊÇÒÔ "0X" ¿ªÍ·£¬Ôò½«Æäáá½âÊÍΪʮÁù½ø룬²¢²åÈëÏà¶ÔµÄ
ASCII ×ÖÔª¡£(ÀýÈ磬0xdÊÇRETURN)
2. ÔÚÄãÖ¸¶¨´Ë¹¦ÄÜʱ¿É½áºÏÒ»¸öÒÔÉϵÄ×÷Óã¬ÔÚÉÏÀý£¬ÎÒÃÇÓõ½ string()
×÷ÓÃÁ½´Î£¬Èç¹ûÎÒÃÇÖªµÀÆäËüµÄ×÷Óã¬ÎÒÃÇÒ²Ò»Ñù¿ÉÒÔϵ½áÆðÀ´¡£
¶¨ÒåÐí¶àµÄתÒëÔÚÒ»Æð
Äã¿ÉÒÔ¸ù¾ÝÐèÇóÔÚÒ»¸ö±íÖж¨ÒåÐí¶àµÄתÒë¡£¼ÙÉ裬ÎÒÃÇÔÚÇ°ÃæµÄתÒëÖÐÔö¼Ó
ϵ½á£º
µ±ÎÒ°´ÏÂÕâ¸ö¼üʱ... ÎÒÏ£ÍûÕâ¸ö×Ö´®±»ÊäÈë
F2 lpq-Plpa3
¶Ô´ËµÄתÒëΪ£º
F2: string("lpq-Plpa3")string(0xd)
ËùÒÔ¿ÉÒÔ½«±¾ÁмÓÈëÇ°ÃæµÄ±íÖС£µ«ÊÇתÒë¹ÜÀíÆ÷µÄ¸ñʽ¹æÔò¸æËßÎÒÃDZØÐ轫
Á½¸öתÒëÒÔ "\n" ·Ö¿ªÇÒ¶ÀÁ¢³ÉΪһÁУº
xterm*VT100*Translations: #override(contd.)
F1: string("rm core *.tmp")sting(0xd) \n(cond.)
F2: string("lpq-Plpa3")string(0xd)
ÒÔÉϵÄÐÎʽ½«Ôì³É¹ÜÀíÉϵÄÀ§ÄÑ£¬Äã¿ÉÒÔ½åÖø°üº¬ "Òþ²ØµÄÐÂÁÐ×ÖÔª" À´Ê¹Ëü
¾ß¿É¶ÁÐÔһЩ£º (ÐÂÁÐ×ÖÔªÒÔµ¹Ð±Ïß "\"´¦Àí)
xterm*VT100*Translations: #override\n\
F1: string("rm core *.tmp")sting(0xd)\n\
F2: string("lpq-Plpa3")string(0xd)
Äã¿ÉÒÔ·ÅÖÃÈÎÒâ¶à¸öÄãËùÐèµÄ "Òþ²ØµÄÐÂÁÐ×ÖÔª" , ÇÒ¼¸ºõÔÚÈκεط½¾ù¿É£¬
ËüÃÇÖ»ÊDZ»ºöÂÔ¶øÒÑ¡£ (Ö»ÒªºÍתÒë¹ÜÀíÆ÷Ïà¹Ø£¬ÉõÖÁÄãÿ¸ôÒ»¸öµ¥×Ö±ãʹÓÃ
Ò»¸öҲû¹Øϵ¡£µ«Ç§Íò²»ÒªÔÚÒ»¸ö¹æ¸ñµÄ resource ÌØá粿·ÝʹÓÃËüÃÇ£¬ËüÃÇ
ÎÞ·¨±»resource manager½âÊÍ£¬Ò²Ã»ÓÐÏàͬµÄЧ¹û¡£) Èç¹ûÄã¸Ð¾õÓÐЩ»ìÏý£¬
²»Óõ£ÐÄ¡£¼òµ¥µØ˵£¬resource½á¹¹ÐèÒªµÄÊÇÒªÔÚÒ»ÁÐÖеÄÒ»¸öresource¹æ¸ñ
µÄ "Öµ" µÄ²¿·Ý£¬¶øתÒë¹ÜÀíÆ÷ÒÔ·Ö¿ªµÄÁÐÀ´·Ö¿ª (Ò²¾ÍÊÇÒÔ\nÖÕ½á)£¬¶øʹÓÃ
Õ߸պÃÒÔÿһ¸öʵ¼Ê·Ö¿ªµÄÁдú±íÒ»¸öÒâÒåÒÔÔö¼Ó¿É¶ÁÐÔ£¬ËùÒÔ¹æÔòºÜ¼òµ¥£º
ÔÚ³ýÁË×îááÒ»ÁеÄÿһ¸öתÒëÁоù¼ÓÉÏÒ»¸ö "\n\"¡£
17.1.2 תÒë¿Éϵ½áÐí¶àÐÍʽµÄ×÷ÓÃ
ÉÏÊöµÄ xterm¡õÀý£¬Õ¹Ê¾ÁËÈçºÎÄܹ»µ±Äã°´ÏÂÒ»¸ö¼üʱ£¬²åÈëÈÎÒâµÄ×Ö´®¡£µ«
תÒë½á¹¹µÄ¹¦ÄܱÈÕâ¸ü¶à -- Ëü¿ÉÒÔϵ½áÈκÎwidgetËùÌṩµÄ×÷Óõ½°´¼ü£¬ÈÃ
ÎÒÃÇÏêϸһµãµØ¿´Ò»ÏÂÕâЩ×÷Óá£
Ç°ÊöµÄÀý×Ó£¬ÎÒÃÇÔÚ xtermµÄ VT100 widgetÍê³ÉÁ˼üF1ºÍF2ÔÚ string()
ÉϵĶÔÓ¦¡£ÎÒÃǽ«ÈÔÒÔ xtermΪÀý£¬ËµÃ÷¸ü¶àµÄ×÷Óá£
²éÔÄxterm µÄÖ¸ÄÏÒ³£¬ÔÚ±êÌâKEY TRANSLATIONS ºÍ KEY/BUTTON BINDINGS
Ä㽫·¢ÏÖÁÐÓÐÊý¸ö×÷Óá£ÎÒÃǽ«¶¨ÒåÒ»¸öתÒë¶ÔÓ¦¼üF3µ½insert-selection()
×÷ÓÃÖ®ÉÏ£¬ËùÒÔÎÒÃÇ¿ÉÒÔÓüüÅÌÀ´È¡´ú»¬Ê󣬽«ÏÈÇ° "¼ô"ϵı¾ÎÄ "Ìù"³ö¡£
Ö¸ÄÏÒ³¸æËßÎÒÃÇ´Ë×÷ÓÃÐèÒªÒ»¸öÒýÊý£¬´ÓÁгöµÄÔ¤Éèϵ½á£¬ÎÒÃÇ¿ÉÒÔ¿´³öÔ¤Éè
µÄ "¼ôÌù" ½á¹¹ÎªÊ¹Óà CUT_BUFFER0, ËùÒÔÎÒÃǽ«CUT_BUFFER0µ±×÷ÒýÊý¡£ÎÒÃÇ
µÄresource¹æ¸ñÊÇ£º
xterm*VT100*Translations: #override\n\
F3: insert-selection(CUT_BUFFER0)
µ½Ä¿Ç°ÎªÖ¹£¬ÕâÖ»ÊÇÒ»µãССµÄ±ãÀû¡£È»¶ø£¬¼Ù¶¨ËµÄ㻨ÁËÐí¶àʱ¼äÔÚ±¾ÎÄÎÄ
¼þÉϹ¤×÷£¬ÄãÓà tbl¸ñʽ»¯£¬ÄãÓà nroffÔÚÓ©Ä»ÉÏÔ¤ÊÓ (preview)ËüÃÇ£¬ÓÃ
troff ÅŰ棬ÇÒ½«Êä³öË͵½ÄãµÄÒ»¸öÓùýÂËÆ÷ (filter) Ϊtr2printerµÄÓ¡±í
»úÉÏ¡£É趨תÒëΪ£º
xterm*VT100*Translations: #override\n\
F3: string("ed") insert-selection(CUT_BUFFER0)\
string(0xd)\n\
F4: string("tbl") insert-selection(CUT_BUFFER0)\
string("| nroff -man") string(0xd)\n\
F5: string("tbl") insert-selection(CUT_BUFFER0)\
string("| troff -man -t | tr2printer") string(0dx)
xterm »áÈ·¶¨ÕâЩתÒëÊÇÒÔxrdb×Ô×ÊÁÏ¿âÔØÈë»òÊÇÔÚÒ»¸öresourceµµ°¸ÖУ¬²¢
¼ÓÒÔ´¦Àí¡£ÏÖÔÚµ±ÄãÆôʼxterm£¬Óû¬Êó "¼ô"È¡ÄãËùÐèµÄ¹¤×÷µÄµµ°¸Ãû³Æ¡£½Ó
ÏÂÀ´£¬±ã¿É°´F3¼ü±à¼­Ëü£¬°´F4¼üÔ¤ÊÓËü£¬ºÍ°´F5¼üÔÚÓ²¿½±´ÉÏÅÅ°æËü¡£
¸ü¶àµÄwidget×÷ÓáõÀý -- xbiff
²éÔÄxbiff µÄÖ¸ÄÏÒ³£ºÔÚACTIONS µÄ±êÌâÏ£¬Ä㽫¿´µ½Mailbox widgetËùÖ§Ô®
×÷ÓõÄÃûµ¥¡£ËüΩһԤÉèµÄתÒëΪµ±Äã°´ÏÂÈκΰ´Å¥Ê±½µÏÂÐżþ (mail)µÄÆìÖÄ
(flag)(×÷ÓÃunset())¡£ÎÒÃǽ«É趨תÒëÈÃÄãÒÔ¼üÅÌÀ´ÔËÓÃÕâЩ×÷Ó㬽«ÕâЩ×÷
ÓöÔÓ¦µ½ "?" ºÍ "UP" "DOWN"Á½¸ö·½Ïò¼üÈçÏ£º
? check() ÓÐеÄÐżþÂð?
UP set() ÉýÆðÐżþµÄÆìÖÄ
DOWN unset() ½µÏÂÐżþµÄÆìÖÄ
ÒÔÏÂÊÇÏà¹ØµÄתÒë±í£º
xbiff*Mailbox*Translations: #override\n\
?: check()\n\
Down: unset()\n\
Up: set()
ÒԴ˲âÊÔÖ®£ºÓÃxrdb´ÓÄãµÄresource×ÊÁÏ¿âÔØÈëÕâЩÉ趨£¬È»ááÆô¶¯xbiff £¬
½«Ö¸±êÒƵ½ÊÓ´°ÄÚ¡£Öظ´µØ°´ÏÂUpºÍDownÓαê¿ØÖƼüÒÔÉýÆðºÍ½µÏÂÐżþÆì
ÖÄ¡£
ÕÒ³öÓÐÄÄЩ×÷Óñ»Ìṩ
Äã¶Ôwidget×÷Óý«ºÍwidgetÃû³ÆÔâÓöÏàͬµÄÎÊÌ⣺ÈçºÎÕÒ³öij¸öwidgetµ½µ×Ìá
¹©ÄÄЩ×÷ÓÃÒÔ¼°ËüÃÇÄÜ×öЩʲ÷᣿ͬÑùµØ£¬Ã»ÓÐÒ»¸öÍêÃÀµÄ½â´ð£¬µ«ÓÐÒ»¸öºÏ
ÀíµÄ·½·¨À´´¦Àí£º
1. ²é¿´Ó¦ÓóÌʽµÄÖ¸ÄÏÒ³¡£´ó¶àÊýµÄÓ¦ÓóÌʽÓÐËüÃÇ×Ô¼º×¨ÃŵÄ×÷ÓÃÎļþ
¡£ÀýÈ磺xbiff ÓÐÒ»½Ú½Ð×öACTION£¬¶øxterm ÓÐÁ½½Ú¹Øì¶×ªÒëºÍ×÷ÓõÄ
Îļþ -- KEY TRANSLATIONS ºÍ KEY/BUTTON BINDING¡£
2. ×î³õµÄÖ¸ÄÏÒ³¿ÉÄܸøÄãÌáʾ£¬»òÉõÖÁÖ±½Ó¸æËßÄãËüÓõ½ºÎÖÖwidgetµÄÀà
±ð£¬ËùÒÔÄã¿ÉÒԲ鿴ËüµÄwidget setÎļþÖеÄÌض¨µÄwidget¡£(ÔÚ core
°æÖÐΩһµÄwidget setΪAthena£¬ËùÒÔÄãÔڴ˲»Ò׳ö´í)¡£¼´Ê¹Ö¸ÄÏҳδ
¸æËßÄãwidgetµÄÀà±ð£¬µ±Äã¶ÔϵͳÊìϤ֮áᣬÄ㽫¶ÔÒ»¸öwidgetÊÇ·ñΪ
±ê×¼ÐÍ̬½Ï¾ßÓиÅÄÈç¹û»¹ÊDz»ÐÐ ...
3. ²é¿´³ÌʽµÄԭʼÂ룬¿´¿´Óõ½Ê²÷áwidgetµÄÀà±ð£¬ÒÔ¼°widgetÌṩÁËÄÄ
Щ×÷Óá£
17.1.3 תÒëϵ½á×÷Óõ½Ò»ÐòÁÐʼþ£¬²»Ö»Êǵ¥Ò»¼ü
ÎÒÃÇÒѾ­¿´µ½×ªÒëÈÃÄãÉ趨²åÈ룬תÒë½á¹¹Ò²ÄÜÈÃÄãϵ½áÕâЩ×÷ÓãºËü¿ÉÒÔÊÇ
µ¥Ò»µÄ¼ü£¬»òÊÇÒ»ÐòÁеļü£¬»òÕßÊÇÊÂʵÉÏÒ»ÐòÁÐÈκεģØʼþ¡£
ÈÃÎÒÃǼÌÐøÒÔxbiff ΪÀý£¬¿´¿´ÈçºÎתÒëÒ»ÐòÁеļüÅÌ×ÖÔª¡£ÀýÈçÎÒÃǶ¨
Òå×ÖÔª×Ö´®µÄתÒëÈçÏ£º
look check()
raise set()
lower unset()
ÒÔÏÂΪÏà¹ØµÄתÒë±í£º
xbiff*Mailbox*Translation: #override\n\
l,o,o,k: check()\n\
r,a,i,s,e: set()
l,o,w,e,r: unset()
ÒԴ˲âÊÔÖ® -- ÔØÈëÉ趨ºÍÆô¶¯xbiff £¬½«Ö¸±êÒƵ½ÊÓ´°ÄÚ¡£ÏÖÔÚÄã¿É½å
ÖøÊäÈëÍêÕûµÄ×Ö´®À´ÉýÆðºÍ½µÏÂÆìÖÄ¡£ÀýÈç¼üÈëÎå¸ö×ÖÔª r, a, i, s, eÒÔÉý
ÆðÆìÖÄ¡£¶Ôxbiff µÄÁ½¸ö±íÓм¸µãÖµµÃ˵Ã÷£º
. ¼üµÄÃû³Æ¿ÉÒÔÓò»Í¬µÄ·½Ê½Ö¸¶¨¡£Õý³£µÄÓ¡³ö×ÖÔªÖ±½ÓÖ¸¶¨ (Èç"w")
, ÆäËüµÄ×ÖÔªÔòÆ´³öÈ«Ãû(Èç"Down").¸½Â¼£Á "ÎļþÖ¸Òý" ¸æËßÄã
Ôںδ¦¿É²éµ½¼üµÄÃû³Æ£¬µ«ÔÚ±¾½ÚÏÂÃæÓиü¼òµ¥µÄ·½·¨¡£
. ¶Ô×ÖÔª×Ö´®£¬Äã±ØÐèÒ»Ò»Ö¸¶¨£¬²¢ÒÔ¶ºµã·Ö¿ª
(Èç"l,o,o,k").
. תÒë¿ÉÔÊÐíÏàͬ¿ªÍ·µÄ¼ü£¬ÀýÈç "look" ºÍ "lower" ¾ùÓµÓÐÏàͬµÄ¿ªÍ·
"lo"£¬¶ÔתÒë¹ÜÀíÆ÷²»»áÐγÉÎÊÌâ¡£
ÕÒ³ö¼üµÄÃû³Æ
ÕÒ³öתÒëËùÐèµÄ¼üµÄÃû³Æ£¬×î¼òµ¥µÄ·½·¨ÎªÖ´ÐÐxev £¬½«Ö¸±êÒƵ½ÊÓ´°ÄÚ£¬°´
ÏÂÄãËùÐèµÄ¼ü£¬Ôò¼üµÄÃû³Æ»á³öÏÖÔÚÀ¨»¡ÄÚ×Ö´®keysymºÍÒ»¸öÊ®Áù½øλÊýÖ®áá
¡£ÀýÈçÔÚxev µÄÊÓ´°ÄÚ°´ÏÂÓαê¿ØÖƼüDOWN£¬ËüµÄÊä³öÈçͼ17 - 1£¬ÔÚÆäÖÐÄã
»á¿´µ½
(keysym 0xff54, Down)
Ò²¾ÍÊÇ˵£¬¼üµÄÃû³ÆΪDown¡£
©°--------------------------------©´
©¦ P209. fig 17 - 1 ©¦
©¦ ©¦
©¦ ©¦
©¦ ©¦
©¦ ͼ 17 - 1 xev ÏÔʾ¼üÃû³ÆµÄÊä³ö ©¦
©¸--------------------------------©¼
Äã¿ÉÒÔÔÚתÒëÖÐʹÓÃÈκÎÐÍ̬µÄʼþ
µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃÇËùдµÄתÒ붼ÊÇϵ½á×÷Óõ½Ò»¸ö°´ÏµļüÅÌ×ÖÔª¡£µ«ÎÒÃÇÔø
˵¹ý£¬×ªÒë½á¹¹¿Éϵ½á×÷Óõ½ÈκÎʼþ£¬¶ø²»Ö»ì¶°´Ï¼üÅ̶øÒÑ¡£¿ÉÄܵÄʼþ
ÐÍ̬·Ç³£µÄ¶à£¬ÔÚ´ËÎÒÃÇÖ»ÌἰһС²¿·Ý£º
ÐÍ̬ ÒâÒå
°´ÏÂÒ»¸ö¼ü
°´ÏÂÒ»¸ö¼ü (Ö»ÊÇÁíÒ»¸öÃû³Æ)
·ÅËÉÒ»¸ö¼ü
°´ÏÂÒ»¸ö»¬Êó°´Å¥
·ÅËÉÒ»¸ö»¬Êó°´Å¥
Ö¸±ê½øÈëÊÓ´°ÄÚ
Ö¸±êÒƳöÊÓ´°Íâ
ÎÒÃÇÒѾ­Ê¹Óùý°´ÏÂÒ»¸ö¼üµÄʼþ£¬ÈÃÎÒÃÇϵ½áxbiff ×÷Óõ½»¬Êó°´Å¥ÒÔÈ¡´úÖ®£º
xbiff*Mailbox*Translations: #override\n\
Button1: unset()\n\
Button2: check()\n\
Button3: set()
Äã¿ÉÒÔ¿´µ½Óï·¨ºÍÇ°ÃæÏàËÆ£ºÄãÏȸø¶¨Ò»°ãÐÔµÄʼþÐÍ̬ (ÀýÈç »ò
)£¬Æäáá¸úÖøÄãËùÐèʼþµÄʼþϸ½Ú²¿·Ý (ÀýÈçs ºÍButton3) (
Button 1, 2, 3·Ö±ð¶ÔÓ¦µ½×ó¡¢ÖС¢ÓÒ°´Å¥)
¶ÔÒ»ÐòÁеÄʼþµÄתÒë
¾ÍÈçͬÎÒÃǶ¨ÒåÁËÒ»ÐòÁа´Ï¼üʼþµÄתÒë(set£¬unsetºÍcheck)£¬ÎÒÃǵ±È»
Ò²¿ÉÒÔ¶¨ÒåÒ»ÐòÁеĻ¬Êóʼþ¡£ÊÂʵÉÏÄãתÒëµÄÒ»ÐòÁеÄʼþ¿ÉÒÔÈÎÒâ×éºÏÔÚ
Ò»Æð£¬Äã¿ÉÒÔÔÚÒ»¸öתÒëµÄ×ó±ßËæÒâ»ìºÏʼþµÄÐÍ̬¡£ËùÒÔÄã¿ÉÒÔ¶¨ÒåÈçϵÄ
תÒë±í£º
xbiff*Mailbox*Translations: #override\n\
Button1, ?, Button3: check()\n\
Button1: u, Button3: unset()\n\
Button1: s, Button3: set()
Ò²¾ÍÊÇ˵£¬Óõ½check()£¬Äã±ØÐèÒÀÐòÏÈ°´Ï°´Å¥1 (×ó°´Å¥)£¬È»áá°´ÏÂ"?"
¼ü £¬×îáá°´Ï°´Å¥3 (ÓÒ°´Å¥)¡£ Õâ¸ö¡õÀý²¢²»ÊǺܺ㬵«¶Ôì¶Ò»Ð©Î£ÏÕ»ò²»
¿ÉÈ¡Ïû (irreversible) µÄ×÷Óà (ÀýÈçɾ³ýÒ»¸öµµ°¸£¬»òÊǸ²Ð´Ò»¸ö»º³åÇøµÄ
ÄÚÈÝ) £¬Äã¿ÉÒÔÒÀÕÕÕâÖÖ·½Ê½À´Ê¹ÓÃתÒë¡£ÄãÐèҪʹÓÃÒ»¸ö·Ç³£½÷É÷µÄÃüÁîÐò
ÁУ¬²ÅÄÜÓõ½´Ë×÷Óã¬ÕâÑùʹµÃʹÓÃÕß²»¿ÉÄÜÒòÒâÍâ¶øÊäÈë´ËÃüÁî¡£
ʹÓ÷ǼüÅ̺ͷǻ¬ÊóʼþµÄתÒë
ͨ³£ÄãÊǶ԰´Ï»ò·ÅËÉ»¬Êó°´Å¥»ò¼üÅ̵ļü¶¨ÒåתÒë¡£µ«ÎÒÃÇÔø¾­Ëµ¹ý£¬Äã¿É
ÒÔ¶ÔÈκÎʼþÉ趨תÒ룬ÀýÈçÖ¸±êÒÆÈë»òÒƳöÒ»¸öwidgetµÄÊÓ´°¡£ÈÃÎÒÃÇÒÔ
xmanµÄÖ÷Ñ¡ÏîÊÓ´° (ͼ10 - 3) Ϊ¡õÀýÀ´½âÊÍËü¡£ÕâÊÇÒ»¸öÏ൱ÈËΪµÄ¡õÀý£¬
ÒòΪËüûÓÐÈκÎÓÃ;¡£µ«ÎÞÂÛÈçºÎ£¬ËüºÜÈÝÒ×±»¿´³öÔÚ×öЩʲ÷á²Ù×÷¡£
²é¿´xmanµÄÖ¸ÄÏÒ³£¬ÔÚX DEFAULTS±êÌâÏ£¬Ä㽫¿´µ½¸ÅÀ¨µÄxmanËùÓõ½µÄwidget
µÄÃû³ÆºÍÀà±ð£ºÖ÷Ñ¡ÔñÏîÊÓ´°widgetµÄÃû³Æ½ÐtopBox£¬Àà±ðÃûΪCommand¡£Õâ
ÊÇÒ»¸öºÃµÄ²Â²â£¬ÒòΪÔÚÑ¡µ¥²Ù×÷ºÐµÄ·½·¨¡£ÎÒÃÇ¿ÉÓõڣ±£µÕÂËùÌá¹ýµÄ¼¼ÇÉ
À´È·ÈÏËü£¬Ê¹ÓÃÒÔϵÄÃüÁ
xman -xrm "*Command*backgroundPixmap: scales"
ÇÒËùÓеÄCommand widget½«»áÓÐÓãÁÛ×´µÄ±³¾°)¡£
ÕâºÍÎÒÃÇÏÈÇ°µÄ¡õÀýÓÐÒ»¸öÖØÒªµÄ²»Í¬£ºÎÒÃÇËùÓõ½µÄ×÷Óò»ÊÇÓÉÌض¨µÄÓ¦ÓÃ
³Ìʽָ¶¨£¬¶øÊÇÓɱê×¼µÄwidgetÌṩ (±¾ÀýÖÐΪCommand widget£¬ÔÚ "£Ø
Toolkit Athena Widget"ʹÓÃÊÖ²áÖÐÓÐÃèÊö)¡£
ÔÚÎÒÃǶ¨ÒåÈκζ«Î÷֮ǰ£¬ÏÈÀ´¿´Ò»¿´´ËwidgetÔ¤ÉèµÄ¹¦Óã¬ÒÔ±ãÎÒÃÇÄÜ
¹»Á˽âÓÐЩʲ÷áÊ·¢ÉúºÍÓÐÄÄЩwidgetµÄ×÷Óûá×ö¡£Æô¶¯xman£¬Òƶ¯Ö¸±ê½øÈë
Help ºÐ£¬Äã»á¿´µ½ºÐµÄÍâ¿ò±ä³É¸ßÁÁ¶È -- ÕâÊÇhighlight() ÔÚ×÷Ó᣽«Ö¸
±êÒƳö£¬ºÐµÄÍâ¿ò»Ö¸´Õý³£ -- ÕâÊÇunhighlight() ×÷Ó᣽«Ö¸±êÔÙ¶ÈÒÆÈë
Help ºÐ£¬°´ÏÂÒ»¸ö»¬Êó°´Å¥£¬±£³Ö°´×¡²»·Å¡£ÔòºÐÄÚµÄÉ«²Ê·´×ª (ºÐÄÚµÄÎÄ
×Ö±ä³ÉÔ¤ÉèµÄ±³¾°É«£¬¶øÔ­À´ÊÓ´°µÄ±³¾°±ä³ÉÊÓ´°µÄÇ°¾°É«)¡£-- ÕâÊÇset()
ÔÚ×÷Ó᣼ÌÐø±£³Ö°´×¡»¬Êó°´Å¥£¬½«Ö¸±êÒƳöÊÓ´°Í⣬ºÐÄÚÉ«²Ê»Ö¸´Õý³£ --
ÕâÊÇreset() ÔÚ×÷Óá£Ò»¸öÕý³£ "Åö´¥Ò»ÏÂ" (clicking on) HelpºÐµÄ´ÎÐòΪ£º
1. Òƶ¯Ö¸±ê½øÈëºÐÖУºhighlight()½«Íâ¿ò±äΪ¸ßÁÁ¶È¡£
2. °´Ï°´Å¥£ºset() ·´×ªºÐÖеÄÉ«²Ê¡£
3. ËÉ¿ª°´Å¥£ºnotify()¿ªÊ¼×÷Óã¬Ôì³É³Ìʽ½¨Á¢ÇóÖúÊÓ´°(help window)
¡£ÔÚ½øÐÐÖÐʱ£¬ºÐµÄÉ«²Ê±£³Ö·´Ïà¡£µ±ÊÓ´°½¨Á¢Íê³ÉÖ®áᣬreset()·´
תºÐÄÚµÄÉ«²ÊΪÕý³££¬µ«Íâ¿òÈÔ±£³Ö¸ßÁÁ¶È¡£
4. ½«Ö¸±êÒƳöÊÓ´°£ºunhighlight()½«Íâ¿ò»Ö¸´Õý³£¡£
ÏÖÔÚÄãÁ˽âÁËÓÐÄÄЩ×÷Óã¬ÎÒÃǽ«¶¨ÒåһЩתÒëÀ´¸Ä±äÔ­ÏȽø³öÊÓ´°µÄ×÷

*Command*translations: #override\n\
: reset()\n\
: set()
ÓÃÕâ¸öÆæ¹ÖµÄתÒë±í£¬µ±ÄãÒ»¿ªÊ¼Òƶ¯Ö¸±ê½øÈëºÐÖУ¬Ê²÷áÊÂÒ²²»»á·¢Éú£¬µ«
µ±ÄãÒƳöÖ¸±êʱ£¬É«²Ê»á·´×ª¡£Èç¹ûÄãÔÙ¶ÈÒƶ¯Ö¸±ê½øÈëºÐÖУ¬É«²Ê»á±ä»ØÕý
³£¡£ÆäËüµÄ×÷ÓúÍÇ°ÊöÏàͬ¡£
ʹÓÃÐÞÊμüÀ´ÐÞÊÎʼþ¹æ¸ñ
ÓÐʱÄãÖ¸¶¨µÄתÒëÏ£ÍûÄÜͬʱ°´ÏÂÒ»»ò¶à¸öÐÞÊμü (modifiers) £¬ÀýÈçÄãҪϵ
½áÒ»¸ö×÷Óõ½ºÍMETA¼üͬʱ°´ÏµÄÒ»¸ö¼ü£¬»òÊǵ±CTRLºÍSHIFT ͬʱ°´ÏµĻ¬
Êó°´Å¥¡£µ½Ä¿Ç°ÎªÖ¹ÎÒÃÇ»¹Ã»ÓÐÈκΰ취¿ÉÖ¸¶¨Èç´Ë¡£ÎÒÃDz»ÄÜÓÃʼþÐòÁдï
³ÉÕâµã£¬ÒòΪËüÊÇÒÀÐò¶¨ÒåµÄ£¬¶øÎÒÃÇÐèÒªµÄÊÇÖ¸¶¨Í¬Ê±£¬ÀýÈç "°´ÏÂX ¼üÇÒ
CTRL¼üͬʱ±»°´ÏÂ"¡£
ÓûÔÚתÒëÖÐÖ¸¶¨ÐÞÊμü£¬ÄãÖ»ÐèÔÚʼþÃû³Æ֮ǰ¼ÓÉÏÄãËùÐèµÄÐÞÊμüÃû¡£
ÀýÈçÔÚxterm ÖУ¬¶¨Òåmeta-iΪ "Ìù" ÉÏÒ»´Î "¼ô" µÄ±¾ÎÄ£¬Ê¹Óãº
*VT100*Translations: #override\
Meta i: insert-selection(PRIMARY, CUT_BUFFER0)
ÒòΪÕâÖÖÐÞÊμü£¯Ê¼þÐÍ̬µÄ×éºÏÊ®·Ö³£¼û£¬×ªÒë¹ÜÀíÆ÷ÔÊÐíʹÓÃÒ»ÖÖËõдµÄ
ÐÎʽ¡£ÏàµÈì¶ÉÏÃæµÚ¶þÁеÄд·¨Îª£º
i: insert-selection(PRIMARY, CUT_BUFFER0)
ÎÒÃÇ¿ÉÒÔ¶Ô»¬Êóʼþ×öͬÑùµÄ´¦Àí¡£ÈÃÎÒÃǶÔxedit ¶¨ÒåתÒ룬ʹµÃʹÓÃ
»¬Êó¿ÉÒÔÔÚ±¾ÎÄÉÏ·½±ãµØÒƶ¯£¬ÎÒÃÇÊ×Ïȵij¢ÊÔÈçÏ£º
*Text*Translation: #override\
Shift : forward-character()\n\
Shift : forward-word()\n\
Shift : next-line()\n\
Ctrl : backward-character()\n\
Ctrl : backward-word()\n\
Ctrl : previous-line()
Èç¹ûÄã²âÊÔËü£¬Ææ¹ÖµÄÏÖÏó»á·¢Éú -- ÓαêºÃÏñ»á×ÔÐÐÆäÊÇ£¬¶øÇÒ±¾ÎĵÄƬ¶Î
»áÒ»ÏÂ×Ó±»Ñ¡Ôñ£¬Ò»ÏÂ×ÓÓÖÈ¡ÏûÑ¡Ôñ¡£·¢ÉúÕâÖÖÏÖÏóµÄÔ­ÒòÊÇText widget µÄ
Ô¤Éèϵ½áÈÔÈ»»á×÷Óã¬Ëü°üº¬µÄתÒëÏñ£º
: extend-end(PRIMARY, CUT_BUFFER0)
Äã¿ÉÄÜÈÏΪÕâ²»»áÓ°ÏìÄ㣬ÒòΪµ±ÄãËÉ¿ª°´Å¥Ê±Äã×ÜÊÇ°´ÖøSHIFT ¼ü»òCTRL¼ü
¡£µ«ÊÂʵÉÏ»á×÷Óãº×ªÒë¹ÜÀíÆ÷¶Ôì¶Äã䶨ÒåµÄÐÞÊμü½âÊÍΪÄã²»ÔÚºõËüÃǵÄ
Ó°Ï죬ËùÒÔËÉ¿ªButton1 ʱ»á¶ÔÓ¦µ½ÉÏÊöµÄ¹æ¸ñ¡£ÎªÁË¿Ë·þÕâµã£¬ÎÒÃǶÔÄÇЩ
¿ÉÄܲ»Ð¡Ðıã»á·¢ÉúµÄ°´Å¥ËÉ¿ªÊ¼þ¶¨ÒåתÒ룬²¢Ïµ½áµ½Ò»¸ö¿Õ (null) ×÷ÓÃ
¡£ÕâЩתÒëµ±±»¶ÔÓ¦µ½Ê±»á¸ÇµôÔ¤ÉèµÄתÒë¡£¶ÔʹÓÃText widget ÎÒÃÇÐèÔÙÔö
¼ÓÁ½ÁУ¬²ÅÊÇÒ»¸öÍêÕûµÄתÒë±í£º
*Text*Translation: #override\
Shift : forward-character()\n\
Shift : forward-word()\n\
Shift : next-line()\n\
Ctrl : backward-character()\n\
Ctrl : backward-word()\n\
Ctrl : previous-line()\n\
Shift : do-nothing()\n\
Ctrl : do-nothing()
Õâ½âÊÍÁËÏÂÁм¸µã£º
£®ÎÒÃǶԻ¬ÊóʼþʹÓÃÁËËõдµÄÓï·¨£¬Ò²¾ÍÊÇÏÈÇ°µÄÓï·¨ÏñButton1
ÒÔÈ¡´ú¡£×ªÒë¹ÜÀíÆ÷ÈÝÐíһЩËõдµÄÓï·¨´æÔÚ¡£ (ÎÒÃÇÔÚÇ°
Ãæ¿´µ½µÄ Ò²ÊÇÒ»Àý)¡£
£®ÎÒÃÇÓà do-nothing() µ±×÷Ò»¸öÑÆ (dummy)×÷Ó㬾ͺÃÏñËüÊÇÁÐÔÚText
widgetµÄÎļþÖÐÒ»°ã¡£ÊÂʵÉÏÕâ¸ö×÷ÓÃÊDz»´æÔڵģ¬Òò´Ë»áµ¼Ö´íÎóµÄ
ѶϢ³öÏÖ£¬µ«ÒòΪÎÒÃDZ¾À´¾ÍÊÇÒªÓÃËüÀ´Ê²÷áÊÂÒ²²»×öµÄ£¬ËùÒÔÎÞÐè½é
Òâ¡£
£®¶Ôì¶ÎÒÃÇ·½²ÅÖ¸¶¨µÄÑÆ×÷Óã¬ÎÒÃÇÓÃÁËÒ»¸öʼþ ±ã´ú±íÁËÈý¸ö
°´Å¥¡£ÏàͬµØ£¬×ªÒë¹ÜÀíÆ÷°Ñ´ÓȱµÄÐÞÊιæ¸ñµÄ½âÊÍΪ "¶ÔÈκÎ"£¬ÔÚÒ»
¸öʼþÖÐȱÉÙϸ½Ú²¿·Ý (ÀýÈçÔÚ¹æ¸ñ"Button1"ÖÐ"Button1"µÄ²¿
·Ý) ½âÊÍΪ "¶ÔÈκÎËùÓеÄϸ½Ú²¿·Ý"¡£
ÕâµãÔÚתÒëÖÐÓÐÒ»¸ö·Ç³£³£ÓõÄÐÎʽΪ£º
: ...
ÒòΪȱÉÙϸ½Ú²¿·Ý£¬ËùÒԿɱ»ÓÃì¶ËùÓа´Ï¼ü (key-press)ʼþ£¬Ò²¾Í
ÊǶÔËùÓеļü¡£ÊÂʵÉÏÔÚText widget ÉÏÓÐÒ»¸öÔ¤ÉèµÄתÒëΪ£º
: insert-char()
insert-char()×÷ÓõŦÄÜΪµ±Ò»¸ö¼ü±»°´ÏÂʱ£¬²åÈëÏà¶ÔÓ¦µÄASCII×Ö
Ôª¡£
17.1.4 ¸´ºÏµÄתÒë±í¼°¡õÀý
µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃÇ°ÑËùÓеÄתÒë¾ùÓ¦ÓÃì¶ÕûÌåµÄwidgetÀà±ð¡£µ«ÄãÄܶԸö±ðµÄ
widgetÖ¸¶¨×ªÒ룬¾ÍÈçͬresourceÒ»°ã¡£ÔÚ´ËÎÒÃǽ«¶Ôxman¶¨Òå¸ü¶àµÄתÒë¡£
ÎÒÃǽ«¶ÔHelpºÐwidget (¶ÔÓ¦×÷Óõ½ÖúÒä(mnemonic)×ÖÔª)Ö»Óõ½¼üÅÌʼþ£¬¶Ô
QuitºÐÖ»Óõ½ÊÓ´°Ê¼þ¡£ÎªÁË´ïµ½´Ëµã£¬ÎÒÃǽ«¶ÔתÒëÓ¦Óõ½µÄwidget ¸øÓèÃ÷
È·µÄÃû³Æ¡£ÎÒÃǵÄתÒë±íÈçÏ£º
*Help*translations: \
h: highlight()\n\
u: unhighlight()\n\
n: notify()\n\
s: set()\n\
r: reset()\n\
LineFeed: set() notify()
Quit*translations: #override\n\
: reset()\n\
: set()
Óм¸µãÌرðµÄÓï·¨ÐèҪעÒ⣺
£®ÔÚ´ËÎÒÃǶÔÏàͬÀà±ðÖв»Í¬µÄwidgetÖ¸¶¨²»Í¬µÄתÒ룬ËùÒÔÎÒÃÇÐèÒªÖª
µÀ³ÉÔ± (instance) Ãû³Æ¡£²»ÐÒµÄÊÇ£¬ÕâЩ³ÉÔ±Ãû³Æ (Help£¬Quit£¬
Manual Page)²¢²»Ã÷ÏÔ¡£Èç¹ûËüÃÇÔÚÎļþÖÐÕÒ²»µ½ (±¾Àý¼´ÕÒ²»µ½)£¬ÄÇ
ÄãÖ»ÄÜÓòµĻòÊÇÈ¥²é¿´Ô­Ê¼³ÌʽÁË¡£
£®¶Ôì¶Help£¬ÎÒÃÇÊ¡ÂÔÁ˳£ÓõÄ#override£¬ÒòΪÎÒÃǶԴËwidget²»ÐèÒª¿¼
ÂÇÈκÎÔ¤ÉèµÄϵ½á¡£ÌرðµÄÊÇ£¬µ±Ö¸±ê½øÈëÊÓ´°Ê±£¬ÎÒÃDz»Òª´Ëwidget
³ÊÏÖ¸ßÁÁ¶È£¬Èç´ËÎÒÃDzÅÄÜ¿´³öÕâ¸öתÒëµÄЧÓá£
£®ÓÉì¶Ê¡ÂÔ #override£¬ÎÒÃǽ«Õâ¸öתÒë¹æ¸ñÒÆÖÁµÚÒ»ÁС£(Èç¹û²»Õâ÷á×÷
£¬¶øÇÒ¶ÔµÚÒ»ÁÐÈÔÒÔ\n\ ×÷½áÊø£¬ÎÒÃǽ«µÃµ½´íÎó£º
X Toolkit Warning: translation table syntax er-
ror: Missing ':' after event sequence.
X Toolkit Warning: ... found while parsing ''
ÒòΪ\nÊÇÓÃÀ´Çø¸ôתÒë¹æ¸ñ»òÀàËÆÏñ #override Ö¸ÁîµÄ)¡£¶ø½«´ËÁкÍ
µÚÒ»¸ö¹æ¸ñÒÔÒþ²ØµÄÐÂÁÐ×ÖÔªÇø¸ô£¬¾ÍÈçͬ£º
*Help*translations: \
h: highlight()\n\
...
£®¶ÔLineFeedÄÇÒ»ÁеÄתÒ룬°üº¬Á˸´ºÏµÄ×÷Ó㬺ÍÇ°Ãæxterm Öи´ºÏµÄ
string()×÷ÓÃÀàËÆ¡£
ÎÒÃÇÒÑ´óÖº­¸ÇÁËÄãËù³£ÓõÄתÒë¡£»ù±¾µÄ¸ÅÄîºÜ¼òµ¥£¬Éú³ÉËüÃǵĽṹ
Ò²²»¸´ÔÓ£¬µ«ËüÃǷdz£µÄÁîÈËÃÔ»ó¡£Ô­ÒòÊÇËüÊÇÒ»¸ö·¢Õ¹ÖеÄôéͳ£¬ËæÖø·¢ÐÐ
°æ±¾Ëù¸½µÄÎļþ²¢²»ÊǺܶࡣÏÂÒ»½ÚÖظ´±¾½ÚËùÊöµÄ£¬±¾½Ú¾ùÒÔÀý×ÓÀ´½éÉܹÛ
ÄÏÂÒ»½ÚÎÒÃǽ«¶ÔתÒëµÄ¹æÔò£¬×÷±È½ÏÕýʽµÄÃèÊö¡£
17.2 תÒë -- ¸ñʽºÍ¹æÔò
תÒëÊÇÒ»¸öÓÉToolkit ÌṩµÄÒ»°ãÐԽṹ£¬ËüÈÃʹÓÃÕßÖ¸¶¨µ±Ä³Ð©Ìض¨µÄʼþ
ÓÉwidget½ÓÊÕµ½Ê±£¬Ò»¸öwidgetÓ¦Íê³ÉºÎÖÖ×÷Óá£Toolkit Öд¦ÀíתÒëµÄ²¿·Ý
±»³Æ֮ΪתÒë¹ÜÀíÆ÷¡£
תÒëÓÉwidgetÖ¸¶¨£¬ËüµÄÈ·ÊÇÒ»¸öwidgetµÄÿһ¸ö³ÉÔ±¡£Ò»¸öתÒëµÄ¼¯ºÏ
³Æ֮Ϊһ¸öתÒë±í£¬¶øÕâ¸ö±í½åÖø±ê×¼µÄresource½á¹¹´«µÝ¸øÓ¦ÓóÌʽ¡£widget
(¶ÔתÒë¶øÑÔÒâζÉ) »áÓÐÒ»¸öTranslation Àà±ðµÄresourceÊôÐÔ£¬Í¨³£µÄ
³ÉÔ±Ãû³ÆΪtranslation¡£Õâ¸öתÒëresourceÆÚ´ýµÄÒ»¸öÖµ¼´ÎªÒ»¸öתÒë±í¡£¾Í
ÏñËùÓÐÆäËüµÄresourceÒ»°ã£¬Äã¿ÉÒÔÔÚͬһ¸öÓ¦ÓóÌʽ¶Ô²»Í¬µÄwidgetÖ¸¶¨²»Í¬
µÄresource£¬¶øÇÒÄãÄÜÒÔÀà±ðÃû³Æ»ò³ÉÔ±Ãû³Æ»ò¶þÕß»ìºÏÀ´Ö¸¶¨ËüÃÇ¡£
ÿһ¸öwidget¶¨ÒåÁËËüËùÌṩµÄ×÷Ó㬲»ÂÛÊÇÔÚÊýÁ¿»òÐÍ̬ÉÏ£¬ËüÃǶ¼ÊÇ
¼«¸»±ä»¯µÄ¡£
תÒë¿É±»¸÷ÖÖ²»Í¬ÐÍ̬µÄʼþÖ¸¶¨£¬²»½öֻ춼üÅ̺ͻ¬Êóʼþ¶øÒÑ¡£ÈκÎ
ÐòÁеÄʼþ¾ùÄܱ»´¦Àí£¬¾ÍÈçͬµ¥Ò»Ê¼þÒ»°ã¡£
תÒëºÍתÒë±íÔÚ " X Toolkit Intrinsics " ʹÓÃÊֲḽ¼£ÂÒ»½ÚÖУ¬ÓÐ
¼ò½àµØÃèÊö¡£Ëü²»ÊdzõѧÕ߲鿴תÒëµÄºÃµØ·½£¬µ«Ëüº¬ÓÐÍêÕûµÄʼþÐÍ̬¡¢ÐÞ
ÊÎÃû³ÆµÈµÈµÄ±íÁУ¬Ôڴ˲»ÔÙ׸Êö¡£
17.2.1 תÒë±íµÄ¸ñʽ
Ò»¸öתÒë±í´óÌåÉϵĸñʽÈçÏ£º
[optional-directive\n] list-of-translations
ÿһ¸ö list-of-translations ÓÉÒ»»ò¶à¸öתÒë×é³É£¬¸ñʽÈçÏ£º
event-sequence : list-of-actions
µ±event-sequence·¢Éúʱ£¬¹æ¸ñÖеÄlist-of-actions »áÓÉwidgetËùÍê³É¡£Èç
¹ûÔÚÒ»¸ö±íÖУ¬Óжàì¶Ò»¸öµÄתÒ룬ÿһ¸öÐèÒÔ "\n" Çø¸ô¿ª¡£
ÎÒÃÇÊ×ÏÈÀ´¿´Ò»ÏÂÑ¡ÏîµÄÖ¸ÁȻáá¿´Ò»ÏÂlist-of-translationsµÄϸ½Ú
²¿·Ý¡£
17.2.2 תÒëÖ¸Òý -- #override µÈµÈ
Ñ¡ÏîÖ¸Òý (directive) ¸æËßתÒë¹ÜÀíÆ÷£¬ËüÓ¦¶ÔÈκÎÒÑÉ趨֮Ïà¹ØwidgetÔÚ´Ë
תÒ뼯ºÏÖÐÓ¦ÈçºÎ´¦Àí¡£
#replace : Çå³ýËùÓÐÏÖ´æµÄ¶ÔÓ¦£¬Ö»²ÉÓÃÔÚתÒë±íÖÐËùº¬Óеġ£(ֻʹÓÃÐÂ
µÄ)¡£
#override : Ç¿ÖÆÁôÏÂÏÖÓеĶÔÓ¦£¬¼ÓÈëתÒë±íÖС£Èç¹ûÔÚ±íÖÐÓÐÈκÎÏî
Ä¿É趨£¬¾ÉÓеļ´±»¸²Ð´¡£Ò²¾ÍÊÇ˵£¬¾ÉÓеı»ÐÂÓеÄÈ¡´ú¡£ (½áºÏ
¾ÉÓеĺÍеģ¬µ«ÐµıȽÏÖØÒª)¡£
#augment : Ç¿ÖÆÁôÏÂÏÖÓеĶÔÓ¦£¬¼ÓÈëתÒë±íÖС£Èç¹ûÔÚ±íÖÐÓÐÈκÎÏî
Ä¿É趨ÔÚÏÖÓеÄÉ趨´æÔÚ£¬Ê¹ÓþɵĶøºöÂÔеġ£ (½áºÏ¾ÉÓеĺÍеÄ
£¬µ«¾ÉµÄ±È½ÏÖØÒª)¡£
Èç¹ûδÉ趨ָÒý£¬Ô¤ÉèΪ #replace ¡£
17.2.3 ¸ö±ðµÄתÒë¹æ¸ñ¸ñʽ
ÿһ¸öתÒëµÄ¸ñʽΪ£º
event-sequence : list-of-actions
ÈÃÎÒÃÇÀ´¿´Ò»¿´´Ë¹æ¸ñµÄÁ½¸ö²¿·Ý¡£
ʼþºÍʼþÐòÁÐ(event-sequence)µÄ¸ñʽ
Ò»¸öʼþÐòÁаüº¬Ò»»ò¶à¸öʼþ¹æ¸ñ(event-specs), Æä¸ñʽΪ£º
[modifiers] [repeat-count] [detail]
³ýÁËʼþÐÍ̬(event type)Í⣬¾ùΪ¿ÉÑ¡Ôñ¡£(<>ÖÐΪ±ØÐè)¡£
modifiers : ÕâÊÇ»ù±¾Éè¼ÆÖбȽϾ«ÇɵIJ¿·Ý£¬ÎÒÃÇÔÚÏÂÒ»¶Î˵Ã÷¡£
event-type : Ö¸¶¨ÎÒÃÇÓÐÐËȤµÄʼþµÄÐÍ̬£¬ÀýÈç°´¼ü()¡¢
ËÉ¿ª°´Å¥()»òÖ¸±êÀ뿪ÊÓ´°()µÈµÈ¡£
detail : Ö¸¶¨ÎÒÃÇÓÐÐËȤµÄÌض¨ÐÍ̬¡£Èç¹ûÄãÊ¡ÂÔϸ½ÚÀ¸(detail field
)£¬Ê¼þ¹æ¸ñ½«¶ÔÓ¦µ½ÈκÎdetail£¬Èç´Ë£¬½«¶ÔÓ¦µ½ËùÓеİ´¼ü
ʼþ¡£´Ë¸ñʽָ¶¨µ½Ã¿Ò»¸öʼþÐÍ̬¡£¶ÔÖ¸¶¨Ê¼þÐÍ̬µÄϸ½ÚÀ¸Îª£º
£®¶Ô¡¢ºÍʼþ£¬Ï¸½ÚÈç¹û²»ÊǼüµÄÃû³Æ(ÀýÈç
"s")£¬±ãÊÇ keysym (keysymÊÇ°´¼üÒÔ¿ªÍ·Îª"0x"µÄÊ®Áù½øλ
Êý±íʾ£¬½«ì¶ÏÂÒ»ÕÂÏêϸ½âÊÍ)¡£
£®¶Ô춰´Å¥Ê¼þ£¬Ï¸½Ú¾ÍÊÇ°´Å¥µÄÃû³Æ£¬Ò²¾ÍÊÇ Button1 ... Button5
ÖеÄÒ»¸ö¡£ÀýÈçÎÒÃÇÏÈǰʹÓùýµÄ"Button1"¡£
ÐÍ̬/ϸ½ÚµÄËõд£º³£ÓÃì¶×ªÒë¹ÜÀíÆ÷µÄһЩʼþÐÍ̬ºÍϸ½ÚµÄ×éºÏ£¬ÔÊÐí
Äã¶ÔËüÃÇʹÓÃËõд£º
Ëõд ÏàµÈµÄÈ«Ãû
Button1
...
Button5
Button1
...
Button5
repeat-count : ÕâÖ¸¶¨ÁËʼþÐèÒªµÄ´ÎÊý¡£Èç¹û±»Ö¸¶¨£¬ËüÃDZ»°üº¬ÔÚ
À¨»¡Ö®ÖС£ÀýÈ磺
(2)
Ö¸¶¨Ðè¶ÔÒ»ºÅ°´Å¥(button-1)Åö´¥Á½´Î¡£Èç¹ûÄãÔÚááÃæÔÙ¼ÓÉϼӺÅ(+)
£¬ÆäÒâΪÅö´¥µÄÊýÄ¿Ðè´ó춻òµÈì¶Ö¸¶¨¡£ÀýÈ磺
(3+)
ÒâΪÐèÅö´¥Èý»ò¸ü¶à´Î¡£Ô¤ÉèµÄÖظ´´ÎÊýΪһ´Î¡£
Ò»¸öʼþÐòÁÐÒÔÒ»»ò¶à¸öʼþ¹æ¸ñ×é³É£¬ÒÔ¶ºµã·Ö¿ª¡£µ±Õâ¸öʼþµÄÐòÁÐ
ÔÚÆäwidget·¢Éúʱ£¬Ïà¹ØµÄ×÷Óñã»áÔË×÷¡£
µ±ÐòÁз¢Éúʱ£¬×ªÒë¹ÜÀíÆ÷»á¸ù¾ÝһЩ¹æÔò¾ö¶¨Ëü×Ô¼ºÊÇ·ñ±»Âú×ã¡£ÎÒÃÇ
ÓÃÒ»¸öÀý×ÓÒÔ±ã×ÐϸµØ¹Û²ì£¬¼ÙÉèÄã¶ÔÁ½¸ö×ÖÔªÐòÁÐset ºÍunset¶¨ÒåÁËתÒ룺
£®¸ÅÂÔµØ˵£¬Èç¹û¸ö±ðµÄʼþÒÀÐò·¢Éú£¬×ªÒë¹ÜÀíÆ÷»á±»Âú×㣬ÆäËüµÄÊÂ
¼þ (ÄÇЩÄãδָ¶¨µÄʼþ) Èç¹ûÔÚÖ¸¶¨µÄÐòÁÐÖм䷢Éú£¬²»»á·Á°­ÐòÁÐ
±»Âú×ã¡£ÀýÈ磬set ¿É±»sweat ºÍserpent ¶ÔÓ¦¡£
£®Èç¹û½éì¶Æä¼äµÄδָ¶¨Ê¼þ£¬Æô¶¯ÁËתÒë±íÖеÄÁíÒ»¸öʼþÐòÁУ¬×ªÒë
¹ÜÀíÆ÷»á·ÅÆúÔ­ÏȵÄÐòÁУ¬¶ø³¢ÊÔÖøÈ¥Âú×ãеÄÐòÁС£ÀýÈ磬set ²»»á
±»sauerkraut¶ÔÓ¦£¬ÒòΪu »áʹµÃתÒë¹ÜÀíÆ÷¶ÔÓ¦µ½unset¡£
£®Èç¹ûÔÚÒ»¸öʼþµÄ¼¯ºÏÖÐÓг¬¹ýÒ»¸öµÄʼþÐòÁз¢Éú£¬×ªÒë¹ÜÀíÆ÷Ö»»á
Ó¦Óõ½Ò»¸öתÒ룺
- Èç¹ûÒ»¸öÐòÁжÔÓ¦µ½½áÊø (ÓÒ¶Ë)£¬½Ï¶ÌµÄÄǸöÐòÁÐÖ»ÓÐÔÚ²»°üº¬ì¶
½Ï³¤µÄÐòÁвŻᷢÉú¡£ËùÒÔÈç¹ûunset ±»¶ÔÓ¦µ½£¬¶Ôset תÒ뽫²»»á
×÷Óá£
- Èç¹ûÒ»¸öÐòÁÐÊÇÔÚÁíÒ»¸öÐòÁеÄÖм䷢Éú£¬ÀýÈ磬Èç¹ûÄ㶨ÒåÐòÁÐ
atºÍrate£¬Ôò½Ï³¤µÄÄǸöÓÀÔ¶²»»á±»¶ÔÓ¦µ½¡£
ʼþÐÞÊμü
ÐÞÊμü (modifiers)ÊÇһЩ¼ü»ò°´Å¥£¬ÏµÖ¸µ±Ö÷Ҫʼþ·¢Éúʱ£¬ÄÇЩ±ØÐè±»°´
ϲŻáÈÃתÒë¹ÜÀíÆ÷Âú×ãµÄ¼ü»ò°´Å¥¡£Äã¿ÉÒÔ¶Ô¼ü¡¢°´Å¥¡¢Òƶ¯¡¢½ø³öÊÓ´°µÈ
ʼþÖ¸¶¨ÐÞÊμü¡£³£¼ûµÄÐÞÊμüΪ£º
Button1 ... Button5
Ctrl Shift Meta
Lock
Èç¹ûÄãδָ¶¨ÈκεÄÐÞÊμü£¬×ªÒë¹ÜÀíÆ÷»á½âÊÍΪ£º "µ±Ê¼þ·¢Éúʱ£¬²»
ÂÛÐÞÊμüÊÇ·ñ±»°´Ï£¬¾ù»á±»½ÓÊÜ"¡£ÀýÈ磬»á±»Âú×㣬²»ÂÛµ±Ê±
SHIFT »òMETA¼üÊÇ·ñÓб»°´Ï¡£
Èç¹ûÄãÕæµÄÐèÒªÖ¸¶¨ "Ö»ÓÐÔÚûÓÐÐÞÊμü±»°´ÏÂʱ²Å½ÓÊÜ´Ëʼþ"¡£ÔòÐèʹ
ÓÃÐéÄâÐÞÊμü (pseudo-modifier) None¡£ÀýÈ磬None »áʹµÃµ±°´
Å¥°´ÏÂʱÈôMETA¼üÒ²±»°´ÏÂÔò²»»áÂú×ã¡£
¶ÔÒ»¸öʼþÖ¸¶¨Ò»Ð©ÐÞÊμüÒâΪ "Ö»Òª·ûºÏתÒëÖÐÖ¸¶¨µÄÐÞÊμü£¬ÆäËüµÄ
ÐÞÊμü²»Ðè½éÒâ"¡£Ëü²¢Ã»ÓÐ "Ò»¶¨ÒªÍêÈ«Ç¡ºÃ·ûºÏ²Å¿ÉÒÔ"µÄÒâ˼¡£ÀýÈ磬
Ctrl a ÔÚÄã°´Ï meta-ctl-shift-a ʱÈԻᱻÂú×ã¡£
Èç¹ûÄãÕæµÄÒªÖ¸¶¨ "Ö»Óиպ÷ûºÏÐÞÊμüµÄ²ÅÒª"£¬ÔÚÐÞÊμü֮ǰ¼ÓÒ»¸ö¾ª
̾ºÅ (!)¡£ÀýÈ磬!Ctrl a ÔÚÄã°´Ï meta-ctl-shift-a ʱ²»»á±»Âú×ã¡£
¶ÔÒ»¸öÐÞÊμüµÄ¼¯ºÏ (¿ÉÄÜÊÇ¿Õ¼¯ºÏ) ×÷ÏÞÖÆ£¬ÒâΪ "³ýÁËÕâЩÐÞÊμü²»
²»½ÓÊÜ"£¬ÐèÒªÔÚ²»½ÓÊܵÄÐÞÊμü֮ǰ¼ÓÒ»¸ö(~)ºÅ¡£ÀýÈ磬Shift~Meta t
»á±»ctl-shift-tÂú×㣬²»»á±»meta-shift-tÂú×ã¡£
¼üʼþͨ³£ºöÂÔ´óСд£¬Èç¹ûÄãÒªÇø·Ö£¬ÐèÔÚ֮ǰ¼ÓÒ»¸öðºÅ(:)¡£ÀýÈ磬
²»ÂÛ H»ò h¾ù¿É·ûºÏH£¬µ«Ö»ÓÐH ²Å·ûºÏ :H¡£
¾ÍÈçͬ¶Ô³£ÓõÄʼþÐÍ̬/ϸ½ÚÅä¶ÔÓÐËõдһ°ã£¬×ªÒë¹ÜÀíÆ÷¶Ô³£ÓõÄÐÞ
Êμü/ʼþÐÍ̬Åä¶ÔͬÑùµØÌṩËõд£º
Ëõд ÏàµÈµÄÈ«Ãû
Ctrl
Shift
Meta
Button1
...
Button5
Èκΰ´Å¥µÄ
×÷ÓõĸñʽºÍ×÷ÓõıíÁÐ
ÿһ¸öתÒëÔÚÒ»»ò¶à¸ö×÷ÓÃÖ®ÉÏϵ½áÒ»¸öÐòÁеÄÒ»»ò¶à¸öʼþ¡£ÔÚ±íÁÐÖеĸö
±ð×÷ÓÃÊÇÒÔ¿Õ°×·Ö¿ªµÄ¡£ (²»¿ÉÓöºµã·Ö¿ª£¬Äǽ«»áµ¼Ö´íÎó)¡£
¸ö±ðµÄ×÷ÓøñʽÈçÏ£º
action-name(parameters)
¼´Ê¹Ã»ÓвÎÊý±»Ö¸¶¨£¬ÔÚ×÷ÓÃÃû³Æ (action-name)ááµÄÀ¨»¡£¬ÈÔÈ»²»¿ÉÊ¡ÂÔ¡£
ÀýÈ磺
start-selection()
Èç¹ûÔÚ×÷ÓÃÃû³ÆºÍ×óÀ¨»¡ÖмäÁôÓпհף¬Ä㽫»áµÃµ½Ò»¸ö´íÎó¡£
×÷ÓÃÃû³ÆÖ»°üº¬ÁË×Öĸ¡¢Êý×Ö¡¢Ç®ºÅ($)¡¢µ×Ïß(_)ËÄÖÖ×ÖÔª¡£Ã¿Ò»¸öwidget
ÌṩËü×Ô¼ºµÄ×÷Óü¯ºÏ (Èç¹ûÓеĻ°) £¬ÇÒ×ÔÎÒ°üº¬ÕâЩ×÷ÓÃÃû³ÆµÄÓ²Âë
(hard-coded)±íÁС£
²ÎÊý(parameters)ÊÇÒ»¸öÁãµ½¶à¸ö×ÖÔª×Ö´®µÄ±íÁУ¬ÖмäÒÔ¶ºµã·Ö¿ª¡£²Î
ÊýµÄÒâÒåΪ¶ÔÌض¨µÄ×÷ÓÃ×÷Ö¸¶¨ (ÊÂʵÉÏ´ó¶àÊýµÄ×÷Óò¢Ã»ÓÐÈκβÎÊý) ¡£²Î
Êý×Ö´®¿ÉÒÔ²»¼ÓÒýºÅ£¬ÀýÈ磺
insert-selection(PRIMARY)
»òÕßÇ°áá¼ÓÉÏË«ÒýºÅ£¬ÕâÖÖÇéÐÎͨ³£Îª²ÎÊý×Ö´®ÄÚ°üº¬ÁË¿Õ°×»òÒ»¸ö¶ºµã£¬Àý
È磺
string("plot")
ûÓÐÒ»¸öÒ»°ãÐԵķ½·¨£¬ÈÃÄãÔÚ²ÎÊý×Ö´®ÖеÄÈκÎλÖðüº¬Ò»¸öË«ÒýºÅ£¬ËäÈ»
ÏñÕâÑù string(ab"cd)'½«Ë«ÒýºÅ·ÅÔÚ×Ö´®ÖмäÊǿɱ»´¦ÀíµÄ¡£Ò²Ã»ÓÐÒ»°ãÐÔµÄ
·½·¨ÔÚͬһ¸ö²ÎÊý×Ö´®ÖÐͬʱ°üº¬×Ö´®ºÍË«ÒýºÅ¡£ÒòΪÈç´Ë£¬ÓÐЩwidgetÔÚ½â
ÊÍËüÃÇ×Ô¼ºµÄ²ÎÊýʱ£¬¿ÉÒÔ×ÔÐмÓÈëËüÃÇ×Ô¼ºµÄÓï·¨¹æÔò¡£ÀýÈ磺¶Ôxterm µÄ
VT100 widgetµÄ string()×÷Óã¬Èç¹ûÒ»¸ö²»´øË«ÒýºÅÇÒ¿ªÍ·Îª "0x"µÄ×Ö´®£¬
´Ë×Ö´®±»½âÊÍΪ´ú±íÒ»¸öASCII ×ÖÔªµÄÊ®Áù½øλÊý¡£
Ôڴ˽áÊøÎÒÃǶÔתÒë¹æ¸ñ¼°¸ñʽµÄÃèÊö¡£ÓÉ´Ë£¬ÄãÓ¦ÓÐÄÜÁ¦Á˽âÔÚ²»Í¬£Ø
ÊÖ²áÁгöµÄתÒ룬ÇÒ¿ÉдÄã×Ô¼ºµÄתÒ롣ΪÁË°ïÖúÄ㣬ϽÚÁгöÄã³£¼ûµÄÎÊÌâ
£¬ÒÔ¼°ÈçºÎ¿Ë·þËüÃÇ¡£
17.3 ÔÚתÒë¹æ¸ñÖг£¼ûµÄÎÊÌâ
תÒëÔÚ¹ÛÄîÉϼòµ¥£¬µ«Êµ¼ÊÉϺܻìÂÒ¡£¼´Ê¹Äã³£³£Ê¹Óã¬Óï·¨ÈÔÈ»¸´ÔÓ¶øÄѽ⡣
ÎÞÂÛÈçºÎ£¬Èç¹ûÄãÊdzõѧÕߣ¬×îºÃµÄ·½Ê½ÊÇÄãÒÔ±ðÈ˵ÄתÒëµ±×÷×Ô¼ºµÄתÒëµÄ
»ù´¡¡£ÔÚÖ¸ÄÏÒ³ÖÐÓм¸¸ö¶Ôxbiff¡¢xdm(Ä¿Ç°ÉÐδ½éÉܹý£¬½«ì¶µÚ£²£°Õ½éÉÜ
)¡¢xterm µÄתÒë¡õÀý£¬½«¶ÔÄãÓÐËù°ïÖú¡£
Èç¹ûÄã·¢ÏÖÄãµÄתÒëÓдíÎóµÄ»°£¬Óм¸µãÖµµÃÈ¥¼ì²é£º
£®×ªÒëÖ»ÄÜÓ¦ÓÃÔÚʹÓÃToolkitµÄ³ÌʽÉÏ¡£Èç¹ûÄãÊÔͼ¶Ô·ÇToolkitÓ¦ÓóÌ
ʽ¶¨ÒåתÒ룬¿´ÆðÀ´²»»áÓÐÈκÎÎÊÌ⣬ֻÊÇתÒë²»»á×÷ÓöøÒÑ¡£
ÈÃÎÒÃÇÀ´¿´Ò»ÏÂΪʲ÷ᣬÒÔ¶Ôxcalc (ÕâÊÇÒ»¸ö·ÇToolkit³Ìʽ)ʹÓÃתÒë
ΪÀý¡£Äã¶ÔÒ»¸öresourceÃû³ÆÏñ *xcalc*translations¶¨ÒåÒ»¸öתÒë±í£¬
ÇÒÓÃxrdbÔØÈëÖÁÄãµÄ×ÊÁÏ¿â¡£xrdb²¢²»»á±§Ô¹£¬ÒòΪËü²»ÖªµÀÊÇÄÇÒ»¸ö
Ó¦ÓóÌʽʹÓõ½resource£¬ËüÖ»»áÉ趨×ÊÁϿ⣬ÉÔáṩResource Manager
²éѯ¡£ÏÖÔÚÄãÖ´ÐÐxcalc £¬Ëü¶ÔתÒëÊÇÒ»ÎÞËùÖª£¬ËùÒÔ²»»áÏò×ÊÁÏ¿â²é
ѯתÒ룬µ±È»Ò²¾ø²»»á±àÒëËüÃÇÁË¡£
£®²»ÒªÊ¡ÂÔ #override£¬³ý·ÇÄãȷʵ֪µÀÄãÒª×öʲ÷á¡£Èç¹ûÄãÒò´íÎóÊ¡ÂÔ
Ëü£¬ÀýÈçÔÚxedit ÖУ¬Ä㽫·¢ÏÖûÓÐÈκεļü¿ÉÊäÈëÈκεĶ«Î÷ (ÒòΪ
Ô¤ÉèµÄתÒë ":insert-char()"±»È¥µôÁË)¡£
£®¼ì²éÄã¶ÔÿһÁоùÓÐÖսᡣÈç¹ûÄãÔÚתÒë±íÖеÄÒ»ÁкöÂÔÁË"\n\"»ò"\n"
£¬ÔÚÆäááËùÓеÄתÒ붼»á±»ºöÂÔ¡£Èç¹ûÄãÔÚ×îááÒ»ÁеÄÄ©¶Ë¼ÓÉÏÒ»¸öµ¹
бÏß(\) £¬»òÊÇÊ¡ÂÔÁ˵µ°¸ÖÐ×îááÒ»¸öÐÂÁÐ×ÖÔª(newline)£¬Õû¸öתÒë±í
¶¼»á±»ºöÂÔ¡£(²»¹ýÕâÊÇxrdbµÄÎÊÌ⣬¶ø·ÇתÒë¹ÜÀíÆ÷µÄÎÊÌâ)¡£
ÕâÖÖ´íÎóÔÚÄã±à¼­Ò»¸öÏÖ´æµÄתÒë±íʱÌرðÈÝÒ×·¢Éú¡£
£®µ±Ä㶨ÒåµÄתÒëºÍÔ¤ÉèÓгåͻʱ£¬¿ÉÄܻᵼÖÂÆæ¹ÖµÄÐÐΪ£¬ÌرðÊǶԻ¬
Êó°´Å¥Ê¼þ£¬Ã¿Ò»´Î°´Ï»ò"Down"ʼþ£¬»áÏà¹Øµ½Ò»¸öËÉ¿ª»ò"Up"ʼþ
£¬µ±Äã¶Ô´Ë²¿·ÝûÓÐÃ÷È·¶¨Òåʱ£¬¿ÉÄÜ»áÓÐÒ»¸öÔ¤ÉèµÄϵ½áÈÔÈ»´æÔÚ£¬
(¼üÅ̵ݴϺÍËÉ¿ªÒ²ÊdzɶԵÄʼþ) £®ËùÒÔ£º
1.¼ì²éÔ¤Éèϵ½áµÄÎļþ¡£
2.Èç¹ûÄãÖ»¶Ô°´ÏÂ/ËÉ¿ªÅä¶ÔµÄÒ»°ëÖ¸¶¨Ò»¸öתÒ룬ȷ¶¨ÁíÒ»°ë²¢·ÇÔ¤Éè
תÒëµÄÒ»²¿·Ý£¬Èç¹ûÊǵĻ°£¬Ðè¶ÔËüÃ÷È·µØÖ¸¶¨Ò»¸öתÒë¡£
3.Èç¹ûÄãÈÔÈ»²»Äܽâ¾ö£¬ÔÝʱÓɱíÖÐÒÆÈ¥#override£¬Õ⽫ȥµôËùÓеÄÔ¤
ÉèתÒ룬ÈÃÄãÁ˽âÎÊÌâÊÇÓÉ춺ÍÔ¤ÉèתÒë³åÍ»ËùÔì³É£¬»¹ÊÇÒòΪÄãµÄ
תÒë±íÓдíÎó¡£
£®×ªÒë¹ÜÀíÆ÷¶ÔÓï·¨²»ÕýÈ·µÄÎÊÌ⣬ÎÞ·¨ºÜºÃµÄ¸æËßÄãÔ­ÒòºÎÔÚ¡£ÀýÈçÈç
¡¡¡¡¡¡¹ûÄãÓÐÒ»¸öתÒëÏñ£º
F6: string("abc""def")
²ÎÊýµÄÓï·¨²¢²»ÕýÈ·£¬F6¼ü½«Ã»ÓÐ×÷Ó㬵«ÄãÒ²¿´²»µ½´íÎóѶϢ¡£
£®Èç¹ûÄãתÒëÒ»ÐòÁеÄʼþ£¬ÇÒÐèÒª¶Ôÿһ¸ö¾ùÖ¸¶¨ÐÞÊμü£¬Äã±ØÐèÃ÷È·
µØ¶Ôÿһ¸ö¶¼Ö¸¶¨¡£ÀýÈçÈç¹ûÄãÐèÒªÒ»¸öתÒëʹÓÃctl-X ctl-K£º
Ctrl X, Ctrl K: ...
¶øÈç¹ûÄãʹÓãº
Ctrl X, K: ...
ÄãµÄÖ¸¶¨Îª ctl-X K
£®¼ì²éÄãËùÐèµÄwidgetÊÇ·ñÓÐÄãÖ¸¶¨µÄÃû³ÆºÍÀà±ð¡£ÀýÈç¶Ôxterm £¬Äã¿É
ÒÔÔÚÒ»¸ö±íµÄ¿ªÍ·Ö¸¶¨£º
xterm*Text*translations:
Õ⽫ʲ÷áÊÂҲû×÷£¬xterm Õý¹æÊÓ´°widgetµÄÀà±ðVT100¡£Í¨³££¬²»ÂÛ
xrdb»òתÒë¹ÜÀíÆ÷¾ù²»»áÓз´Ó¦£¬ÒòΪ¿´ÆðÀ´Ã»´í¡£
£®×ªÒë¿ÉÄÜÖ¸¶¨ÕýÈ·£¬Ò²¿ÉÒÔ¹¤×÷£¬µ«ËüµÄ×÷ÓúÍÄãÔ¤ÆڵIJ»·û¡£ÀýÈç¶Ô
xterm µÄתÒ룺
Meta Ctrl m: mode-menu()
ÊÇÕýÈ·µÄ£¬ÇһṤ×÷¡£µ«mode-menu()ʵ¼ÊÉϼì²é»¬Êó×ó»òÖа´Å¥ÊÇ·ñÓÐ
Õл½Ëü£¬ÆäËü·½Ãæ²»×öÈκÎÊ¡£
£®ÔÚÒ»¸öתÒëÖв»Ö¸¶¨ÐÞÊμü£¬²¢²»ÒâζÖøµ±ÐÞÊμü°´ÏÂʱתÒë»áÎÞЧ¡£
ËüÕæÕýµÄÒâÒåΪ£º "ÎÒ²¢²»ÔÚºõÓÐûÓÐÐÞÊμü" ¡£Èç¹ûÐèÒªµÄ»°£¬Ê¹ÓÃ
"None"£¬""»ò!·ûºÅ¡£Ê¹ÓÃʱҪСÐÄÔ¤ÉèµÄתÒëÊÇ·ñ»á·Á°­µ½Äã¡£
£®×ªÒëÊÇÕë¶Ôwidget¶øÖ¸¶¨µÄ£¬ËùÓÐÔÚתÒëÖеÄ×÷ÓñØÐèÓÉwidgetÌṩ¡£
ÔÚÄãÖ¸¶¨×ªÒëresourceÃû³ÆµÄµØ·½ºÜÈÝÒ×ÍüµôÕâÒ»µã¡£ÀýÈ磺
xman*translations: \
: reset()\n\
: set()
½«µ¼ÖÂÐí¶à´íÎó£ºset()ºÍreset()×÷ÓÃÖ»Óб»Command widget¶¨Ò壬µ«
xmanÓÐÊýÖÖÆäËüÐÍ̬µÄwidget¿É½ÓÊÜתÒ룬ÇÒתÒë¹ÜÀíÆ÷»á±§Ô¹ÕâЩ
widget²¢Î´Ìṩset()ºÍreset()¡£½â¾öÖ®µÀΪ¸üÍêÕûЩµÄÖ¸¶¨resource
Ãû³Æ£¬ÀýÈçÔÚ±¾ÀýΪ xman*Command*translations ¡£
£®¶ÔÈκθø¶¨µÄresource£¬µ±resource×ÊÁϿⱻѯÎÊʱ£¬Resource Manager
»á´«»ØÒ»¸öÖµ¸øwidget£¬Õâ¸ö´«»ØµÄÖµµÄ "ÌØáçÖµ" (characteristic)
(resourceÃû³Æ)´ó¶àÓëwidgetµÄºÍÊôÐÔµÄÍêÕûÀà±ð/³ÉÔ±Ãû³ÆÏà·û¡£Ëù
ÒÔÄã¶ÔËùÓеÄText widgetÖ¸¶¨Ò»¸öÒ»°ãÐÔµÄתÒëáᣬÓÖ¶ÔxeditÖ¸¶¨Ò»
¸öתÒ룬ϣÍûËüÃDz¢´æÊDz»¿ÉÄܵģ¬Ö»ÓÐÒ»¸öתÒë±í»á´«¸øwidget¡£Àý
È磺
*Text*Translation: #override\
(¶ÔTextÒ»°ãÐÔµÄתÒë)
...
xedit*Text*Translation: #override\
(¶Ôxedit µÄTextÌض¨µÄתÒë)
...
ÄãÖ»Äܵõ½ÔÚxedit ÖÐÌض¨µÄתÒ룬»òÊÇÔڱ𴦵õ½Ò»°ãÐÔµÄתÒë¡£
#override »áÓÐËù»ìÏý£¬ËüµÄÒâÒåΪ "°ÑתÒë¼ÓÈëÏÖ´æµÄÖ®ÖÐ" ¡£µ«Õâ
ÍêÈ«ÓÉתÒë¹ÜÀíÆ÷´¦Àí£¬µ±Ê±ºòµ½Ê±£¬×ªÒë¹ÜÀíÆ÷»á¾ö¶¨´«µÝÄĸöÖµ¸ø
ÓÉResource ManagerËùÔìµÄwidget¡£¶ÔResource Manager¶øÑÔ£¬#override
Ö»ÊÇ´«µÝ¸øwidgetÖµµÄ²¿·ÝÖеÄÒ»¸öÎÄ×Ö×Ö´®¶øÒÑ¡£
ÒòΪÄãʹÓÃresourceÀ´Ö¸¶¨×ªÒ룬ËùÒÔ´íÎó¿ÉÄÜÔÚÁ½¸öÁìÓò¾ù»á·¢Éú¡£Îª
Á˼õÉÙ´íÎóµÄ¡õΧ£¬µ±Äã¶ÔתÒëÆÄÓо­Ñéʱ£¬ÔÚÄãÒÑÔØÈëתÒëresourceÖ®áᣬ
×îºÃÄÜÃ÷È·µØÁÐÓ¡³öÄãµÄresource×ÊÁÏ¿â¡£ÀýÈ磺Èç¹ûÄã¶Ôxprog дÈëתÒ룬
ÇÒתÒëÔÚµµ°¸mytrans ÖУ¬ÒÔÏÂÁÐÃüÁîÀ´Ö´ÐгÌʽ£º
xrdb mytrans xrdb -q xprog ...
17.4 ½áÂÛ
ÕâÂþ³¤µÄÒ»Õº­¸ÇÁ˱»£Ø Toolkit ËùʹÓõıê׼תÒë½á¹¹£¬ËüÈÃÄãÖ¸¶¨
°´ÏÂÒ»¸ö¼ü»ò°´Å¥»áÓÐʲ÷áÓ°Ïì¡£ÕâЩתÒëÖ¸¶¨µ½Ã¿Ò»¸öwidget£¬ÇÒÄã½åÖøʹ
Óñê×¼resource½á¹¹´«ËÍתÒë±í¸øwidget¡£Äã¿´µ½ÈçºÎ¶ÔÒ»¸ö¼üÅ̵ļü¡¢»¬Êó
°´Å¥ºÍÆäËüÏñÒƶ¯Ò»¸öÖ¸±ê½øÈëÊÓ´°µÄʼþ×÷Ö¸¶¨×ªÒ롣ȻááÎÒÃǽåÖøÖ¸¶¨²»
ͬ״̬µÄÐÞÊμüËùÔì³ÉµÄÓ°Ï죬±È½ÏÑϽ÷µØ¶¨ÒåÎÒÃÇÐèҪתÒëµÄʼþ¡£
±¾Õµĵڶþ¸ö²¿·Ýº­¸ÇÏàͬµÄÁìÓò£¬µ«½ÏΪÕýʽ£¬ÇÒÏêϸ½âÊÍÔÚתÒë¹æ¸ñ
ÖУ¬¿ÉÓõ½µÄÓï·¨£¬ÌرðÊÇÐÞÊμü¡£
×îáᣬÎÒÃǼòÁÐʹÓÃתÒë³£¼ûµÄÎÊÌ⣬¼°Ò»Ð©ÈçºÎ½â¾öËüÃǵĽ¨Òé¡£
±¾Õ°üº¬ÁËÐí¶à²ÄÁÏ¡£ËüÃÇÔËÓÃÁ˼«ÉٵĹÛÄµ«Óï·¨¸´ÔÓ£¬Ò×Éú´íÎó£¬
ÇÒ²»ÏÔ¶øÒ×¼û¡£Èç¹ûÒ»¿ªÊ¼¾õµÃÀ§ÄÑ£¬²»±Øµ£ÐÄ¡£´ÓһЩ¼òµ¥µÄתÒëÖøÊÖ (Ò²
ÐíÊÇxterm)£¬ÇÒÒÔÖ¸ÄÏÒ³ÖеġõÀý»ò±ðÈ˵ÄתÒë±íΪ»ù´¡À´·¢Õ¹Ð޸ġ£µ±ÄãÓÐ
¾­ÑéÖ®áá»á½øÕ¹¿ìËÙ£»Ä㽫¶´Ï¤Óï·¨ÇÒÄÜ¿´³öÆäáá»á·¢Éúʲ÷á×´¿ö¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ