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

📄 00000006.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
标移出,盒的外框恢复正常&nbsp;--&nbsp;这是unhighlight()&nbsp;作用。将指标再度移入&nbsp;<BR>&nbsp;Help&nbsp;盒,按下一个滑鼠按钮,保持按住不放。则盒内的色彩反转&nbsp;(盒内的文&nbsp;<BR>字变成预设的背景色,而原来视窗的背景变成视窗的前景色)。--&nbsp;这是set()&nbsp;<BR>在作用。继续保持按住滑鼠按钮,将指标移出视窗外,盒内色彩恢复正常&nbsp;--&nbsp;<BR>这是reset()&nbsp;在作用。一个正常&nbsp;&quot;碰触一下&quot;&nbsp;(clicking&nbsp;on)&nbsp;Help盒的次序为:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;&nbsp;移动指标进入盒中:highlight()将外框变为高亮度。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;&nbsp;按下按钮:set()&nbsp;反转盒中的色彩。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;&nbsp;松开按钮:notify()开始作用,造成程式建立求助视窗(help&nbsp;window)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;。在进行中时,盒的色彩保持反相。当视窗建立完成之後,reset()反&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;转盒内的色彩为正常,但外框仍保持高亮度。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;将指标移出视窗:unhighlight()将外框恢复正常。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;现在你了解了有哪些作用,我们将定义一些转译来改变原先进出视窗的作&nbsp;<BR>用:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*Command*translations:&nbsp;#override\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;EnterWindow&gt;:&nbsp;reset()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;LeaveWindow&gt;:&nbsp;set()&nbsp;<BR>&nbsp;<BR>用这个奇怪的转译表,当你一开始移动指标进入盒中,什麽事也不会发生,但&nbsp;<BR>当你移出指标时,色彩会反转。如果你再度移动指标进入盒中,色彩会变回正&nbsp;<BR>常。其它的作用和前述相同。&nbsp;<BR>&nbsp;<BR>使用修饰键来修饰事件规格&nbsp;<BR>&nbsp;<BR>有时你指定的转译希望能同时按下一或多个修饰键&nbsp;(modifiers)&nbsp;,例如你要系&nbsp;<BR>结一个作用到和META键同&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;&nbsp;松开按钮:notify()开始作用,造成程式建立求助视窗(help&nbsp;window)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;。在进行中时,盒的色彩保持反相。当视窗建立完成之後,reset()反&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;转盒内的色彩为正常,但外框仍保持高亮度。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;将指标移出视窗:unhighlight()将外框恢复正常。&nbsp;<BR>例如在xterm&nbsp;中,定义meta-i为&nbsp;&quot;贴&quot;&nbsp;上一次&nbsp;&quot;剪&quot;&nbsp;的本文,使用:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*VT100*Translations:&nbsp;#override\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Meta&nbsp;&lt;Key&gt;i:&nbsp;insert-selection(PRIMARY,&nbsp;CUT_BUFFER0)&nbsp;<BR>&nbsp;<BR>因为这种修饰键/事件型态的组合十分常见,转译管理器允许使用一种缩写的&nbsp;<BR>形式。相等於上面第二列的写法为:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Meta&gt;i:&nbsp;insert-selection(PRIMARY,&nbsp;CUT_BUFFER0)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;我们可以对滑鼠事件做同样的处理。让我们对xedit&nbsp;定义转译,使得使用&nbsp;<BR>滑鼠可以在本文上方便地移动,我们首先的尝试如下:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*Text*Translation:&nbsp;#override\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Shift&nbsp;&lt;Btn1Down&gt;:&nbsp;forward-character()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Shift&nbsp;&lt;Btn2Down&gt;:&nbsp;forward-word()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Shift&nbsp;&lt;Btn3Down&gt;:&nbsp;next-line()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Ctrl&nbsp;&lt;Btn1Down&gt;:&nbsp;backward-character()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Ctrl&nbsp;&lt;Btn2Down&gt;:&nbsp;backward-word()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Ctrl&nbsp;&lt;Btn3Down&gt;:&nbsp;previous-line()&nbsp;<BR>如果你测试它,奇怪的现象会发生&nbsp;--&nbsp;游标好像会自行其是,而且本文的片段&nbsp;<BR>会一下子被选择,一下子又取消选择。发生这种现象的原因是Text&nbsp;widget&nbsp;的&nbsp;<BR>预设系结仍然会作用,它包含的转译像:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Btn1Up&gt;:&nbsp;extend-end(PRIMARY,&nbsp;CUT_BUFFER0)&nbsp;<BR>&nbsp;<BR>你可能认为这不会影响你,因为当你松开按钮时你总是按著SHIFT&nbsp;键或CTRL键&nbsp;<BR>。但事实上会作用:转译管理器对於你未定义的修饰键解释为你不在乎它们的&nbsp;<BR>影响,所以松开Button1&nbsp;时会对应到上述的规格。为了克服这点,我们对那些&nbsp;<BR>可能不小心便会发生的按钮松开事件定义转译,并系结到一个空&nbsp;(null)&nbsp;作用&nbsp;<BR>。这些转译当被对应到时会盖掉预设的转译。对使用Text&nbsp;widget&nbsp;我们需再增&nbsp;<BR>加两列,才是一个完整的转译表:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*Text*Translation:&nbsp;#override\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Shift&nbsp;&lt;Btn1Down&gt;:&nbsp;forward-character()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Shift&nbsp;&lt;Btn2Down&gt;:&nbsp;forward-word()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Shift&nbsp;&lt;Btn3Down&gt;:&nbsp;next-line()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Ctrl&nbsp;&lt;Btn1Down&gt;:&nbsp;backward-character()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Ctrl&nbsp;&lt;Btn2Down&gt;:&nbsp;backward-word()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Ctrl&nbsp;&lt;Btn3Down&gt;:&nbsp;previous-line()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Shift&nbsp;&lt;BtnUp&gt;:&nbsp;do-nothing()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Ctrl&nbsp;&lt;BtnUp&gt;:&nbsp;do-nothing()&nbsp;<BR>&nbsp;<BR>这解释了下列几点:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.我们对滑鼠事件使用了缩写的语法,也就是先前的语法像&lt;BtnDown&gt;Button1&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以&lt;Btn1Down&gt;取代。转译管理器容许一些缩写的语法存在。&nbsp;(我们在前&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;面看到的&nbsp;&lt;Meta&gt;&nbsp;也是一例)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.我们用&nbsp;do-nothing()&nbsp;当作一个哑&nbsp;(dummy)作用,就好像它是列在Text&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;widget的文件中一般。事实上这个作用是不存在的,因此会导致错误的&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;讯息出现,但因为我们本来就是要用它来什麽事也不做的,所以无需介&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;意。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.对於我们方才指定的哑作用,我们用了一个事件&nbsp;&lt;BtnUp&gt;便代表了三个&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;按钮。相同地,转译管理器把从缺的修饰规格的解释为&nbsp;&quot;对任何&quot;,在一&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;个事件中缺少细节部份&nbsp;(例如在规格&quot;&lt;BtnUp&gt;Button1&quot;中&quot;Button1&quot;的部&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;份)&nbsp;解释为&nbsp;&quot;对任何所有的细节部份&quot;。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这点在转译中有一个非常常用的形式为:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;:&nbsp;...&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为缺少细节部份,所以可被用於所有按下键&nbsp;(key-press)事件,也就&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是对所有的键。事实上在Text&nbsp;widget&nbsp;上有一个预设的转译为:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;:&nbsp;insert-char()&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert-char()作用的功能为当一个键被按下时,插入相对应的ASCII字&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;元。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;17.1.4&nbsp;复合的转译表及□例&nbsp;<BR>&nbsp;<BR>到目前为止,我们把所有的转译均应用於整体的widget类别。但你能对个别的&nbsp;<BR>widget指定转译,就如同resource一般。在此我们将对xman定义更多的转译。&nbsp;<BR>我们将对Help盒widget&nbsp;(对应作用到助忆(mnemonic)字元)只用到键盘事件,对&nbsp;<BR>Quit盒只用到视窗事件。为了达到此点,我们将对转译应用到的widget&nbsp;给予明&nbsp;<BR>确的名称。我们的转译表如下:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*Help*translations:&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;h:&nbsp;highlight()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;u:&nbsp;unhighlight()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;n:&nbsp;notify()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;s:&nbsp;set()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;r:&nbsp;reset()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;LineFeed:&nbsp;set()&nbsp;notify()&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Quit*translations:&nbsp;#override\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;EnterWindow&gt;:&nbsp;reset()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;LeaveWindaw&gt;:&nbsp;set()&nbsp;<BR>&nbsp;<BR>有几点特别的语法需要注意:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.在此我们对相同类别中不同的widget指定不同的转译,所以我们需要知&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;道成员&nbsp;(instance)&nbsp;名称。不幸的是,这些成员名称&nbsp;(Help,Quit,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Manual&nbsp;Page)并不明显。如果它们在文件中找不到&nbsp;(本例即找不到),那&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你只能用猜的或是去查看原始程式了。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.对於Help,我们省略了常用的#override,因为我们对此widget不需要考&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;#override,我们将这个转译规格移至第一列。(如果不这麽作&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,而且对第一列仍以\n\&nbsp;作结束,我们将得到错误:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X&nbsp;Toolkit&nbsp;Warning:&nbsp;translation&nbsp;table&nbsp;syntax&nbsp;er-&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ror:&nbsp;Missing&nbsp;':'&nbsp;after&nbsp;event&nbsp;sequence.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X&nbsp;Toolkit&nbsp;Warning:&nbsp;...&nbsp;found&nbsp;while&nbsp;parsing&nbsp;''&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为\n是用来区隔转译规格或类似像&nbsp;#override&nbsp;指令的)。而将此列和&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一个规格以隐藏的新列字元区隔,就如同:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*Help*translations:&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;h:&nbsp;highlight()\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.对LineFeed那一列的转译,包含了复合的作用,和前面xterm&nbsp;中复合的&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string()作用类似。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;我们已大致涵盖了你所常用的转译。基本的概念很简单,生成它们的结构&nbsp;<BR>也不复杂,但它们非常的令人迷惑。原因是它是一个发展中的糸统,随著发行&nbsp;<BR>版本所附的文件并不是很多。下一节重复本节所述的,本节均以例子来介绍观&nbsp;<BR>念,下一节我们将对转译的规则,作比较正式的描述。&nbsp;<BR>&nbsp;<BR>17.2&nbsp;转译&nbsp;--&nbsp;格式和规则&nbsp;<BR>&nbsp;<BR>转译是一个由Toolkit&nbsp;提供的一般性结构,它让使用者指定当某些特定的事件&nbsp;<BR>由widget接收到时,一个widget应完成何种作用。Toolkit&nbsp;中处理转译的部份&nbsp;<BR>被称之为转译管理器。&nbsp;<BR>

⌨️ 快捷键说明

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