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

📄 00000006.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第17章&nbsp;&nbsp;定制你的键盘和滑鼠&nbsp;--&nbsp;转译&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;电脑的键盘通常含有一些&nbsp;&quot;特殊功能&quot;&nbsp;(special&nbsp;function)键,在此有一&nbsp;<BR>些方法来&nbsp;&quot;制定&quot;(program)这些特殊功能键,使它们能完成特定的功能以适合&nbsp;<BR>你工作的方式。例如,你可以定义一些键来输入那些你常用的命令,或只需按&nbsp;<BR>一个键便能够输入一些程式的片段。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在X中,你能制定的不只是功能键而已,其它一般的键和滑鼠的按钮也都&nbsp;<BR>可制定。对每一个应用程式,你均可指定特别的功能给键盘和滑鼠按钮,或两&nbsp;<BR>者之组合。&nbsp;(例如在&nbsp;xedit中你可以结合SHIFT&nbsp;键和滑鼠的右按钮来让你向前&nbsp;<BR>移动一个单字)。&nbsp;所有使用X&nbsp;Toolkit的程式均允许使用者利用一个被称之为&nbsp;<BR>键盘转译&nbsp;(translations)&nbsp;的设施来执行此种定义,且此种定义藉著正规的&nbsp;<BR>resources&nbsp;结构传递给应用程式。&nbsp;(那些不使用X&nbsp;Toolkit的应用程式,同样&nbsp;<BR>地也可以用相同的设施来制定,&nbsp;但它们需个别的定义所以不能广泛地应用,从&nbsp;<BR>现在起,我们假设每当讨论有关转译的种种,均为对那些使用X&nbsp;Toolkit的应&nbsp;<BR>用程式而言。)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;就如同所有的&nbsp;resources一样,转译是当应用程式执行时才被处置。例如&nbsp;<BR>你可以拥有数个具备不同转译设定的&nbsp;xedit,在同时一起执行。(&nbsp;你可以让一&nbsp;<BR>个xedit&nbsp;适合编辑本文,另一个适合编辑程式码,而另一个适合编辑文书)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;本章讨论转译&nbsp;--&nbsp;包刮它们的定义格式,如何将它们设定到应用程式,和&nbsp;<BR>它们所涵盖功能的□围。我们首先以实例来介绍,逐渐地导引你看到不同的角&nbsp;<BR>度。而後比较正式和详细地讨论转译。最後,我们列出当你使用转译时常会碰&nbsp;<BR>到的错误,并给你一些如何克服这些问题的提示。&nbsp;<BR>&nbsp;<BR>17.1&nbsp;实际使用转译&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Toolkit&nbsp;转译结构最简单的用途便是让你制定你键盘的键。例如,当你使&nbsp;<BR>用xterm&nbsp;为一个执行一般shell&nbsp;命令的视窗时,你可能希望定义一些特殊功能&nbsp;<BR>键来输入你常用的命令,且希望指定的关系如下:&nbsp;<BR>&nbsp;<BR>&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;F1&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;rm&nbsp;core&nbsp;*.tmp&nbsp;&lt;newline&gt;&nbsp;<BR>&nbsp;<BR>利用Toolkit&nbsp;达到此目的方法为:指定一个值给使用转译的widget中的resources&nbsp;<BR>。此值设定应用程式中所必需的定制&nbsp;(customisation),且被Toolkit&nbsp;的&nbsp;Trans-&nbsp;<BR>lation&nbsp;Manager&nbsp;(转译管理器)&nbsp;所处理。此&nbsp;resources属於类别Translation,&nbsp;<BR>且其成员名称几乎一定是translations。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在下一节我们将看到设定到resources&nbsp;中的值的格式。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;17.1.1&nbsp;如何对一个应用程式指定转译&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;对前述xterm&nbsp;的例子,我们定义&nbsp;(在即将被应用程式读入的resource资料&nbsp;<BR>库中或一些resource档案中)&nbsp;一个规格类似:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;xterm*VT100*Translations:&nbsp;(contd.)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;F1:&nbsp;string(&quot;rm&nbsp;core&nbsp;*.tmp&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意:不完整!!&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;其意为在任何类别&nbsp;VT100的&nbsp;xterm&nbsp;widget&nbsp;中,当键&nbsp;F1&nbsp;被按下时,插入&nbsp;<BR>字串&nbsp;&quot;rm&nbsp;core&nbsp;*.tmp&quot;)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;不幸的是,并没有这麽简单,转译管理器会把上面的规格解释为&nbsp;&quot;去掉所&nbsp;<BR>有现存的转译,且加入...&nbsp;&quot;&nbsp;,所以所有正常的像&nbsp;&quot;&nbsp;A键是插入一个&nbsp;A&quot;&nbsp;这种&nbsp;<BR>系结&nbsp;(binding)都会消失。为了克服这点,你必需使用一些被称为&nbsp;directive&nbsp;<BR>(指引)的语法插入在&nbsp;resource&nbsp;值之前:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xterm*VT100*Translations:&nbsp;#override(contd.)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;F1:&nbsp;string(&quot;rm&nbsp;core&nbsp;*.tmp&quot;)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;通常你会希望保持大部份现存的系结,而只是把你明确指定的值覆盖上去&nbsp;<BR>,所以你一般都是在你的转译表中,指定&nbsp;#override。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;现在这个规格可以开始工作了,藉著启始一个&nbsp;xterm且把此规格&nbsp;(在两个&nbsp;<BR>单引号&nbsp;(')中间的部份)&nbsp;当成选项&nbsp;-xrm&nbsp;的引数来测试它:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;xterm&nbsp;-xrm&nbsp;'xterm*VT100*Translations:&nbsp;...&nbsp;等等'&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;按下特殊功能键&nbsp;F1,你将看到指定的字串成功的插入,但并未包含新列字元&nbsp;<BR>(newline)&nbsp;,你可以用一点语法的技巧来克服它,像:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xterm*VT100*Translations:&nbsp;#override(contd.)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;F1:&nbsp;string(&quot;rm&nbsp;core&nbsp;*.tmp&quot;)string(0xd)&nbsp;<BR>&nbsp;<BR>这解释了以下两点:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;1.&nbsp;&nbsp;string()的作用和它的引数相关。你可以直接输入本文&nbsp;(例如&nbsp;string(lpq))&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,但如果本文包含空白或非字母字元,则必需在本文前後加上双引号。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果引数是以&nbsp;&quot;0X&quot;&nbsp;开头,则将其後解释为十六进位,并插入相对的&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASCII&nbsp;字元。(例如,0xd是RETURN)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;2.&nbsp;&nbsp;在你指定此功能时可结合一个以上的作用,在上例,我们用到&nbsp;string()&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作用两次,如果我们知道其它的作用,我们也一样可以系结起来。&nbsp;<BR>&nbsp;<BR>定义许多的转译在一起&nbsp;<BR>&nbsp;<BR>你可以根据需求在一个表中定义许多的转译。假设,我们在前面的转译中增加&nbsp;<BR>系结:&nbsp;<BR>&nbsp;<BR>&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;F2&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;lpq-Plpa3&nbsp;&lt;newline&gt;&nbsp;<BR>&nbsp;<BR>对此的转译为:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;F2:&nbsp;string(&quot;lpq-Plpa3&quot;)string(0xd)&nbsp;<BR>&nbsp;<BR>所以可以将本列加入前面的表中。但是转译管理器的格式规则告诉我们必需将&nbsp;<BR>两个转译以&nbsp;&quot;\n&quot;&nbsp;分开且独立成为一列:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xterm*VT100*Translations:&nbsp;#override(contd.)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;F1:&nbsp;string(&quot;rm&nbsp;core&nbsp;*.tmp&quot;)sting(0xd)&nbsp;\n(cond.)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;F2:&nbsp;string(&quot;lpq-Plpa3&quot;)string(0xd)&nbsp;<BR>&nbsp;<BR>以上的形式将造成管理上的困难,你可以藉著包含&nbsp;&quot;隐藏的新列字元&quot;&nbsp;来使它&nbsp;<BR>具可读性一些:&nbsp;(新列字元以倒斜线&nbsp;&quot;\&quot;处理)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xterm*VT100*Translations:&nbsp;#override\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;F1:&nbsp;string(&quot;rm&nbsp;core&nbsp;*.tmp&quot;)sting(0xd)\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Key&gt;F2:&nbsp;string(&quot;lpq-Plpa3&quot;)string(0xd)&nbsp;<BR>&nbsp;<BR>你可以放置任意多个你所需的&nbsp;&quot;隐藏的新列字元&quot;&nbsp;,&nbsp;且几乎在任何地方均可,&nbsp;<BR>它们只是被忽略而已。&nbsp;(只要和转译管理器相关,甚至你每隔一个单字便使用&nbsp;<BR>一个也没关系。但千万不要在一个规格的&nbsp;resource&nbsp;特徵部份使用它们,它们&nbsp;<BR>无法被resource&nbsp;manager解释,也没有相同的效果。)&nbsp;如果你感觉有些混淆,&nbsp;<BR>不用担心。简单地说,resource结构需要的是要在一列中的一个resource规格&nbsp;<BR>的&nbsp;&quot;值&quot;&nbsp;的部份,而转译管理器以分开的列来分开&nbsp;(也就是以\n终结),而使用&nbsp;<BR>者刚好以每一个实际分开的列代表一个意义以增加可读性,所以规则很简单:&nbsp;<BR>在除了最後一列的每一个转译列均加上一个&nbsp;&quot;\n\&quot;。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;17.1.2&nbsp;转译可系结许多型式的作用&nbsp;<BR>&nbsp;<BR>上述的&nbsp;xterm□例,展示了如何能够当你按下一个键时,插入任意的字串。但&nbsp;<BR>转译结构的功能比这更多&nbsp;--&nbsp;它可以系结任何widget所提供的作用到按键,让&nbsp;<BR>我们详细一点地看一下这些作用。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;前述的例子,我们在&nbsp;xterm的&nbsp;VT100&nbsp;widget完成了键F1和F2在&nbsp;string()&nbsp;<BR>上的对应。我们将仍以&nbsp;xterm为例,说明更多的作用。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;查阅xterm&nbsp;的指南页,在标题KEY&nbsp;TRANSLATIONS&nbsp;和&nbsp;KEY/BUTTON&nbsp;BINDINGS&nbsp;<BR>你将发现列有数个作用。我们将定义一个转译对应键F3到insert-selection()&nbsp;<BR>作用之上,所以我们可以用键盘来取代滑鼠,将先前&nbsp;&quot;剪&quot;下的本文&nbsp;&quot;贴&quot;出。&nbsp;<BR>指南页告诉我们此作用需要一个引数,从列出的预设系结,我们可以看出预设&nbsp;<BR>的&nbsp;&quot;剪贴&quot;&nbsp;结构为使用&nbsp;CUT_BUFFER0,&nbsp;所以我们将CUT_BUFFER0当作引数。我们&nbsp;<BR>的resource规格是:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xterm*VT100*Translations:&nbsp;#override\n\&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;F3:&nbsp;insert-selection(CUT_BUFFER0)&nbsp;<BR>&nbsp;<BR>到目前为止,这只是一点小小的便利。然而,假定说你花了许多时间在本文文&nbsp;<BR>件上工作,你用&nbsp;tbl格式化,你用&nbsp;nroff在萤幕上预视&nbsp;(preview)它们,用&nbsp;<BR>troff&nbsp;排版,且将输出送到你的一个用过滤器&nbsp;(filter)&nbsp;为tr2printer的印表&nbsp;<BR>机上。设定转译为:&nbsp;<BR>&nbsp;&nbsp;xterm*VT100*Translations:&nbsp;#override\n\&nbsp;<BR>&nbsp;&nbsp;&lt;key&gt;F3:&nbsp;string(&quot;ed&quot;)&nbsp;insert-selection(CUT_BUFFER0)\&nbsp;<BR>&nbsp;&nbsp;string(0xd)\n\&nbsp;<BR>&nbsp;&nbsp;&lt;key&gt;F4:&nbsp;string(&quot;tbl&quot;)&nbsp;insert-selection(CUT_BUFFER0)\&nbsp;<BR>&nbsp;&nbsp;string(&quot;|&nbsp;nroff&nbsp;-man&quot;)&nbsp;string(0xd)\n\&nbsp;<BR>&nbsp;&nbsp;&lt;key&gt;F5:&nbsp;string(&quot;tbl&quot;)&nbsp;insert-selection(CUT_BUFFER0)\&nbsp;<BR>&nbsp;&nbsp;string(&quot;|&nbsp;troff&nbsp;-man&nbsp;-t&nbsp;|&nbsp;tr2printer&quot;)&nbsp;string(0dx)&nbsp;<BR>&nbsp;<BR>

⌨️ 快捷键说明

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