现在一般键盘上都有Win键(在Windows里按下会弹出开始菜单)和菜单键(在Windows里按下会弹出上下文菜单),有些特殊键盘还有多媒体按钮(不少笔记本都有)。在FreeBSD下这些按钮默认都没有激活,我们可以自己激活并使用它们。
在图形界面下打开一个term,执行:
xev即会弹出一个叫Event Tester的窗口,按下键盘左边的Win键,term会输出类似如下的信息:
KeyPress event, serial 21, synthetic NO, window 0x1600001,
root 0x4c, subw 0x0, time 1190029, (462,166), root:(584,458),
state 0x0, keycode 115 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: FalseKeyRelease event, serial 24, synthetic NO, window 0x1600001,
root 0x4c, subw 0x0, time 1190188, (462,166), root:(584,458),
state 0x20, keycode 115 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:表明左Win键的键码(keycode)是115,名称(keysym)是Super_L。
在xev中按下各种特殊按钮,收集按钮的keycode和keysym信息,留意有些键没有keysym信息的要记下来。完成后退出xev:把Event Tester窗口关闭即可。
以root身份编辑keysym数据库,执行:
ee /usr/X11R6/lib/X11/XKeysymDB对没有keysym的键,自己起个keysym并赋予一个唯一的keysym code,添加到XKeysymDB末尾,例如我添加了这些多媒体按钮的keysym信息:
VolumeUp :1100000D
VolumeDown :1100000E
MediaPlayPause :1100000F
MediaStop :11000010
MediaPrev :11000011
MediaNext :11000012
MediaMute :11000013以普通用户身份在自己的目录下建文本文件.xmodmaprc,其中把keycode和keysym关联起来,例如我的.modmaprc文件内容是这样的:
keycode 115 = Super_L
keycode 116 = Super_R
keycode 117 = Menu
add Mod3 = Super_L
add Mod3 = Super_Rkeycode 174 = VolumeDown
keycode 176 = VolumeUp
keycode 164 = MediaStop
keycode 162 = MediaPlayPause
keycode 144 = MediaPrev
keycode 153 = MediaNext
keycode 160 = MediaMute这里还把Win键设为第3控制键(Modifier),于是在fvwm的配置文件,除了S表示Shift、M表示Meta(Alt)、C表示Ctrl之外,还可以使用3表示Win键。
在窗口管理器里配置使用这些键,例如在fvwm的配置文件中可以添加如下代码使多媒体按钮跟xmms关联起来(音量按钮跟系统音量关联):
Key VolumeUp A A Exec exec mixer vol +5
Key VolumeDown A A Exec exec mixer vol -5Key MediaStop A A Exec exec xmms --stop
Key MediaPlayPause A A Exec exec xmms --play-pause
Key MediaPrev A A Exec exec xmms --rew
Key MediaNext A A Exec exec xmms --fwd也可以使用xmms的xf86audio插件,此时要把多媒体键绑定为XF86Audio*的一系列keysym,具体请参考该插件的说明文档。
用户登录



