+ -
当前位置:首页 → 问答吧 → 笔记本上Hotkey在Linux下的讨论

笔记本上Hotkey在Linux下的讨论

时间:2010-02-11

来源:互联网

其实这个主题不应该发在这个版,但是,我现在混这个版比较多,所以,就……
用过本子的人(基本上等于所有有电脑的人,现在谁没有本子),都知道本子上有一堆叫Hotkey的东西,就是用Fn+Fx来控制一些东西,多半是音量,屏幕亮度,设备开关……
但是,在Linux下,这些Hotkey有很多用不起来。
如果是旧的本子,这些功能一般都是直接通过BIOS来实现,所以,现在的Linux发行版,一般也能正常的用,至少我见过很多音量调节,亮度调节正常的。
但是,新一点的本子,特别是预装Win 7或者Vista的本子,这部分很多是BIOS和OS下的程序或者驱动协同控制的,这样的本子,Linux就没有办法了。
我遇到过好多较新的本子,特别是设备开关这方面,因为涉及到所谓省电的考虑,像WLAN和Bluetooth这些设备,默认都是关闭的,所以,装完Linux后,这些设备要么找不到(对应于Hotkey直接关设备电的情况),或者找到了,但是用不了(对应于Hotkey关掉设备的RF的)
一般这些机器上,与BIOS配合的Utility只有Win的版本,是根本不会有Linux版本的。
当然,可以直接要求BIOS修改为BIOS单独控制,但是,有两个方面的问题:
一、作为一般买本子的客户,往上一层,是销售商的维修站,他们不具备改BIOS的能力(如果这个本子厂商考虑到这个本子可能要装Linux,已经准备好为Linux用的BIOS则除外)。
二、即便最后反映到了本子生产商那里,如果这个本子一开始的设计就是BIOS得Utility协同控制(Vista得Win 7下大多这种方式),则要改为单独BIOS控制,有时修改动要很大,所以,最省力的办法,也就是直接把设备打开,让它一直能被OS认到,而无视Fn+Fx的控制。

本人在FIC工作,经常在公司生产的本子上装Linux玩,所以,经常为这个问题而烦恼,所以,突然想起来发贴,大家讨论一下,一般在End User级,这个问题是怎么解决的。

作者: alpha.gu   发布时间: 2010-02-11

不是说比如无线,可以装win驱动解决吗..

幸亏本人本子比较老。比如亮度我觉得还是BIOS来管理比较好。谁想出要操作系统参一脚的

作者: jarryson   发布时间: 2010-02-11

楼上的大侠,我解释一下:
一、我说的不是无线驱动的问题,而是无线设备打开的问题,设备的开关BIOS可以通过GPIO引脚来控制的,如果BIOS报告给OS,我没有这个设备,那就算设备硬件装上了,OS照样认不到,所以,如果你不把设备打开,还是用不了。还有,关于RF,就是WLAN等无线设备的信号,如果RF被关了,OS会认到设备,但是,会探测不到无线连接。

二、亮度和音量,的确是BIOS控制要好些,因为这样的话,现在的Linux发行版基本上都能用的很好,但是,问题是,像Vista得Win 7这种系统,这已经接管了这些东西,特别是亮度,因为要得OS下的Mobility Center保持一致,所以,一定要让OS去控制,当然,强行BIOS控制也是可以的,但是结果就是Mobility Center会报错。

毕竟Win现在在本子上还是主流,所以,生产商写BIOS是不会多为Linux考虑的。

作者: alpha.gu   发布时间: 2010-02-11

楼主您说的问题,没法解决的:)
知名品牌用的人多或者有好事者写段代码
但是杂牌,比如我用的BenQ
90%的键盘,然后一个键当3个用的,肯定是用不起来的
但是我不是用电脑来做家用和办公的,我仅仅用她调试程序,然后让她兼职做Nat设备
所以对我来说,问题不大。
那些hotkey最典型的就是IBM系列的,但是基本上都可以支持
杂牌机器,一般都不是自己设计的
然后找到对应的模型机,找到驱动,一般也可以
对于有些山寨厂商盗版别人的板子和固件的,驱动不起来很正常。

我的BenQ,大多数键是可以用的,亮度调整,声音调整等,不能用的就是蓝牙无线开关,这东西是合一的,所以我常开,休眠也不好用,其他正常
BenQ是比较大的山寨厂,有几个能用我已经很满意了

刚刚经过测试,发现所有的hotkey都可以使用,只是原来在windows上有提示,现在在Linux上要盲打而已,哈哈

作者: parset   发布时间: 2010-02-11

我用过两个笔记本,分别是ASUS跟Thinkpad,基本上功能键都没有问题。但也基本上没有默认就全部能用的。

1,BIOS直接控制的。就像楼主说的音量,屏幕亮度,还有像thinkpad特有的thinkLight,这些默认就可用。因为按键组合实际上就是硬件调节;
2,驱动程序控制的。比如显示电池电量、锁屏幕,休眠等等。这些主要是驱动程序控制的,特别地,主要是内核带的ACPI模块控制的。比如我这里的thinkpad_acpi模块,这些模块基本上就驱动了对应的组合键。有一些默认就有效,而有些它已经完成了映射但是需要你手动设置acpid让它们工作,还有一些可能因为linux权限机制的问题(主要是休眠、待机功能),默认被关闭了。

而且各个厂商的产品基本上hotkey配置都是稳定的,所以虽然型号千差万别,但各自的acpi驱动模块基本保持稳定,并不太可能出现因为预装了win7或者vista,对应linux下的驱动就不再有效了。除非是全新品牌的笔记本,比如当年的神舟.....

我的运气还算比较好的,asus和thinkpad的acpi支持一直是比较好的。所以配置的经验也不是很丰富,仅供参考。

作者: Alerander   发布时间: 2010-02-11

的确如楼上两位说的这样,Thinkpad我是没有用过,但是,Wiki上很多Thinkpad的例子,想必很好解决。
ASUS嘛,以前在ASUS机器上装Win,最烦的就是它的ATK模块,这个应该是它的Hotkey的底层驱动。
而我所在的FIC,从Vista开始,基本上也是类似于ATK这样的做法了,因为需要在调节的时候在桌面上显示OSD。
基本上,最受影响的,应该就是设备的开关,对于亮度或者音量的调节,其实无所谓的,设备不能用,特别是WLAN不能用,是很郁闷的事情:)

作者: alpha.gu   发布时间: 2010-02-11

会出现设备不能用的情况么?如果是你说的那种软件开关,内核应该会侦测到设备,也就能在sysfs里输出相应的信息了,手动改那里面的文件应该是能实现对硬件的操作的。这个要具体情况具体分析。像我这里的bluetooth,原本hotkey不能用,而蓝牙又因为莫名其妙的原因被关闭了,我手动将
引用:
/sys/devices/platform/thinkpad_acpi/bluetooth_enable
文件里设为1,蓝牙就又被打开了。

作者: Alerander   发布时间: 2010-02-11

嗯,楼主说得没错
我以前的旧笔记本,HP的,音量调节和亮度调节都很正常,基本上所有发行版都没问题
新买的三星笔记本就不行了,音量倒是可以调节,但是屏幕亮度死活搞不定。好不容易找到一篇老外写的文章,修改了几个文件之后,暂时能够在终端通过输入一大串命令来调节亮度
我的笔记本也就这点用得不爽了

作者: york824   发布时间: 2010-02-12

楼上的,要怪就怪微软得某些只考虑Win的OEM厂商吧。
怪微软是因为,从Vista开始,特别是亮度调节,BIOS的权限已经很小了,这个,我问过FIC BIOS Team的人,要符合M$的标准,BIOS就只能通知OS去改亮度,而不能自己改,不然,某个Logo就不可以贴在机器上。
怪OEM厂商,是因为很多厂商要求生产商对于各种调节显示OSD,就是在屏幕上显示一个调节的图示,这个就要看生产商怎么实现,如果是BIOS直接调节,OSD程序探测到调节时在桌面显示,这样对于Linux发行版来说,就不会有什么问题,最多就是在Linux下没有OSD(当然,现在这个其实都有的)
但是,上面的做法,容易出现同步问题,因为OSD程序是滞后的。
所以,另一种做法,BIOS通知OSD程序去调节,这样子,就有点像上面说的微软的东西了,这样实现,不太会有同步问题,但是,换到Linux下,同样功能的实现,要你自己写脚本,相当于是你自己去实现Win下这个OSD程序的功能。

作者: alpha.gu   发布时间: 2010-02-12