Slackware current on Thinkpad X61 音量控制问题
时间:2008-01-15
来源:互联网
原发: http://guo9310.blog.163.com/
KDE中, 三个声音控制键, 现在mute是起作用的, 音量大小键只有unmute功能
1. 测试一下这三个声音键的键值
http://dl.bytesex.org/cvs-snapshots/
下载input-utils的源代码, 然后编译一下就可以用, 不用安装
1)
# ./lsinput
(X61, kernel 2.6.24-rc7):
/dev/input/event0 bustype : BUS_I8042 vendor : 0x1 product : 0x1 version : 43860 name : "AT Translated Set 2 keyboard" phys : "isa0060/serio0/input0" bits ev : EV_SYN EV_KEY EV_MSC EV_LED EV_REP
input-events <你的键盘设备的序号>.
如我的就是
# ./input-events 0
4) 按你想要测试的键 (volume up/down/mute), 会显示输入事件
5) 很奇怪的是, 音量高和低键有事件输出,静音键没有任何输出!
但是为什么能够静音呢, 是因为BIOS控制的原因
6) thinkpad-acpi的开发者建议, 在启动的时候, 给kernel加启动参数 acpi_osi=Linux, 会比较好,
在grub的menu.lst里面, 给kernel加上这个参数
kernel /boot/vmlinuz ro root=LABEL=/ acpi_sleep=s3_bios,s3_mode resume=/dev/sda6 vga=773 acpi_osi=Linux
keycode 160 : Mute keycode 174 : LowerVolume keycode 176 : RaiseVolume
因为BIOS现在是不控制了, 需要软件来控制音量和静音功能了
2. 给~/.Xmodmap加入下面三行, 让X知道这三个按键事件
keycode 160 = XF86AudioMute keycode 174 = XF86AudioLowerVolume keycode 176 = XF86AudioRaiseVolume
4. 这时候按键, 发现屏幕有显示了, 有静音关, 静音开, 0%, 11%, 虽然有显示, 但是功能一点没有,
这个显示是kmilo的作用, 可以通过控制中心->KDE组件->启动服务,
看到有kmilo服务在运行
控制中心->系统管理->Thinkpad 便携电脑, 这个功能是kmilo的一个插件,
但是现在有bug, 虽然显示正常, 但音量控制功能不正常.
据说ubuntu的kde-utils已经修正了这个bug, 但我没有用升级的方式解决
原因是
其他的thinkpad快捷键, 是通过acpi事件控制, 然后通过osd_cat显示的,
干脆这个音量控制也统一用这种osd_cat方式
所以还是自己解决吧
5. 把kmilo服务停了, 把自动启动的勾勾掉
6. 写一个脚本volume.sh, 跟acpi事件处理脚本放在一起,用osd_cat控制屏幕显示, 用kmix控制音量
dcop真是个好东西, 刚发现这个功能是如此强大, 学习中, 正好试试
/etc/acpi/volume.sh
#!/bin/bash KMIX="dcop kmix Mixer0" osd() { pkill osd_cat echo $@ | osd_cat -p bottom -A center -c green -d 5 -O 1 -u black -f "-adobe-helvetica-bold-r-normal-*-*-320-*-*-p-*-iso8859-1" & } mute() { $KMIX setMute 0 $@ $KMIX setMute 13 $@ $KMIX setMute 14 $@ } case "$1" in mute) mute "on" osd "mute on" ;; up) mute "off" $KMIX setMasterVolume $(expr $($KMIX masterVolume) + 7) osd $($KMIX masterVolume) % ;; down) mute "off" $KMIX setMasterVolume $(expr $($KMIX masterVolume) - 3) osd $($KMIX masterVolume) % ;; esac sleep 5 pkill osd_cat exit 0
KDE控制中心->区域和辅助功能->输入动作->Preset Actions
添加三个动作, 动作类型都为: 键盘快捷方式->命令/URL(简单),
1) mute XF86AudioMute /etc/acpi/volume.sh mute 2) volumeUp XF86AudioLowerVolume /etc/acpi/volume.sh down 3) volumeUp XF86AudioRaiseVolume /etc/acpi/volume.sh up
本来kmix中有setMasterVolume, toggleMasterMute等直接控制主声道的方法,
但是Intel的集成声卡一般都没有主声道, 即使用kmix主声道静音(喇叭是灰色, 有删除线), 还是有声音,
想静音只有控制kmix的Tab"开关"的喇叭和耳机这两个设备.
所以只能想办法找出对应的喇叭和耳机的deviceidx,
直接控制这些设备的状态
1) 写一个脚本, testmute.sh
#!/bin/sh i=0 while [ $(($i <= 20)) ] && [ $(dcop kmix Mixer0 isAvailableDevice $i) == "true" ]; do echo $i $(dcop kmix Mixer0 mute $i) i=$(($i+1)) done exit 0
3)
./testmute.sh > 1.txt
5)
./testmute.sh > 2.txt
diff 1.txt 2.txt
1c1 < 0 false --- > 0 true 14c14 < 13 false --- > 13 true
7) 上面的结果说明0, 13分别是喇叭和耳机,
看看你的是什么数字, 替换一下volume.sh中对应的数字就可以了
9. 现在这三个音量控制键就可以使用了!
注意
1. osd_cat只支持点阵字体, 我还没有试能不能用中文点阵字体
2. AudioLowerVolume和AudioRaiseVolume这两个键的步长不一样, 亮度的也是, 很奇怪,
所以脚本中调整了一下数字, 步长都为约5%
3. 脚本中控制静音用了三个设备, 是发现有时候喇叭的这个13 deviceidx有时候会变成14, 干脆都设置
4. kdcop, 这个是dcop浏览器, 非常有用, 可以浏览和查询可用的dcop方法
作者: zhoun 发布时间: 2008-01-15
原来也是用的dcop 和 kmix, 呵呵
作者: zhoun 发布时间: 2008-01-17
重新打了0.19的thinkpad-acpi补丁,内核加参数后仍然无法识别三个按键,依然是只有mute on和mute off,按照thinkpad-acpi.txt里面的说明:
Volume control -- /proc/acpi/ibm/volume --------------------------------------- This feature allows volume control on ThinkPad models which don't have a hardware volume knob. The available commands are: echo up >/proc/acpi/ibm/volume echo down >/proc/acpi/ibm/volume echo mute >/proc/acpi/ibm/volume echo 'level <level>' >/proc/acpi/ibm/volume The <level> number range is 0 to 15 although not all of them may be distinct. The unmute the volume after the mute command, use either the up or down command (the level command will not unmute the volume). The current volume level and mute state is shown in the file.
还好现在亮度变化用Fn+PageUp PageDown可以完美的控制了。
作者: zhy2111314 发布时间: 2008-01-27
这个应该跟kernel的acpi的版本有关的, 最近kernel的acpi感觉改动非常大.
我刚用了2.6.24, 加patch thinkpad-acpi 0.19, 发现亮度控制也变了
dmesg 发现有新的提示,
thinkpad_acpi: standard ACPI backlight interface available, not loading native one...
/proc/acpi/ibm/brightness没有了, 现在是通过标准acpi的接口控制
/proc/acpi/video/VID1/LCD0/brightness
作者: zhoun 发布时间: 2008-01-27
还有一个问题就是我的休眠功能依然只能用在 console 下,X下面可以休眠但恢复不过来,这个问题也没解决:(
作者: zhy2111314 发布时间: 2008-01-27
作者: zhoun
你的kernel版本是多少?
这个应该跟kernel的acpi的版本有关的, 最近kernel的acpi感觉改动非常大. 我刚用了2.6.24, 加patch thinkpad-acpi 0.19, 发现亮度控制也变了 dmesg 发现有新的提示, thinkpad_acpi: standard ACPI backlight interface available, not loading native one... /proc/acpi/ibm/brightness没有了, 现在是通过标准acpi的接口控制 /proc/acpi/video/VID1/LCD0/brightness |
作者: zhy2111314 发布时间: 2008-01-27
acpi_sleep=s3_bios,s3_mode
这个是跟休眠功能有关的
作者: zhoun 发布时间: 2008-01-27
作者: zhoun
代码:
acpi_sleep=s3_bios,s3_mode 这个是跟休眠功能有关的 |
作者: zhy2111314 发布时间: 2008-01-27
不过Linux下的休眠问题还是挺多的, 如: 偶尔不能唤醒, 休眠耗电, 多休眠几次会出奇怪的问题......
而且在我的机器上, 休眠跟重启速度差不多,
所以我现在一般都只待机或者关机.
作者: zhoun 发布时间: 2008-01-27
作者: zhoun
应该没有什么问题的, 内存2G一般应用也用不完的.
不过Linux下的休眠问题还是挺多的, 如: 偶尔不能唤醒, 休眠耗电, 多休眠几次会出奇怪的问题...... 而且在我的机器上, 休眠跟重启速度差不多, 所以我现在一般都只待机或者关机. |
作者: zhy2111314 发布时间: 2008-01-28
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28