分享
 
 
 

XWindow系统使用指南--第18章键盘和滑鼠--对应和参数

王朝system·作者佚名  2008-05-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修饰键被实际

按下"。这种定义并不互斥:如果你定义键F7为Shift 修饰键,它并不会影响任

何现存的修饰键。此种设施称之为修饰键对应 (modifier mapping)。X提供八

个修饰键:Shift、Lock(caps-lock)、Control、Mod1到Mod5。习惯上,Mod1被

解释为Meta。

最後,对滑鼠按钮有一个类似的指标对应 (pointer mapping)。对每一个

实际的按钮,你可以对它们指定一个相关的逻辑按钮数字。

实际上,如果你改变你的键盘或滑鼠的对应,你相当於是说制造厂商对你

的输入装置配置不当,你将把它修正为适合你所需要的。当然,如果你改变了

对应,你应该把对应键上面所印的符号也随之修改;不过,通常更改的都是一

些控制和修饰键,所以就不是那麽需要了。换句话说,如果你改变了对应,使

得键盘配置和一个特定国家标准 (例如:法国或德国) 相符,你必需更换实际

键盘上的符号。

你可以预期得到,改变键盘对应是一件相当稀罕的事,你可能设定它一次

之後就不再改变它。在以下几节,我们将很快的看一看如何使用程式xmodmap

,查看现有的对应和修改它们。

18.1.1 查看现有的对应

你使用xmodmap 来列出现有的对应,就如同改变它们一样。你可以指定不同的

命令列选项,来选择想要印出的不同的对应:

列出现有键的对应:指定 -pk选项。

列出现有修饰键的对应:指定 -pm选项 (或是什麽选项也不选,因为这是

xmodmap的预设作用)。

列出现有指标 (按钮)的对应:指定 -pp选项。

例如,将所有的对应一起印出,使用命令:

xmodmap -pm -pk -pp

列出键、修饰键、指标的对应之□例如图18 - 1,18 - 2,18 - 3。(键对应只

有列出一部份,因为完整的对应实在太长了。)

┌————————————————————┐

│ p228 fig 18.1 │

│ │

│ 图18-1 列出键盘对应的□例 │

└————————————————————┘

┌————————————————————┐

│ p229 fig 18.2 │

│ │

│ 图18-2 列出修饰键对应的□例 │

└————————————————————┘

┌————————————————————┐

│ p229 fig 18.3 │

│ │

│ 图18-3 列出指标对应的□例 │

└————————————————————┘

18.1.2 执行 xmodmap 改变对应 -- 一般性选项

当xmodmap 用来改变或设定对应,它可以处理一或多个表式 (expression) 的

作用。你可以把这些输入在一个档案中,假设此档案名称叫myfile,可用下列

命令两者之一:

xmodmap myfile

xmodmap - <myfile

第二列的短横线是必需的,如果少了它,程式将只完成预设的作用 (列出修饰

键的对应) 。除了在档案中输入规格之外,你也可以在命令列中用 -e 选项直

接指定它们:

xmodmap -e expression

xmodmap -e expression-1 -e expression-2

为了得到更多有关xmodmap 作用的资讯,可以指定冗赘 (verbose)选项,-v 或

-verbose。你可以藉著使用 -n 选项不实际的改变对应而获得相同的列印输出

(printout) 。 (此功能和Unix中make命令的 -n 选项相同,其意为 "假装执

行我要求你做的事,正确的告诉我你将如何进行,但并不实际地完成作用")。

这个选项对新手或不确定自己是否做的正确的情况非常有用。

每一个表式的语法并不相同,但一般性的格式为:

keyword target = value(s)

(等号的两边均需为空白)。

18.1.3 改变指标对应

指标对应是一个逻辑按钮数字的表列。 (逻辑的button-1我们称为LEFT,逻辑

的 button-2 称为MIDDLE等等,实际的 button-1 是滑鼠左边的按钮,button-2

是隔壁的按钮等等,所以预设的逻辑的按钮和实际的一致)。在表列中的第一个

项目是逻辑的按钮和实际的 button-1 的关系,下一个则是对实际的 button-2

的关系,以此类推。例如,颠倒按钮的次序,使用命令:

xmodmap -e "pointer = 3 2 1 "

结果按下滑鼠右边的按钮,会被解释成LEFT。

18.1.4 改变键对应

xmodmap 让你将一个键 (也就是说键码) 连结到一个新的keysym表列,使用表

式:

keycode keycode = keysym-1 [keysym-2 ...]

安排keysym-1连结到键时没有修饰键,当SHIFT 按下时keysym-2连结到键,如果

还有下一个keysym的话,对keycode 而言是第三顺位等等。 (请记住,在前两个

之後的keysym,系统并未附属特别的意义,应用程式如果需要的话可以附属意义

)。

让我们举实际的例子。一些键盘把一些非字母数字 (alphanumeric)键放在

不标准的地方,所以我们假设你要将F6键重定义当没有修饰键按下时为 "9",

当SHIFT 按下时为 "("。要写入这个xmodmap 的表式,你需要知道三件事:F6

的键码,和 "9"与 "("的keysym。我们在第12章提到过,执行xev 便可获得

这些:分别按下"F6", "9", "("三个键,你便可得到它们的键码和keysym。然

後将它们放入你的表式中。例如在我们的系统中我们使用命令:

xmodmap -e "keycode 21 = 9 parenleft"

为了容易一些,你通常不需要查问键码,xmodmap 允许你使用下列格式:

keysym target-keysym = keysym-1 [keysym-2 ...]

它的意义为 "附属在此键的keysym表列现在改由target-keysym来附属"。例如

针对我们方才的□例,我们可以用:

xmodmap -e "keysym F6 = 9 parenleft"

如果你将相同的keysym附属到数个键,xmodmap 会搞混掉,像这种情况你应坚

持使用keycode ... 这种符号表示法。

18.1.5 改变修饰键对应

在server中修饰键对应是一个表列的集合,每个修饰键有一个表列。对一个修

饰键的表列中,包含了所有当此修饰键被按下时会有意义的键 (键码) 。xmodmap

允许你在一个表列中增加项目,去除项目,或完全清除一个表列。对此三个操

作的格式为:

add modifier = list-of-keysyms

remove modifier = list-of-keysyms

clear modifier

不幸的是,语法有点儿混淆,因为取代你所需的键码,你必需指定keysym附属

到键码。

举一个例子:假如你需要在你键盘的右边有一个第二个的Ctrl键。在我们

的键盘上有一个Alternate 键没有被用来做任何事,所以我们将修改它,命令

为:

xmodmap -e "add Control = Alt_R"

为了多解释一些情况,让我们假设你没有一个多馀的键,但有一个第二个的

Meta键在键盘的右手边,而我们要用它。我们首先必需去除它的Mod1对应 (你

必须使用 "Mod1" ,"Meta"没有用) ,而後将它加入Control 对应。 (如果有

需要的话,我们可以拥有双重的对应,所以在Control-Meta组合键时才会有作

用,在一些编辑器中常会用到)。命令为:

remove Mod1 = Meta_r

add Control = Meta_r

将上述命令列放入一个比方说叫mymaps的档案中,执行命令xmodmap mymaps。

它可以工作,但如果你用xmodmap -pm 去查看,你会发觉Control 和Meta混合

在一起,所以最好改变键上的keysym为:

remove Mod1 = Meta_R

add Control = Meta_R

keysym Meta_R = Control_R

在xmodmap 的指南页中,有几个更多的交换修饰键的□例。

注意:当增加一个键到修饰键对应,keysym只是用来指定xmodmap 中的键

。它完全是xmodmap 本地的,且只是一个符号而已:只有当相关的键码传递到

server,才实际上的改变对应。同样地,keysym 和 keycode 表式对修饰键对

应绝对没有影响。一个常见的错误是执行下面这个命令:

xmodmap -e "keysym F1 = Contrl_R"

期望F1键能像一个control 键般作用。它不会 -- 因为你相当於告诉系统 "我

已经把这个符号印在F1键上面" 而已。你应该这样作:

xmodmap -e "add Control = F1"

如果你合并上一列的命令会使得对应表列看起来清楚些。

我们对不同对应的处理的描述到此告一结束。

18.2 键盘和滑鼠参数设定 -- xset

最後我们来看一看最平常的设施,对你的键盘、滑鼠和萤幕设定不同的参数的

设施。这些参数使用xset程式 (我们曾经用来控制server的字型搜寻路径) 来

设定。在以下的叙述,我们只用一组引数来展示xset,但你可以同时指定多组

你所要的不同定义的设定。

控制终端机响铃

用xset你可以让铃声响或不响,设定它的音调 (pitch),和它持续的时间 (假

设你的机器提供这些操作):

让铃声不响 xset -b

xset b off

让铃声能响 xset b

xset b on

设定铃声的音量 xset b vol

(最大音量之vol%) 例:xset b 50

设定铃声的音量,和 xset b vol p

音调(单位Hertz(赫)) 例:xset b 50 300

设定铃声的音量,音调, xset b vol p d

和持续的时间(单位百万 例:xset b 50 300 100

分之一秒)

控制键的滴答(click)

让键的滴答不作用 xset -c

xset c off

让键的滴答作用 xset c

xset c on

设定滴答声的音量 xset c vol

(最大音量之vol%) 例:xset c 50

控制键的自动重复(auto-repeat)

让键的自动重复不作用 xset -r

xset r off

让键的自动重复作用 xset r

xset r on

滑鼠参数 -- 加速和门槛

指标在萤幕上的移动和滑鼠的移动是成比例的。加速 (multiplier) 是应用在

指标移动上的一个乘数,例如你的加速是四,当你移动滑鼠时,指标将以正常

四倍的速度移动。 (如果指标正常时移动n 个像素,现在则会移动 4 X n个像

素)。

当你希望在萤幕上将指标移动一段长距离时,相当高的加速是很方便,但

当你要作一些细部的指引时,它看起来就很笨拙 -- 指标看起来在来回跳动。

为了克服此点,server提供了一个门槛 (threshold):如果当指标一次移动超

过门槛个像素,加速也会被带进来执行。

设定滑鼠的加速到a xset m a

例:xset m 5

设定加速,设定门槛到t xset m a t

例:xset m 5 10

控制萤幕节约器结构

萤幕节约器 (screen saver)是一种设施,它意图降低一个固定的图样(pattern)

老是燃烧你萤幕的萤光体的机率。它的理念为萤幕损害大都起因於让系统□置

(idle)一长段时间,所以萤幕节约器在一段特定的时间内如果没有输入动作後

,不是整体性的闪动萤幕,便是显示一个不同的图样。

如果你选择的是显示一个不同的图样,根视窗的背景涵盖整个萤幕,一个

大X 的游标出现在萤幕上,且会周期性的移动。当大X 游标在移动时,会改变

大小,而且背景也会随机的变动。 (在背景图样较小时你可能不会注意到,但

若比较大时,你可以看到它在跳动)。

当萤幕节约器结束作用後,如果要花许多的时间才能重画应用视窗,你可

以指定只有在重画萤幕而不需产生任何曝光(exposure)事件 (也就是不必要求

应用程式重画它们自己的视窗) 的情况下,萤幕节约器才会作用。 这只应用

於显示不同的图样的情况,整体性的闪动萤幕纯为硬体作用,不会影响到应用

程式。

让萤幕节约器能作用 xset s

让萤幕节约器不能作用 xset s off

用萤幕闪动的方式 xset s blank

只有在无曝光事件下才作用 xset s noexpose

允许有曝光事件下仍然作用 xset s expose

用不同图样的方式 xset s noblank

当系统□置t 秒後作用 xset s t

例:xset s 600

每p 秒之後改变图样 xset s t p

例:xset s 600 10

让我们将这些组合起来,假设我们希望萤幕节约器在系统□置80秒後开始作用

,用不同的图样的方式,周期为3 秒,不介意曝光事件是否发生:

xset s noblank s 80 3 s expose

注意:xset s 并不提供 on 这个值。

18.3 结论

本章的第一个部份,告诉你如何改变从实际的到逻辑的键和按钮的对应,这些

对应可被client应用程式解释。你看到如何使用xmodmap 来列出或改变每一个

键盘的键、修饰键和滑鼠按钮的对应。这些对应由server维护,所以可以被每

一个使用到此server的应用程式应用到。这种结构让你有改变键盘配置的自由

,不论是个人的喜好或是一个额外的标准。

在本章的第二个部份,你看到如何使用xset对一些常见的特性作设定,如

键的滴答声、终端机的响铃、萤幕节约器和滑鼠的速度 ("加速")。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有