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

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

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

文章shuke » 週五 2月 06, 2004 9:37 am

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。
shuke
可愛的小學生
可愛的小學生
 
文章: 11
註冊時間: 週四 1月 29, 2004 11:54 am
來自: 北京

回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客