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