理解FreeBSD中的图形界面X系统( 二 )


焦点策略: 窗口管理器的另一个特性是鼠标的 “focus policy 。每个窗口系统都需要有一个选择窗口的方法来接受键盘的输入信息,以及当前哪个窗口处于可用状态 。您通常比较熟悉的是一个叫做 “click-to-focus 的焦点策略 。这是 Microsoft Windows 使用的典型焦点策略,也就是您在一个窗口上点击 一下鼠标,这个窗口就处于当前可用的状态 。X 不支持一些特殊的焦点策略 。而是,窗口管理器控制着在什么时候哪个窗口拥有焦点 。不同的窗口管理器支持不同的焦点方案 。它们都支持点击即获得焦点,而且它们中的大多数都支持好几种方案 。最流行的焦点策略: focus-follows-mouse, 鼠标指示器下面的窗口就是获得焦点的窗口 。这可以不是位于其他所有窗口顶部的窗口 。您可以通过将鼠标移到另一个窗口就可以来改变焦点,您不需要在它上面点击 。sloppy-focus, 这种方式是对 focus-follows-mouse 策略的一个小小扩展 。对于 focus-follows-mouse,如果您把鼠标移到了根窗口(或桌面背景)上,则所有的其它窗口都会失去焦点,而相关的全部键盘输入也会丢失 。对于 sloppy-focus,只有当指针在键入一个新窗口时,窗口焦点才会发生变化,当退出当前窗口时是不会变化的 。click-to-focus, 当前窗口由鼠标点击来选择 。窗口被“突出显示,出现在所有其他窗口的前面 。即使指针被移向了另一个窗口,所有的键盘输入仍会被这个窗口接收 。许多窗口管理器支持其他的策略,与这些相比又有些变化 。您可以看具体窗口管理器的文档 。
提供工具而非策略的X方法:使得在每个应用程序屏幕上看到的窗口部件得到了 大大的扩展 。“Widget 只是针对用户接口中所有列举项目的一个术语,它可以用某种方法来点击或操作;如按钮,复选框,单选按钮,图标,列表框等等 。Microsoft Windows 把这些叫做“控件 。Microsoft Windows 和苹果公司的 Mac OS 都有一个严格的窗口部件策略 。应用程序开发者被建议确保他们的应用程序共享一个普通的所见即所得的用户界面 。对于 X,它并不要求一个特殊的图形风格或一套相结合的窗口部件集 。这样的结果是您不能期望 X 应用程序只拥有一个普通的所见即所得的界面 。有很多的流行的窗口部件集设置,包括来自于 MIT 的 Athena,Motif?(模仿 Microsoft Windows 的窗口风格,所有部件都具有斜边和3种灰色度),OpenLook,和其他一些窗口部件集 。如今,绝大多数比较新的 X 应用程序将使用一组新式的窗口设计,包括 KDE 所使用的 Qt,以及 GNOME 所使用的 GTK。在这样一种窗口系统下,UNIX 桌面的一些所见即所得特性作了一些收敛,以使初学者感到更容易一些 。

推荐阅读