找回密码
 注册
查看: 588|回复: 0

Debian中metacity热键失效的解决办法

[复制链接]
发表于 2004-2-6 10:08:01 | 显示全部楼层 |阅读模式
http://www.linuxsir.org/bbs/showthread.php?s=&threadid=88147
首先是困扰大家的GNOME抓屏问题,只要在.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。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-15 19:40 , Processed in 0.026943 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表