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

📄 00000006.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;转译由widget指定,它的确是一个widget的每一个成员。一个转译的集合&nbsp;<BR>称之为一个转译表,而这个表藉著标准的resource结构传递给应用程式。widget&nbsp;<BR>&nbsp;(对转译而言意味深长)&nbsp;会有一个Translation&nbsp;类别的resource属性,通常的&nbsp;<BR>成员名称为translation。这个转译resource期待的一个值即为一个转译表。就&nbsp;<BR>像所有其它的resource一般,你可以在同一个应用程式对不同的widget指定不同&nbsp;<BR>的resource,而且你能以类别名称或成员名称或二者混合来指定它们。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;每一个widget定义了它所提供的作用,不论是在数量或型态上,它们都是&nbsp;<BR>极富变化的。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;转译可被各种不同型态的事件指定,不仅只於键盘和滑鼠事件而已。任何&nbsp;<BR>序列的事件均能被处理,就如同单一事件一般。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;转译和转译表在&nbsp;&quot;&nbsp;X&nbsp;Toolkit&nbsp;Intrinsics&nbsp;&quot;&nbsp;使用手册附录B一节中,有&nbsp;<BR>简洁地描述。它不是初学者查看转译的好地方,但它含有完整的事件型态、修&nbsp;<BR>饰名称等等的表列,在此不再赘述。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;17.2.1&nbsp;转译表的格式&nbsp;<BR>&nbsp;<BR>一个转译表大体上的格式如下:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;[optional-directive\n]&nbsp;list-of-translations&nbsp;<BR>&nbsp;<BR>每一个&nbsp;list-of-translations&nbsp;由一或多个转译组成,格式如下:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;event-sequence&nbsp;:&nbsp;list-of-actions&nbsp;<BR>&nbsp;<BR>当event-sequence发生时,规格中的list-of-actions&nbsp;会由widget所完成。如&nbsp;<BR>果在一个表中,有多於一个的转译,每一个需以&nbsp;&quot;\n&quot;&nbsp;区隔开。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;我们首先来看一下选项的指令,然後看一下list-of-translations的细节&nbsp;<BR>部份。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;17.2.2&nbsp;转译指引&nbsp;--&nbsp;#override&nbsp;等等&nbsp;<BR>&nbsp;<BR>选项指引&nbsp;(directive)&nbsp;告诉转译管理器,它应对任何已设定之相关widget在此&nbsp;<BR>转译集合中应如何处理。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;#replace&nbsp;:&nbsp;清除所有现存的对应,只采用在转译表中所含有的。(只使用新&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;#override&nbsp;:&nbsp;强制留下现有的对应,加入转译表中。如果在表中有任何项&nbsp;<BR>&nbsp;&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;#augment&nbsp;:&nbsp;强制留下现有的对应,加入转译表中。如果在表中有任何项&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目设定在现有的设定存在,使用旧的而忽略新的。&nbsp;(结合旧有的和新的&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,但旧的比较重要)。&nbsp;<BR>&nbsp;<BR>如果未设定指引,预设为&nbsp;#replace&nbsp;。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;17.2.3&nbsp;个别的转译规格格式&nbsp;<BR>&nbsp;<BR>每一个转译的格式为:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;event-sequence&nbsp;:&nbsp;list-of-actions&nbsp;<BR>&nbsp;<BR>让我们来看一看此规格的两个部份。&nbsp;<BR>&nbsp;<BR>事件和事件序列(event-sequence)的格式&nbsp;<BR>&nbsp;<BR>一个事件序列包含一或多个事件规格(event-specs),&nbsp;其格式为:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;[modifiers]&nbsp;&lt;event-type&gt;&nbsp;[repeat-count]&nbsp;[detail]&nbsp;<BR>&nbsp;<BR>除了事件型态(event&nbsp;type)外,均为可选择。(&lt;&gt;中为必需)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;modifiers&nbsp;:&nbsp;这是基本设计中比较精巧的部份,我们在下一段说明。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;event-type&nbsp;:&nbsp;指定我们有兴趣的事件的型态,例如按键(&lt;KeyDown&gt;)、&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;松开按钮(&lt;BtnUp&gt;)或指标离开视窗(&lt;Leave&gt;)等等。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;detail&nbsp;:&nbsp;指定我们有兴趣的特定型态。如果你省略细节栏(detail&nbsp;field&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),事件规格将对应到任何detail,如此,&lt;Key&gt;将对应到所有的按键&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;事件。此格式指定到每一个事件型态。对指定事件型态的细节栏为:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.对&lt;Key&gt;、&lt;KeyUp&gt;和&lt;KeyDown&gt;事件,细节如果不是键的名称(例如&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&lt;Key&gt;s&quot;),便是&nbsp;keysym&nbsp;(keysym是按键以开头为&quot;0x&quot;的十六进位&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数表示,将於下一章详细解释)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.对於按钮事件,细节就是按钮的名称,也就是&nbsp;Button1&nbsp;...&nbsp;Button5&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中的一个。例如我们先前使用过的&quot;&lt;BtnDown&gt;Button1&quot;。&nbsp;<BR>&nbsp;<BR>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相等的全名&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Btn1Down&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;BtnDown&gt;Button1&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Btn5Down&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;BtnDown&gt;Button5&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Btn1Up&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;BtnUp&gt;Button1&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Btn5Up&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;BtnUp&gt;Button5&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;repeat-count&nbsp;:&nbsp;这指定了事件需要的次数。如果被指定,它们被包含在&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;括弧之中。例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Btn1Down&gt;(2)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定需对一号按钮(button-1)碰触两次。如果你在後面再加上加号(+)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,其意为碰触的数目需大於或等於指定。例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Btn1Down&gt;(3+)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;意为需碰触三或更多次。预设的重复次数为一次。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;一个事件序列以一或多个事件规格组成,以逗点分开。当这个事件的序列&nbsp;<BR>在其widget发生时,相关的作用便会运作。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;当序列发生时,转译管理器会根据一些规则决定它自己是否被满足。我们&nbsp;<BR>用一个例子以便仔细地观察,假设你对两个字元序列set&nbsp;和unset定义了转译:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.概略地说,如果个别的事件依序发生,转译管理器会被满足,其它的事&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;件&nbsp;(那些你未指定的事件)&nbsp;如果在指定的序列中间发生,不会妨碍序列&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;被满足。例如,set&nbsp;可被sweat&nbsp;和serpent&nbsp;对应。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.如果介於其间的未指定事件,启动了转译表中的另一个事件序列,转译&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;管理器会放弃原先的序列,而尝试著去满足新的序列。例如,set&nbsp;不会&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;被sauerkraut对应,因为u&nbsp;会使得转译管理器对应到unset。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.如果在一个事件的集合中有超过一个的事件序列发生,转译管理器只会&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;应用到一个转译:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;如果一个序列对应到结束&nbsp;(右端),较短的那个序列只有在不包含於&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;较长的序列才会发生。所以如果unset&nbsp;被对应到,对set&nbsp;转译将不会&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作用。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;如果一个序列是在另一个序列的中间发生,例如,如果你定义序列&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at和rate,则较长的那个永远不会被对应到。&nbsp;<BR>&nbsp;<BR>事件修饰键&nbsp;<BR>&nbsp;<BR>修饰键&nbsp;(modifiers)是一些键或按钮,系指当主要事件发生时,那些必需被按&nbsp;<BR>下才会让转译管理器满足的键或按钮。你可以对键、按钮、移动、进出视窗等&nbsp;<BR>事件指定修饰键。常见的修饰键为:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Button1&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Button5&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Ctrl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shift&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Meta&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Lock&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;如果你未指定任何的修饰键,转译管理器会解释为:&nbsp;&quot;当事件发生时,不&nbsp;<BR>论修饰键是否被按下,均会被接受&quot;。例如,&lt;BtnDown&gt;会被满足,不论当时&nbsp;<BR>SHIFT&nbsp;或META键是否有被按下。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;如果你真的需要指定&nbsp;&quot;只有在没有修饰键被按下时才接受此事件&quot;。则需使&nbsp;<BR>用虚拟修饰键&nbsp;(pseudo-modifier)&nbsp;None。例如,None&nbsp;&lt;BtnDown&gt;&nbsp;会使得当按&nbsp;<BR>钮按下时若META键也被按下则不会满足。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;对一个事件指定一些修饰键意为&nbsp;&quot;只要符合转译中指定的修饰键,其它的&nbsp;<BR>修饰键不需介意&quot;。它并没有&nbsp;&quot;一定要完全恰好符合才可以&quot;的意思。例如,&nbsp;<BR>Ctrl&nbsp;&lt;Key&gt;a&nbsp;在你按下&nbsp;meta-ctl-shift-a&nbsp;时仍会被满足。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;如果你真的要指定&nbsp;&quot;只有刚好符合修饰键的才要&quot;,在修饰键之前加一个惊&nbsp;<BR>叹号&nbsp;(!)。例如,!Ctrl&nbsp;&lt;Key&gt;a&nbsp;在你按下&nbsp;meta-ctl-shift-a&nbsp;时不会被满足。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;对一个修饰键的集合&nbsp;(可能是空集合)&nbsp;作限制,意为&nbsp;&quot;除了这些修饰键不&nbsp;<BR>不接受&quot;,需要在不接受的修饰键之前加一个(~)号。例如,Shift~Meta&nbsp;&lt;Key&gt;t&nbsp;<BR>会被ctl-shift-t满足,不会被meta-shift-t满足。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;键事件通常忽略大小写,如果你要区分,需在之前加一个冒号(:)。例如,&nbsp;<BR>不论&nbsp;H或&nbsp;h均可符合&lt;Key&gt;H,但只有H&nbsp;才符合&nbsp;:&lt;Key&gt;H。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;就如同对常用的事件型态/细节配对有缩写一般,转译管理器对常用的修&nbsp;<BR>

⌨️ 快捷键说明

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