当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : Ubuntu8.10 音量快捷键[Fn-KEY]错误处理。
帖子发表于 : 2008-11-28 11:28 
头像

注册: 2007-03-07 9:35
帖子: 198
送出感谢: 0 次
接收感谢: 0 次
偶的本本是TCL K2225
前段时间Ubuntu8.10出来了,本人测试了一下,对偶的本本支持不是太好,特别是Fn音量快捷键问题,按下去OSD就一直显示,不返回,音量要不全开,要不慢慢全关,似乎一直按着键使的,经测试,N个笔记本都有这种现象,搜完所有国内BBS,技术支持无果后在国外BBS上苦啃E文,分析系统文件,找到原因了,估计坛子里也有兄弟使用,如果有这种问题的可以彻底解决了。

错误原因是X的输入设备驱动evdev需要key-up信号,而通常Fn键这个缺少,所以造成音量OSD窗口无法终止,进入死循环。处理办法就是重新编译evdev模块。
先备份evdev_drv.so文件,出现错误后可以用控制台命令重新copy回去。
cp /usr/lib/xorg/modules/input/evdev_drv.so ~/
方法1:
step1:下载已经修改好错误的evdev源代码:
wget http://labs.ktemkin.com/ubuntu/evdev_fix_2.0.99.tar.gz
tar -zxvf evdev_fix_2.0.99.tar.gz
cd evdev_fix
以后步骤参见公用操作。
方法2:
step1:下载Ubuntu源代码中的evdev文件,下载地址:
http://packages.ubuntu.com/source/intre ... nput-evdev
step2:在解开的文件包中的./src/evdev.c文件中找到下面代码:
/* filter repeat events for chording keys */
if (value == 2 &&
(ev->code == KEY_LEFTCTRL || ev->code == KEY_RIGHTCTRL ||
ev->code == KEY_LEFTSHIFT || ev->code == KEY_RIGHTSHIFT ||
ev->code == KEY_LEFTALT || ev->code == KEY_RIGHTALT ||
ev->code == KEY_LEFTMETA || ev->code == KEY_RIGHTMETA ||
ev->code == KEY_CAPSLOCK || ev->code == KEY_NUMLOCK ||
ev->code == KEY_SCROLLLOCK)) /* XXX windows keys? */
return;
step3:在下面代码下面新建一行,输入以下代码:
/* fix events for volume keys */
if(ev->code == KEY_VOLUMEDOWN || ev->code == KEY_VOLUMEUP) //MODIFY THIS LINE
{
//post a keydown and then a keyup, as media keys have no automatic key-up
xf86PostKeyboardEvent(pInfo->dev, code, 1);
xf86PostKeyboardEvent(pInfo->dev, code, 0);
return;
}
如果还有其它Fn功能键错误,则可以自行查键定义加入,如静音键
/* fix events for volume keys */
if(ev->code == KEY_VOLUMEDOWN || ev->code == KEY_VOLUMEUP || ev->code == KEY_MUTE) //MODIFY THIS LINE
{
//post a keydown and then a keyup, as media keys have no automatic key-up
xf86PostKeyboardEvent(pInfo->dev, code, 1);
xf86PostKeyboardEvent(pInfo->dev, code, 0);
return;
}
以上方法1或者方法2做完后执行下面编译过程:
step1:安装编译工具及环境:
sudo apt-get install build-essential libtool automake gcc xorg-dev
step2:编译:
./autogen.sh
make
sudo make install
setp3:拷贝驱动程序到正确的位置:
sudo cp /usr/local/lib/xorg/modules/input/evdev_drv.so /usr/lib/xorg/modules/input/

执行完后会自动重启X,如果没有自动重启应手动重启,一般情况下就OK了,如果出现不能进入X,可在开机时按ESC进入安全模式,恢复备用的模块文件。
sudo cp ~/evdev_drv.so /usr/lib/xorg/modules/input/
sudo reboot

重申,因为涉及系统基本输入模块,必须要求操作者懂点儿基本编译常识及黑屏处理方法,否则出现系统不能进入X的后果自行负责。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: Ubuntu8.10 音量快捷键[Fn-KEY]错误处理。
帖子发表于 : 2008-11-28 11:31 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
810机制问题?804没问题啊。说明key-up不是必须的处理条件。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 : Re: Ubuntu8.10 音量快捷键[Fn-KEY]错误处理。
帖子发表于 : 2008-11-28 11:36 
头像

注册: 2007-03-07 9:35
帖子: 198
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
810机制问题?804没问题啊。说明key-up不是必须的处理条件。


:em02 LS的兄弟,你看看8.04的那个文件的源代码再看看8.10那个文件的源代码就知道了。8.10那个新版本有BUG,呵呵,估计是程序员没录完数据造成的。
按8.04老版本配套的那个改的,一改就OK了。

希望兄弟应以事实为主,偶已经通过这样处理完全搞定了Fn键的驱动,只要系统恢复了正常,我觉得没必要讨论机制不机制的,共享精神才是ubuntu的真正精神,说说高深理论不如给兄弟们弄点实用见效的东西。

比如最早8.04对ALC861声卡的驱动,不是有N多高深理论在谈吗?没起啥用,偶在国外BBS找到了方法,第一个带到这儿来,大家都能驱动了,这不多好。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译