⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000009.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>寄信人:&nbsp;&lt;<A HREF="mailto:bbs@captain.net.tsinghua.edu.cn>">bbs@captain.net.tsinghua.edu.cn></A>&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;6&nbsp;--&nbsp;Alex&nbsp;整理&nbsp;<BR>发信站:&nbsp;华南理工大学&nbsp;BBS木棉站&nbsp;<BR>日&nbsp;&nbsp;期:&nbsp;Tue&nbsp;Aug&nbsp;20&nbsp;08:35:08&nbsp;1996&nbsp;<BR>&nbsp;<BR>作用的格式和作用的表列&nbsp;<BR>&nbsp;<BR>每一个转译在一或多个作用之上系结一个序列的一或多个事件。在表列中的个&nbsp;<BR>别作用是以空白分开的。&nbsp;(不可用逗点分开,那将会导致错误)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;个别的作用格式如下:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action-name(parameters)&nbsp;<BR>&nbsp;<BR>即使没有参数被指定,在作用名称&nbsp;(action-name)後的括弧,仍然不可省略。&nbsp;<BR>例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start-selection()&nbsp;<BR>&nbsp;<BR>如果在作用名称和左括弧中间留有空白,你将会得到一个错误。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;作用名称只包含了字母、数字、钱号($)、底线(_)四种字元。每一个widget&nbsp;<BR>提供它自己的作用集合&nbsp;(如果有的话)&nbsp;,且自我包含这些作用名称的硬码&nbsp;<BR>(hard-coded)表列。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;参数(parameters)是一个零到多个字元字串的表列,中间以逗点分开。参&nbsp;<BR>数的意义为对特定的作用作指定&nbsp;(事实上大多数的作用并没有任何参数)&nbsp;。参&nbsp;<BR>数字串可以不加引号,例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;insert-selection(PRIMARY)&nbsp;<BR>&nbsp;<BR>或者前後加上双引号,这种情形通常为参数字串内包含了空白或一个逗点,例&nbsp;<BR>如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;string(&quot;plot&lt;x,y&gt;&quot;)&nbsp;<BR>&nbsp;<BR>没有一个一般性的方法,让你在参数字串中的任何位置包含一个双引号,虽然&nbsp;<BR>像这样&nbsp;string(ab&quot;cd)'将双引号放在字串中间是可被处理的。也没有一般性的&nbsp;<BR>方法在同一个参数字串中同时包含字串和双引号。因为如此,有些widget在解&nbsp;<BR>释它们自己的参数时,可以自行加入它们自己的语法规则。例如:对xterm&nbsp;的&nbsp;<BR>VT100&nbsp;widget的&nbsp;string()作用,如果一个不带双引号且开头为&nbsp;&quot;0x&quot;的字串,&nbsp;<BR>此字串被解释为代表一个ASCII&nbsp;字元的十六进位数。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在此结束我们对转译规格及格式的描述。由此,你应有能力了解在不同X&nbsp;<BR>手册列出的转译,且可写你自己的转译。为了帮助你,下节列出你常见的问题&nbsp;<BR>,以及如何克服它们。&nbsp;<BR>&nbsp;<BR>17.3&nbsp;在转译规格中常见的问题&nbsp;<BR>&nbsp;<BR>转译在观念上简单,但实际上很混乱。即使你常常使用,语法仍然复杂而难解。&nbsp;<BR>无论如何,如果你是初学者,最好的方式是你以别人的转译当作自己的转译的&nbsp;<BR>基础。在指南页中有几个对xbiff、xdm(目前尚未介绍过,将於第20章介绍&nbsp;<BR>)、xterm&nbsp;的转译范例,将对你有所帮助。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;如果你发现你的转译有错误的话,有几点值得去检查:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.转译只能应用在使用Toolkit的程式上。如果你试图对非Toolkit应用程&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;式定义转译,看起来不会有任何问题,只是转译不会作用而已。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;让我们来看一下为什麽,以对xcalc&nbsp;(这是一个非Toolkit程式)使用转译&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为例。你对一个resource名称像&nbsp;*xcalc*translations定义一个转译表,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;且用xrdb载入至你的资料库。xrdb并不会抱怨,因为它不知道是那一个&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;应用程式使用到resource,它只会设定资料库,稍後供Resource&nbsp;Manager&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查询。现在你执行xcalc&nbsp;,它对转译是一无所知,所以不会向资料库查&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;询转译,当然也绝不会编译它们了。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.不要省略&nbsp;#override,除非你确实知道你要做什麽。如果你因错误省略&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它,例如在xedit&nbsp;中,你将发现没有任何的键可输入任何的东西&nbsp;(因为&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;预设的转译&nbsp;&quot;&lt;Key&gt;:insert-char()&quot;被去掉了)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.检查你对每一列均有终结。如果你在转译表中的一列忽略了&quot;\n\&quot;或&quot;\n&quot;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,在其後所有的转译都会被忽略。如果你在最後一列的末端加上一个倒&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;斜线(\)&nbsp;,或是省略了档案中最後一个新列字元(newline),整个转译表&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;都会被忽略。(不过这是xrdb的问题,而非转译管理器的问题)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这种错误在你编辑一个现存的转译表时特别容易发生。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.当你定义的转译和预设有冲突时,可能会导致奇怪的行为,特别是对滑&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;鼠按钮事件,每一次按下或&quot;Down&quot;事件,会相关到一个松开或&quot;Up&quot;事件&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,当你对此部份没有明确定义时,可能会有一个预设的系结仍然存在,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(键盘的按下和松开也是成对的事件)&nbsp;.所以:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.检查预设系结的文件。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.如果你只对按下/松开配对的一半指定一个转译,确定另一半并非预设&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;转译的一部份,如果是的话,需对它明确地指定一个转译。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.如果你仍然不能解决,暂时由表中移去#override,这将去掉所有的预&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设转译,让你了解问题是由於和预设转译冲突所造成,还是因为你的&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;转译表有错误。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.转译管理器对语法不正确的问题,无法很好的告诉你原因何在。例如如&nbsp;<BR>   果你有一个转译像:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;F6:&nbsp;string(&quot;abc&quot;&quot;def&quot;)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;参数的语法并不正确,F6键将没有作用,但你也看不到错误讯息。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.如果你转译一序列的事件,且需要对每一个均指定修饰键,你必需明确&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;地对每一个都指定。例如如果你需要一个转译使用ctl-X&nbsp;ctl-K:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ctrl&nbsp;&lt;Key&gt;X,&nbsp;Ctrl&nbsp;&lt;Key&gt;K:&nbsp;...&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而如果你使用:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ctrl&nbsp;&lt;Key&gt;X,&nbsp;&lt;Key&gt;K:&nbsp;...&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你的指定为&nbsp;ctl-X&nbsp;K&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.检查你所需的widget是否有你指定的名称和类别。例如对xterm&nbsp;,你可&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以在一个表的开头指定:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xterm*Text*translations:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这将什麽事也没作,xterm&nbsp;正规视窗widget的类别VT100。通常,不论&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xrdb或转译管理器均不会有反应,因为看起来没错。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.转译可能指定正确,也可以工作,但它的作用和你预期的不符。例如对&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xterm&nbsp;的转译:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Meta&nbsp;Ctrl&nbsp;&lt;Key&gt;m:&nbsp;mode-menu()&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是正确的,且会工作。但mode-menu()实际上检查滑鼠左或中按钮是否有&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;招唤它,其它方面不做任何事。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.在一个转译中不指定修饰键,并不意味著当修饰键按下时转译会无效。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它真正的意义为:&nbsp;&quot;我并不在乎有没有修饰键&quot;&nbsp;。如果需要的话,使用&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;None&quot;,&quot;&quot;或!符号。使用时要小心预设的转译是否会妨碍到你。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.转译是针对widget而指定的,所有在转译中的作用必需由widget提供。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在你指定转译resource名称的地方很容易忘掉这一点。例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xman*translations:&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;EnterWindow&gt;:&nbsp;reset()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;LeaveWindow&gt;:&nbsp;set()&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将导致许多错误:set()和reset()作用只有被Command&nbsp;widget定义,但&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xman有数种其它型态的widget可接受转译,且转译管理器会抱怨这些&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;widget并未提供set()和reset()。解决之道为更完整些的指定resource&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名称,例如在本例为&nbsp;xman*Command*translations&nbsp;。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.对任何给定的resource,当resource资料库被询问时,Resource&nbsp;Manager&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;会传回一个值给widget,这个传回的值的&nbsp;&quot;特徵值&quot;&nbsp;(characteristic)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(resource名称)大多与widget的和属性的完整类别/成员名称相符。所&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以你对所有的Text&nbsp;widget指定一个一般性的转译後,又对xedit指定一&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;个转译,希望它们并存是不可能的,只有一个转译表会传给widget。例&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*Text*Translation:&nbsp;#override\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(对Text一般性的转译)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xedit*Text*Translation:&nbsp;#override\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(对xedit&nbsp;的Text特定的转译)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你只能得到在xedit&nbsp;中特定的转译,或是在别处得到一般性的转译。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#override&nbsp;会有所混淆,它的意义为&nbsp;&quot;把转译加入现存的之中&quot;&nbsp;。但这&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -