µ±Ç°Î»ÖãºLinux½Ì³Ì - Linux - £Ø £×£É£Î£Ä£Ï£×£Ó ϵͳʹÓÃÖ¸ÄÏ(Ê®Îå)

£Ø £×£É£Î£Ä£Ï£×£Ó ϵͳʹÓÃÖ¸ÄÏ(Ê®Îå)

µÚ£±£·Õ ¶¨ÖÆÄãµÄ¼üÅ̺ͻ¬Êó -- תÒë

µçÄԵļüÅÌͨ³£º¬ÓÐһЩ ""ÌØÊ⹦ÄÜ"" (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¼üÊÇ¡¡ÈëÒ»¸ö 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ØÐ轫
Á½¸öתÒëÒÔ "" "" ·Ö¿ªÇÒ¶ÀÁ¢³ÉΪһÁУº

xterm*VT100*Translations: #override(contd.)
F1: string(""rm core *.tmp"")sting(0xd) (cond.)
F2: string(""lpq-Plpa3"")string(0xd)

ÒÔÉϵÄÐÎʽ½«Ôì³É¹ÜÀíÉϵÄÀ§ÄÑ£¬Äã¿ÉÒÔ½å×Å°üº¬ ""Òþ²ØµÄÐÂÁÐ×ÖÔª"" À´Ê¹Ëü
¾ß¿É¶ÁÐÔһЩ£º (ÐÂÁÐ×ÖÔªÒÔµ¹Ð±Ïß """"´¦Àí)

xterm*VT100*Translations: #override
F1: string(""rm core *.tmp"")sting(0xd)
F2: string(""lpq-Plpa3"")string(0xd)

Äã¿ÉÒÔ·ÅÖÃÈÎÒâ¶à¸öÄãËùÐèµÄ ""Òþ²ØµÄÐÂÁÐ×ÖÔª"" , ÇÒ¼¸¡¡ÔÚÈκεط½¾ù¿É£¬
ËüÃÇÖ»ÊDZ»ºöÂÔ¶øÒÑ¡£ (Ö»ÒªºÍתÒë¹ÜÀíÆ÷Ïà¹Ø£¬ÉõÖÁÄãÿ¸ôÒ»¸öµ¥×Ö±ãʹÓÃ
Ò»¸öҲû¹Øϵ¡£µ«Ç§Íò²»ÒªÔÚÒ»¸ö¹æ¸ñµÄ resource ÌØá粿·ÝʹÓÃËüÃÇ£¬ËüÃÇ
ÎÞ·¨±»resource manager½âÊÍ£¬Ò²Ã»ÓÐÏàͬµÄЧ¹û¡£) Èç¹ûÄã¸Ð¾õÓÐЩ»ìÏý£¬
²»Óõ£ÐÄ¡£¼òµ¥µØ˵£¬resource½á¹¹ÐèÒªµÄÊÇÒªÔÚÒ»ÁÐÖеÄÒ»¸öresource¹æ¸ñ
µÄ ""Öµ"" µÄ²¿·Ý£¬¶øתÒë¹ÜÀíÆ÷ÒÔ·Ö¿ªµÄÁÐÀ´·Ö¿ª (Ò²¾ÍÊÇÒÔ ÖÕ½á)£¬¶øʹÓÃ
Õ߸պÃÒÔÿһ¸öʵ¼Ê·Ö¿ªµÄÁдú±íÒ»¸öÒâÒåÒÔÔö¼Ó¿É¶ÁÐÔ£¬ËùÒÔ¹æÔòºÜ¼òµ¥£º
ÔÚ³ýÁË×îááÒ»ÁеÄÿһ¸öתÒëÁоù¼ÓÉÏÒ»¸ö "" ""¡£

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
F3: insert-selection(CUT_BUFFER0)

µ½Ä¿Ç°ÎªÖ¹£¬ÕâÖ»ÊÇÒ»µãССµÄ±ãÀû¡£È»¶ø£¬¼Ù¶¨ËµÄ㻨ÁËÐí¶àʱ¼äÔÚ±¾ÎÄÎÄ
¼þÉϹ¤×÷£¬ÄãÓà tbl¸ñʽ»¯£¬ÄãÓà nroffÔÚÓ©Ä»ÉÏÔ¤ÊÓ (preview)ËüÃÇ£¬ÓÃ
troff ÅŰ棬ÇÒ½«Êä³öË͵½ÄãµÄÒ»¸öÓùýÂËÆ÷ (filter) Ϊtr2printerµÄÓ¡±í
»úÉÏ¡£É趨תÒëΪ£º

xterm*VT100*Translations: #override
F3: string(""ed"") insert-selection(CUT_BUFFER0)
string(0xd)
F4: string(""tbl"") insert-selection(CUT_BUFFER0)
string(""| nroff -man"") string(0xd)
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
?: check()
Down: unset()
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
l,o,o,k: check()
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
Button1: unset()
Button2: check()
Button3: set()

Äã¿ÉÒÔ¿´µ½Óï·¨ºÍÇ°ÃæÏàËÆ£ºÄãÏȸø¶¨Ò»°ãÐÔµÄʼþÐÍ̬ (ÀýÈç »ò
)£¬Æäáá¸ú×ÅÄãËùÐèʼþµÄʼþϸ½Ú²¿·Ý (ÀýÈçs ºÍButton3) (
Button 1, 2, 3·Ö±ð¶ÔÓ¦µ½×ó¡¢ÖС¢ÓÒ°´Å¥)

¶ÔÒ»ÐòÁеÄʼþµÄתÒë

¾ÍÈçͬÎÒÃǶ¨ÒåÁËÒ»ÐòÁа´Ï¼üʼþµÄתÒë(set£¬unsetºÍcheck)£¬ÎÒÃǵ±È»
Ò²¿ÉÒÔ¶¨ÒåÒ»ÐòÁеĻ¬Êóʼþ¡£ÊÂʵÉÏÄãתÒëµÄÒ»ÐòÁеÄʼþ¿ÉÒÔÈÎÒâ×éºÏÔÚ
Ò»Æð£¬Äã¿ÉÒÔÔÚÒ»¸öתÒëµÄ×ó±ßËæÒâ»ìºÏʼþµÄÐÍ̬¡£ËùÒÔÄã¿ÉÒÔ¶¨ÒåÈçϵÄ
תÒë±í£º

xbiff*Mailbox*Translations: #override
Button1, ?, Button3: check()
Button1: u, Button3: unset()
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
: reset()
: 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()
Shift : forward-word()
Shift : next-line()
Ctrl : backward-character()
Ctrl : backward-word()
Ctrl : previous-line()

Èç¹ûÄã²âÊÔËü£¬Ææ¹ÖµÄÏÖÏó»á·¢Éú -- ÓαêºÃÏñ»á×ÔÐÐÆäÊÇ£¬¶øÇÒ±¾ÎĵÄƬ¶Î
»áÒ»ÏÂ×Ó±»Ñ¡Ôñ£¬Ò»ÏÂ×ÓÓÖÈ¡ÏûÑ¡Ôñ¡£·¢ÉúÕâÖÖÏÖÏóµÄÔ­ÒòÊÇText widget µÄ
Ô¤Éèϵ½áÈÔÈ»»á×÷Óã¬Ëü°üº¬µÄתÒëÏñ£º

: extend-end(PRIMARY, CUT_BUFFER0)

Äã¿ÉÄÜÈÏΪÕâ²»»áÓ°ÏìÄ㣬ÒòΪµ±ÄãËÉ¿ª°´Å¥Ê±Äã×ÜÊÇ°´×ÅSHIFT ¼ü»òCTRL¼ü
¡£µ«ÊÂʵÉÏ»á×÷Óãº×ªÒë¹ÜÀíÆ÷¶Ôì¶Äã䶨ÒåµÄÐÞÊμü½âÊÍΪÄã²»ÔÚ¡¡ËüÃǵÄ
Ó°Ï죬ËùÒÔËÉ¿ªButton1 ʱ»á¶ÔÓ¦µ½ÉÏÊöµÄ¹æ¸ñ¡£ÎªÁË¿Ë·þÕâµã£¬ÎÒÃǶÔÄÇЩ
¿ÉÄܲ»Ð¡Ðıã»á·¢ÉúµÄ°´Å¥ËÉ¿ªÊ¼þ¶¨ÒåתÒ룬²¢Ïµ½áµ½Ò»¸ö¿Õ (null) ×÷ÓÃ
¡£ÕâЩתÒëµ±±»¶ÔÓ¦µ½Ê±»á¸ÇµôÔ¤ÉèµÄתÒë¡£¶ÔʹÓÃText widget ÎÒÃÇÐèÔÙÔö
¼ÓÁ½ÁУ¬²ÅÊÇÒ»¸öÍêÕûµÄתÒë±í£º

*Text*Translation: #override
Shift : forward-character()
Shift : forward-word()
Shift : next-line()
Ctrl : backward-character()
Ctrl : backward-word()
Ctrl : previous-line()
Shift : do-nothing()
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()
u: unhighlight()
n: notify()
s: set()
r: reset()
LineFeed: set() notify()

Quit*translations: #override
: reset()
: set()

Óм¸µãÌرðµÄÓï·¨ÐèҪעÒ⣺

¡¤ÔÚ´ËÎÒÃǶÔÏàͬÀà±ðÖв»Í¬µÄwidgetÖ¸¶¨²»Í¬µÄתÒ룬ËùÒÔÎÒÃÇÐèÒªÖª
µÀ³ÉÔ± (instance) Ãû³Æ¡£²»ÐÒµÄÊÇ£¬ÕâЩ³ÉÔ±Ãû³Æ (Help£¬Quit£¬
Manual Page)²¢²»Ã÷ÏÔ¡£Èç¹ûËüÃÇÔÚÎļþÖÐÕÒ²»µ½ (±¾Àý¼´ÕÒ²»µ½)£¬ÄÇ
ÄãÖ»ÄÜÓòµĻòÊÇÈ¥²é¿´Ô­Ê¼³ÌʽÁË¡£

¡¤¶Ôì¶Help£¬ÎÒÃÇÊ¡ÂÔÁ˳£ÓõÄ#override£¬ÒòΪÎÒÃǶԴËwidget²»ÐèÒª¿¼
ÂÇÈκÎÔ¤ÉèµÄϵ½á¡£ÌرðµÄÊÇ£¬µ±Ö¸±ê½øÈëÊÓ´°Ê±£¬ÎÒÃDz»Òª´Ëwidget
³ÊÏÖ¸ßÁÁ¶È£¬Èç´ËÎÒÃDzÅÄÜ¿´³öÕâ¸öתÒëµÄЧÓá£

¡¤ÓÉì¶Ê¡ÂÔ #override£¬ÎÒÃǽ«Õâ¸öתÒë¹æ¸ñÒÆÖÁµÚÒ»ÁС£(Èç¹û²»Õâ÷á×÷
£¬¶øÇÒ¶ÔµÚÒ»ÁÐÈÔÒÔ ×÷½áÊø£¬ÎÒÃǽ«µÃµ½´íÎó£º

X Toolkit Warning: translation table syntax er-
ror: Missing : after event sequence.
X Toolkit Warning: ... found while parsing

ÒòΪ ÊÇÓÃÀ´Çø¸ôתÒë¹æ¸ñ»òÀàËÆÏñ #override Ö¸ÁîµÄ)¡£¶ø½«´ËÁкÍ
µÚÒ»¸ö¹æ¸ñÒÔÒþ²ØµÄÐÂÁÐ×ÖÔªÇø¸ô£¬¾ÍÈçͬ£º

*Help*translations:
h: highlight()
...

¡¤¶Ô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 ] list-of-translations

ÿһ¸ö list-of-translations ÓÉÒ»»ò¶à¸öתÒë×é³É£¬¸ñʽÈçÏ£º

event-sequence : list-of-actions

µ±event-sequence·¢Éúʱ£¬¹æ¸ñÖеÄlist-of-actions »áÓÉwidgetËùÍê³É¡£Èç
¹ûÔÚÒ»¸ö±íÖУ¬Óжàì¶Ò»¸öµÄתÒ룬ÿһ¸öÐèÒÔ "" "" Çø¸ô¿ª¡£

ÎÒÃÇÊ×ÏÈÀ´¿´Ò»ÏÂÑ¡ÏîµÄÖ¸ÁȻáá¿´Ò»ÏÂ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()""±»È¥µôÁË)¡£

¡¤¼ì²éÄã¶ÔÿһÁоùÓÐÖսᡣÈç¹ûÄãÔÚתÒë±íÖеÄÒ»ÁкöÂÔÁË"" ""»ò"" ""
£¬ÔÚÆäááËùÓеÄתÒ붼»á±»ºöÂÔ¡£Èç¹ûÄãÔÚ×îááÒ»ÁеÄÄ©¶Ë¼ÓÉÏÒ»¸öµ¹
бÏß() £¬»òÊÇÊ¡ÂÔÁ˵µ°¸ÖÐ×îááÒ»¸öÐÂÁÐ×ÖÔª(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()
: 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 ...