📄 00000006.htm
字号:
xterm 会确定这些转译是以xrdb自资料库载入或是在一个resource档案中,并 <BR>加以处理。现在当你启始xterm,用滑鼠 "剪"取你所需的工作的档案名称。接 <BR>下来,便可按F3键编辑它,按F4键预视它,和按F5键在硬拷贝上排版它。 <BR> <BR>更多的widget作用□例 -- xbiff <BR> <BR>查阅xbiff 的指南页:在ACTIONS 的标题下,你将看到Mailbox widget所支援 <BR>作用的名单。它惟一预设的转译为当你按下任何按钮时降下信件 (mail)的旗帜 <BR>(flag)(作用unset())。我们将设定转译让你以键盘来运用这些作用,将这些作 <BR>用对应到 "?" 和 "UP" "DOWN"两个方向键如下: <BR> <BR> ? check() 有新的信件吗? <BR> UP set() 升起信件的旗帜 <BR> DOWN unset() 降下信件的旗帜 <BR> <BR>以下是相关的转译表: <BR> <BR> xbiff*Mailbox*Translations: #override\n\ <BR> <Key>?: check()\n\ <BR> <Key>Down: unset()\n\ <BR> <Key>Up: set() <BR> <BR>以此测试之:用xrdb从你的resource资料库载入这些设定,然後启动xbiff , <BR>将指标移到视窗内。重复地按下Up和Down游标控制键以升起和降下信件旗 <BR>帜。 <BR> <BR>找出有哪些作用被提供 <BR> <BR>你对widget作用将和widget名称遭遇相同的问题:如何找出某个widget到底提 <BR>供哪些作用以及它们能做些什麽?同样地,没有一个完美的解答,但有一个合 <BR>理的方法来处理: <BR> <BR> 1. 查看应用程式的指南页。大多数的应用程式有它们自己专门的作用文件 <BR> 。例如:xbiff 有一节叫做ACTION,而xterm 有两节关於转译和作用的 <BR> 文件 -- KEY TRANSLATIONS 和 KEY/BUTTON BINDING。 <BR> <BR> 2. 最初的指南页可能给你提示,或甚至直接告诉你它用到何种widget的类 <BR> 别,所以你可以查看它的widget set文件中的特定的widget。(在 core <BR> 版中惟一的widget set为Athena,所以你在此不易出错)。即使指南页未 <BR> 告诉你widget的类别,当你对系统熟悉之後,你将对一个widget是否为 <BR> 标准型态较具有概念,如果还是不行 ... <BR> <BR> 3. 查看程式的原始码,看看用到什麽widget的类别,以及widget提供了哪 <BR> 些作用。 <BR> <BR>17.1.3 转译系结作用到一序列事件,不只是单一键 <BR> <BR>我们已经看到转译让你设定插入,转译结构也能让你系结这些作用:它可以是 <BR>单一的键,或是一序列的键,或者是事实上一序列任何的X事件。 <BR> <BR> 让我们继续以xbiff 为例,看看如何转译一序列的键盘字元。例如我们定 <BR> 义字元字串的转译如下: <BR> <BR> look check() <BR> raise set() <BR> lower unset() <BR> <BR>以下为相关的转译表: <BR> <BR> xbiff*Mailbox*Translation: #override\n\ <BR> <Key>l,<Key>o,<Key>o,<Key>k: check()\n\ <BR> <Key>r,<Key>a,<Key>i,<Key>s,<Key>e: set() <BR> <Key>l,<Key>o,<Key>w,<Key>e,<Key>r: unset() <BR> <BR>以此测试之 -- 载入设定和启动xbiff ,将指标移到视窗内。现在你可藉 <BR>著输入完整的字串来升起和降下旗帜。例如键入五个字元 r, a, i, s, e以升 <BR>起旗帜。对xbiff 的两个表有几点值得说明: <BR> <BR> . 键的名称可以用不同的方式指定。正常的印出字元直接指定 (如"<Key>w") <BR> , 其它的字元则拼出全名(如"<Key>Down").附录A "文件指引" 告诉你 <BR> 在何处可查到键的名称,但在本节下面有更简单的方法。 <BR> <BR> . 对字元字串,你必需一一指定,并以逗点分开 <BR> (如"<Key>l,<Key>o,<Key>o,<Key>k"). <BR> <BR> . 转译可允许相同开头的键,例如 "look" 和 "lower" 均拥有相同的开头 <BR> "lo",对转译管理器不会形成问题。 <BR> <BR>找出键的名称 <BR> <BR>找出转译所需的键的名称,最简单的方法为执行xev ,将指标移到视窗内,按 <BR>下你所需的键,则键的名称会出现在括弧内字串keysym和一个十六进位数之後 <BR>。例如在xev 的视窗内按下游标控制键DOWN,它的输出如图17 - 1,在其中你 <BR>会看到 <BR> <BR> (keysym 0xff54, Down) <BR> <BR>也就是说,键的名称为Down。 <BR> <BR> ┌————————————————┐ <BR> │ P209. fig 17 - 1 │ <BR> │ │ <BR> │ │ <BR> │ │ <BR> │ 图 17 - 1 xev 显示键名称的输出 │ <BR> └————————————————┘ <BR> <BR>你可以在转译中使用任何型态的事件 <BR> <BR>到目前为止,我们所写的转译都是系结作用到一个按下的键盘字元。但我们曾 <BR>说过,转译结构可系结作用到任何事件,而不只於按下键盘而已。可能的事件 <BR>型态非常的多,在此我们只提及一小部份: <BR> <BR> 型态 意义 <BR> <BR> <Key> 按下一个键 <BR> <KeyDown> 按下一个键 (只是另一个名称) <BR> <KeyUp> 放松一个键 <BR> <BtnDown> 按下一个滑鼠按钮 <BR> <BtnUp> 放松一个滑鼠按钮 <BR> <Enter> 指标进入视窗内 <BR> <Leave> 指标移出视窗外 <BR> <BR>我们已经使用过按下一个键的事件,让我们系结xbiff 作用到滑鼠按钮以取代之: <BR> <BR> xbiff*Mailbox*Translations: #override\n\ <BR> <BtnDown>Button1: unset()\n\ <BR> <BtnDown>Button2: check()\n\ <BR> <BtnDown>Button3: set() <BR> <BR>你可以看到语法和前面相似:你先给定一般性的事件型态 (例如 <Key> 或 <BR><BtnDown>),其後跟著你所需事件的事件细节部份 (例如s 和Button3) ( <BR>Button 1, 2, 3分别对应到左、中、右按钮) <BR> <BR>对一序列的事件的转译 <BR> <BR>就如同我们定义了一序列按下键事件的转译(set,unset和check),我们当然 <BR>也可以定义一序列的滑鼠事件。事实上你转译的一序列的事件可以任意组合在 <BR>一起,你可以在一个转译的左边随意混合事件的型态。所以你可以定义如下的 <BR>转译表: <BR> <BR> xbiff*Mailbox*Translations: #override\n\ <BR> <BtnDown>Button1, <Key>?, <BtnDown>Button3: check()\n\ <BR> <BtnDown>Button1: <Key>u, <BtnDown>Button3: unset()\n\ <BR> <BtnDown>Button1: <Key>s, <BtnDown>Button3: set() <BR> <BR>也就是说,用到check(),你必需依序先按下按钮1 (左按钮),然後按下"?" <BR>键 ,最後按下按钮3 (右按钮)。 这个□例并不是很好,但对於一些危险或不 <BR>可取消 (irreversible) 的作用 (例如删除一个档案,或是覆写一个缓冲区的 <BR>内容) ,你可以依照这种方式来使用转译。你需要使用一个非常谨慎的命令序 <BR>列,才能用到此作用,这样使得使用者不可能因意外而输入此命令。 <BR> <BR>使用非键盘和非滑鼠事件的转译 <BR> <BR>通常你是对按下或放松滑鼠按钮或键盘的键定义转译。但我们曾经说过,你可 <BR>以对任何事件设定转译,例如指标移入或移出一个widget的视窗。让我们以 <BR>xman的主选项视窗 (图10 - 3) 为□例来解释它。这是一个相当人为的□例, <BR>因为它没有任何用途。但无论如何,它很容易被看出在做些什麽操作。 <BR> <BR>查看xman的指南页,在X DEFAULTS标题下,你将看到概括的xman所用到的widget <BR>的名称和类别:主选择项视窗widget的名称叫topBox,类别名为Command。这 <BR>是一个好的猜测,因为在选单操作盒的方法。我们可用第15章所提过的技巧 <BR>来确认它,使用以下的命令: <BR> <BR> xman -xrm "*Command*backgroundPixmap: scales" <BR> <BR>且所有的Command widget将会有鱼鳞状的背景)。 <BR> <BR>这和我们先前的□例有一个重要的不同:我们所用到的作用不是由特定的应用 <BR>程式指定,而是由标准的widget提供 (本例中为Command widget,在 "X <BR>Toolkit Athena Widget"使用手册中有描述)。 <BR> <BR> 在我们定义任何东西之前,先来看一看此widget预设的功用,以便我们能 <BR>够了解有些什麽事发生和有哪些widget的作用会做。启动xman,移动指标进入 <BR> Help 盒,你会看到盒的外框变成高亮度 -- 这是highlight() 在作用。将指 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -