几乎每种桌面环境或窗口管理器都有一套自己的热键定义体系,如果需要在多个桌面环境或窗口管理器之间切换工作的话每个都要定义一套自己的热键,工作 繁琐且重复得毫无意义。xbindkeys是一个独立的热键管理定义工具,可以使多个环境共用一套热键,而且xbindkeys的语法简单明了,非常容易 上手。
下面是我定义的一套快捷键,定义热键的方法是编辑主目录下的“.xbindkeysrc”文件:
#—————————–【运行程序】————————————-
“gnome-terminal”
alt+grave
“grun”
F1
“opera”
alt+w
“nautilus –no-desktop”
Mod4+q
“stardict”
control+Mod4+s
“gaim”
control+Mod4+g
“rox”
Mod4+r
“banshee”
control+Mod4+b
“firefox”
control+Mod4+f
“liferea”
control+Mod4+l
“wxmaxima”
control+Mod4+c
“krusader”
control+Mod4+k
“/opt/MultiGet/MultiGet”
control+Mod4+m
“kfind”
control+Mod1+f
“gnome-terminal -e htop”
control+Mod4+Delete
“gnome-system-monitor”
control+Mod1+Delete
#—————————–【桌面操作】————————————-
#屏幕截图
“ksnapshot”
control+Mod2+Print
“ksnapshot -c”
alt+Mod2+Print#清空回收站
“rm -r ~/.Trash/*”
Mod4+e#锁屏
“xscreensaver-command –lock”
Mod4+l#打开光驱
“eject&”
Mod1 + F12#音量 +5%
“amixer sset Master 1+ unmute”
control + Up#音量 -5%
“amixer sset Master 1- unmute”
control + Down#静音
“amixer sset Master mute”
control + Mod1 + q
#——————————————————————————
#keystate_numlock = enable
#keystate_capslock = enable
#keystate_scrolllock= enable
#——————————————————————————
很显然,每个热键包括两行,第一行用双引号括起来的部分是要执行的程序的完整路径(正常情况下安装(没有自定义安装路径)的程序不需要输入路径),然后第二行是对应的快捷键。
xbindkeys对应的一些比较特殊的快捷键如下,括号外是可以直接写在配置文件里面的名称,括号内是对应的键盘上的键名:
Release(似乎是个事件吧,我不太清楚这是个什么东西,一般也用不到), control(Ctrl), shift(Shift), Mod1 (Alt), Mod2 (NumLock), Mod3 (CapsLock), Mod4(Windows徽标键), Mod5 (Scroll)。
默认状态下,xbindkeys对以下三个键不敏感,也就是使用它们作热键的话不论这些键会产生什么系统事件,该热键都会得到执行。如果设置成敏 感,则在这些键产生一些事件的时候,该热键不会得到执行。我试了一下,绑定Num_Lock键到stardict,设置成敏感的时候,该键对应的灯由暗变 亮的那次击键可以执行stardict,由亮变暗的那次击键就不会执行。如果设置成不敏感,则无论任何时候该键都是可以执行热键的。不过说实话,我没看出 来这有什么用。
这三个键是:NumLock, CapsLock and ScrollLock.
在上面的配置文件中去掉与这三个键对应的设置前面的#号时就表示设置为敏感,加上#号表示不敏感。
另外,在终端中键入命令:
xbindkeys -k
来调出一个窗口,在你按了键盘上的某一个或多个键后将这些键的名字打印到屏幕上,以方便不知道要设置的热键的真实名字的用户。它比系统自带的同样功能的工具“xev”好的地方在于后者的提示信息复杂且只能针对一个按键,而前者可以显示组合键。
由于热键经常需要进行修改,每次都键入这样的命令有些麻烦,故可以定义系统命令的别名,以缩短这些命令,这是Linux的一个很重要的技巧:
sudo vim /etc/bash.bashrc
在最下方,加上这样几句:
alias mhk=’vim ~/.xbindkeysrc’
alias thk=’xbindkeys -k’
alias rhk=’pkill xbindkeys && xbindkeys &’
alias shk=’xbindkeys_show’
mhk,thk,rhk,shk分别是“modify hotkeys”,“test hotkeys”,“restart hotkeys”,“show hotkeys”的简称,你也可以换成任何喜欢的名字,保存退出后,重新启动终端,你就可以使用这些别名来执行后面对应的命令了。
每次执行mhk之后,如果对热键进行了更改,这些更改并不会立即生效,所以需要重新启动xbindkeys,这时就要执行rhk了,如果窨的热键太多,忘了某些键设置了,可以执行shk来查看都是定义了哪些热键。