快捷搜索:   nginx

X windows系统使用指南(十六)

第18章 键盘和滑鼠 -- 对应和叁数

在前章我们看到了Toolkit 所提供的转译结构,它让你对一个应用程式的个别
成员,定制你的键盘和滑鼠。在本章,我们来看另一种较低层次的定制,它是
由server所管理,称之为对应(mapping) ,你只需要告诉server你的键盘所需
的不同的配置,它就会被每一个连接到你server上的应用程式应用到。例如:
取代通常的QWERTY键盘,你可能希 重新安排键盘以适应那些对键盘并不熟悉
的使用者 (你可能把键盘按ABCDEF... 重新排过,当然键盘按钮上所印的字也
需更改成相符)。你也能对一些Control,Shift等等的修饰键作指定。对滑鼠
按钮,一样有一个相关的对应,可将 "逻辑的" 按钮对应到实际动作。整体而
言,你使用这些键盘和滑鼠的对应的频率,将小於转译。

此外,尚有非常常用的第三种型态的定制可用:你可以设定有关你键盘和
滑鼠各种不同的叁数。例如响铃声音的大小,按下键时是否有滴答声等等。

在本章,我们先描述键盘、滑鼠和修饰键的对应,接下来描述你如何使用
xset程式,来定义类似像键盘有无滴答声的叁数设定。

18.1 键盘和滑鼠对应 -- xmodmap

server本身处理一个层次的定制,它对於所有使用到此server或显示器的应用程
式均发生效用:这就是键盘对应 (keyboard mapping)。

每一个键,有一个单独的码对应它,称之为键码(keycode)。键和键码之间
的关系是绝对固定的。 (粗略来说,你可以说 "键码就是键")。

连接到每一个键码 (或键)的是一个keysym的表列。一个keysym是一个代表
印在键盘符号上的数字常数。在预设的情况,大多数的键只有一个keysym 与之
对应,例如 SHIFT,A,B,Delete,Linefeed等等。keysym既非ASCII或EBCDIC
字元,也非server用以维持keysym和字元的关系。你可以对每一个键有两个
keysym。在预设对应中,有很多连接到两个keysym的键,例如冒号(:) 和分号(;)
,7 和 &等等。对一个键附属的keysym表列中,第一个keysym是未按下修饰键
的状况下的键。第二个keysym是指当SHIFT (或Lock)已被同时按下时的键,如
果在表列中只有一项,且为字母,则系统自动假设第二项为相对的大写字母。
超过两项的keysym并没有特别的意义,键盘和keysym之间的关系被称之为键盘
对应。

尽量地以server处理一般的键和keysyms 。它对键码没有附属意义,且它
自己本身不会使用对应从键码对应至keysyms :它只是传递资讯给client应用
程式。特别的是,server对ASCII 或其它的字元集合 (character sets) 毫无
概念;它只是说明 "某键被按下,某修饰键也同时被按下,keysym表列中某
keysym和某键相关" 。它是client (典型的使用标准的X Library) 对keysym
和修饰键附属的意义:例如,它决定如果keysym产生时ctrl也被按下,它必需
被解释为ASCII 字元 hex 0x1,也就是说ctl-A。 特定的client可以决定特殊
的修饰键的意义;例如在xterm 中,当你和MTEA键同时按下一个键,程式将此
转换为ESC 後面跟随着被按下的字元。 (也就是说,如果你按下meta-A,实际
上会产生两个字元 ASCII 0x1b, ASCII 0x41)。

server在此领域内提供一个额外的设施。你可以定义让server将键码解释
成修饰键,例如 "当键码为若干的键被按下时,它相同於CONTROL修饰键被实际
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论