http://www.linuxsir.org/bbs/showthread. ... adid=88147
Debian中metacity热键失效的解决办法
首先是困扰大家的抓屏问题,只要在.gnomerc中加上xmodmap -e "keycode 92 = j"就一切OK,或者你也可以改.xmodmaprc来解决。
原因分析:根据我的测试,gnome的热键实现原理大致流程是这样的:
首先在metacity启动的时候,或者用户修改了热键设定的时候读一下热键的键值(Keysym),换成成对应的键码(KeyCode);
然后当metacity截获到相应的KeyCode的时候,执行热键流程;
这种方法看似正确,但是却隐藏了严重bug,hoho。
因为用户可能有不同的KeyCode对应同一个Keysym,而目前metacity只是根据一个Keysym找第一个KeyCode,这样用户按了不幸排在后面的Keysym对应的键的时候,就不会起作用了!
gconf2里面记录的信息仅仅是Keysym,这也是这个严重问题的起因。如果能够改成记录KeyCode,这个问题就没有了。
验证方法,用xmodmap修改键映射,把两个KeyCode映射到一个Keysym上面,然后设定热键,这时永远只有第一个KeyCode的键生效!
回到开头说的,sid安装后默认的键码,xmodmap -pk可以看到,92对应的同样是Print Screen,而我的罗技PC键盘上面的Print Screen根据xev显示KeyCode是117!
我到现在也不知道KeyCode92是哪个神秘的键,呵呵。
这个问题可以提交给metacity开发者了吧,hoho。