X windows系统使用指南(十五)
第17章 定制你的键盘和滑鼠 -- 转译
电脑的键盘通常含有一些 "特殊功能" (special function)键,在此有一
些方法来 "制定"(program)这些特殊功能键,使它们能完成特定的功能以适合
你工作的方式。例如,你可以定义一些键来输入那些你常用的命令,或只需按
一个键便能够输入一些程式的片段。
在X中,你能制定的不只是功能键而已,其它一般的键和滑鼠的按钮也都
可制定。对每一个应用程式,你均可指定特别的功能给键盘和滑鼠按钮,或两
者之组合。 (例如在 xedit中你可以结合SHIFT 键和滑鼠的右按钮来让你向前
移动一个单字)。 所有使用X Toolkit的程式均允许使用者利用一个被称之为
键盘转译 (translations) 的设施来执行此种定义,且此种定义藉着正规的
resources 结构传递给应用程式。 (那些不使用X Toolkit的应用程式,同样
地也可以用相同的设施来制定, 但它们需个别的定义所以不能广泛地应用,从
现在起,我们假设每当讨论有关转译的种种,均为对那些使用X Toolkit的应
用程式而言。)
就如同所有的 resources一样,转译是当应用程式执行时才被处置。例如
你可以拥有数个具备不同转译设定的 xedit,在同时一起执行。( 你可以让一
个xedit 适合编辑本文,另一个适合编辑程式码,而另一个适合编辑文书)。
本章讨论转译 -- 包刮它们的定义格式,如何将它们设定到应用程式,和
它们所涵盖功能的范围。我们首先以实例来介绍,逐渐地导引你看到不同的角
度。而後比较正式和详细地讨论转译。最後,我们列出当你使用转译时常会碰
到的错误,并给你一些如何克服这些问题的提示。
17.1 实际使用转译
Toolkit 转译结构最简单的用途便是让你制定你键盘的键。例如,当你使
用xterm 为一个执行一般shell 命令的视窗时,你可能希 定义一些特殊功能
键来输入你常用的命令,且希 指定的关系如下:
当我按下这个键时... 我希 这个字串被输入
F1 rm core *.tmp
利用Toolkit 达到此目的方法为:指定一个值给使用转译的widget中的resources
。此值设定应用程式中所必需的定制 (customisation),且被Toolkit 的 Trans-
lation Manager (转译管理器) 所处理。此 resources属於类别Translation,
且其成员名称几 一定是translations。
在下一节我们将看到设定到resources 中的值的格式。
17.1.1 如何对一个应用程式指定转译
对前述xterm 的例子,我们定义 (在即将被应用程式读入的resource资料
库中或一些resource档案中) 一个规格类似:
xterm*VT100*Translations: (contd.)
F1: string("rm core *.tmp") 注意:不完整!!
其意为在任何类别 VT100的 xterm widget 中,当键 F1 被按下时, 入
字串 "rm core *.tmp")。
不幸的是,并没有这麽简单,转译管理器会把上面的规格解释为 "去掉所
有现存的转译,且加入... " ,所以所有正常的像 " A键是 入一个 A" 这种
系结 (binding)都会消失。为了克服这点,你必需使用一些被称为 directive
(指引)的语法 入在 resource 值之前:
xterm*VT100*Translations: #override(contd.)
F1: string("rm core *.tmp")
电脑的键盘通常含有一些 "特殊功能" (special function)键,在此有一
些方法来 "制定"(program)这些特殊功能键,使它们能完成特定的功能以适合
你工作的方式。例如,你可以定义一些键来输入那些你常用的命令,或只需按
一个键便能够输入一些程式的片段。
在X中,你能制定的不只是功能键而已,其它一般的键和滑鼠的按钮也都
可制定。对每一个应用程式,你均可指定特别的功能给键盘和滑鼠按钮,或两
者之组合。 (例如在 xedit中你可以结合SHIFT 键和滑鼠的右按钮来让你向前
移动一个单字)。 所有使用X Toolkit的程式均允许使用者利用一个被称之为
键盘转译 (translations) 的设施来执行此种定义,且此种定义藉着正规的
resources 结构传递给应用程式。 (那些不使用X Toolkit的应用程式,同样
地也可以用相同的设施来制定, 但它们需个别的定义所以不能广泛地应用,从
现在起,我们假设每当讨论有关转译的种种,均为对那些使用X Toolkit的应
用程式而言。)
就如同所有的 resources一样,转译是当应用程式执行时才被处置。例如
你可以拥有数个具备不同转译设定的 xedit,在同时一起执行。( 你可以让一
个xedit 适合编辑本文,另一个适合编辑程式码,而另一个适合编辑文书)。
本章讨论转译 -- 包刮它们的定义格式,如何将它们设定到应用程式,和
它们所涵盖功能的范围。我们首先以实例来介绍,逐渐地导引你看到不同的角
度。而後比较正式和详细地讨论转译。最後,我们列出当你使用转译时常会碰
到的错误,并给你一些如何克服这些问题的提示。
17.1 实际使用转译
Toolkit 转译结构最简单的用途便是让你制定你键盘的键。例如,当你使
用xterm 为一个执行一般shell 命令的视窗时,你可能希 定义一些特殊功能
键来输入你常用的命令,且希 指定的关系如下:
当我按下这个键时... 我希 这个字串被输入
F1 rm core *.tmp
利用Toolkit 达到此目的方法为:指定一个值给使用转译的widget中的resources
。此值设定应用程式中所必需的定制 (customisation),且被Toolkit 的 Trans-
lation Manager (转译管理器) 所处理。此 resources属於类别Translation,
且其成员名称几 一定是translations。
在下一节我们将看到设定到resources 中的值的格式。
17.1.1 如何对一个应用程式指定转译
对前述xterm 的例子,我们定义 (在即将被应用程式读入的resource资料
库中或一些resource档案中) 一个规格类似:
xterm*VT100*Translations: (contd.)
F1: string("rm core *.tmp") 注意:不完整!!
其意为在任何类别 VT100的 xterm widget 中,当键 F1 被按下时, 入
字串 "rm core *.tmp")。
不幸的是,并没有这麽简单,转译管理器会把上面的规格解释为 "去掉所
有现存的转译,且加入... " ,所以所有正常的像 " A键是 入一个 A" 这种
系结 (binding)都会消失。为了克服这点,你必需使用一些被称为 directive
(指引)的语法 入在 resource 值之前:
xterm*VT100*Translations: #override(contd.)
F1: string("rm core *.tmp")
顶(0)
踩(0)
- 最新评论