`
zhoun
  • 浏览: 47710 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Slackware current on Thinkpad X61 音量控制问题

阅读更多

作者: forever steel(zhoun)
原发: http://guo9310.blog.163.com/

KDE中, 三个声音控制键, 现在mute是起作用的, 音量大小键只有unmute功能

1. 测试一下这三个声音键的键值
http://dl.bytesex.org/cvs-snapshots/
下载input-utils的源代码, 然后编译一下就可以用, 不用安装
1)

代码:
# ./lsinput

2) 在lsput输出中找到*keyboard*
(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

3) 运行键测试
input-events <你的键盘设备的序号>.
如我的就是

代码:
# ./input-events 0

如果不能在X下面运行, 转换到一个字符终端, 运行试试

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

7)重启之后, 重复上面1)-4)的测试, 会发现有输出了,

代码:
keycode 160 : Mute keycode 174 : LowerVolume keycode 176 : RaiseVolume

8) 但是现在的问题是, 虽然有按键事件了, 但是静音功能也不能用了!
因为BIOS现在是不控制了, 需要软件来控制音量和静音功能了

2. 给~/.Xmodmap加入下面三行, 让X知道这三个按键事件

代码:
keycode 160 = XF86AudioMute keycode 174 = XF86AudioLowerVolume keycode 176 = XF86AudioRaiseVolume

3. 让.Xmodmap起作用, 执行xmodmap ~/.Xmodmap, 或者重启KDE, 也可以

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

7. 添加这三个音量控制键的输入动作
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

8. 脚本的mute函数中, 对应的0,13,14是kmix的deviceidx,
本来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

2) 把kmix的Tab"开关"的喇叭和耳机这两个设备全部开启

3)

代码:
./testmute.sh > 1.txt

4) 把kmix的Tab"开关"的喇叭和耳机这两个设备全部关闭

5)

代码:
./testmute.sh > 2.txt

6)

代码:
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方法

分享到:
评论

相关推荐

    Slackers:Slackware -current 包-开源

    Slackware - Corrado "Conraid" Franco 的当前软件包。

    Slackware 设置

    ### Slackware 设置详解 #### 一、概述 Slackware是一款知名的Linux发行版,以其简单性和稳定性著称。本文档将详细介绍如何在Slackware系统中进行基础设置,特别是关于语言环境配置以及如何使用Swaret工具进行...

    Slackware Linux Essentials.pdf

    Slackware 提供了丰富的文档和支持资源来帮助用户解决问题和学习新知识。这些资源包括官方文档、在线论坛、常见问题解答(FAQ)等。 ##### 2.2 在线帮助 除了本地文档外,Slackware 还提供了大量的在线资源。例如,...

    The Official Slackware Linux Guide

    - **在线帮助**资源则提供了快速解决问题的方式,如FAQ(常见问题解答)和社区论坛。 #### 三、安装指南 - **获取Slackware** - 可以通过官方网站或其他合法渠道下载到Slackware的安装镜像。 - **系统要求** - 在...

    Slackware手册Slackware Handbook

    该项目致力于使用一种格式,使整个Slackware社区都能参与进来,并能够根据需要添加/编辑内容,从而使Slackware文档保持最新。

    Slackware安装说明文档---Installing Slackware Linux上部

    3. **初始化系统**:Slackware使用传统的sysvinit系统,通过运行级(runlevel)来控制服务的启动和停止。 4. **软件更新**:使用`slackpkg`或`slapt-get`工具进行软件包的更新和升级,保持系统安全。 ### 五、安装...

    Slackware手册.pdf

    Slackware 用户手册的中文版,Slackware和Red Hat、Debian、Ubuntu等等主流发行版有很多不同。也许最明显的就是这些主流发行版缺乏Slackware对系统管理员提供的“关照”。许多发行版都有自己用于配置各种服务的图形...

    Slackware安装说明文档---Installing Slackware Linux下部

    **Slackware Linux 安装指南** 在深入探讨Slackware Linux的安装过程之前,我们首先需要理解Slackware Linux是什么。Slackware Linux是最古老的仍在维护的Linux发行版之一,由Patrick Volkerding在1993年创建。它的...

    Slackware Linux基础-对于Slackware Linux 10.2Slackware Linux Basics - For Slackware Linux 10.2

    解决那些很少或没有GNU / Linux经验的人。 涵盖了Slackware Linux的安装,基本的GNU / Linux命令以及Slackware Linux的配置。

    slackware-1.01 src

    这种方法虽然比现代的基于图形的包管理器(如apt或yum)略显复杂,但其优势在于对系统的控制更加精细。 在 Slackware 1.01 中,用户可以预期找到一些基础的系统工具,如bash shell、gcc编译器、文本编辑器vi或emacs...

    Slackware 官方手册(中文版)

    ### Slackware Linux官方手册知识点概览 #### 一、引言 - **Slackware Linux**:Slackware是一款基于Intel架构计算机的强大操作系统,旨在提供一个稳定且安全的平台,适用于高端服务器及工作站。 #### 二、...

    Slackware Linux Essentials (PDF)

    **简洁性**:Slackware的设计理念之一就是尽可能地减少自动化工具的使用,让系统管理员能够更好地控制整个系统。 **稳定性**:由于Slackware对软件包的选择非常谨慎,只包含经过长时间测试和验证的软件,因此它的...

    slackware 教程(最适合研发人员用的Linux版本)

    4. **社区支持**: Slackware 拥有一个活跃的用户社区,提供丰富的文档和论坛支持,用户可以在其中找到解决问题的方法,分享经验,与其他开发者交流。 ** Slackbook-2.0.pdf** `slackbook-2.0.pdf` 是一本关于使用...

    gerbera slackbuild slackware 15:用于非洲菊 UPnP 媒体服务器的 Slackware Current 15.0 Slackbuild 脚本-开源

    本文将详细介绍如何在Slackware Current 15.0操作系统上安装并使用非洲菊UPnP媒体服务器。 首先,让我们理解一下Slackware Linux。Slackware是最古老的仍在积极维护的Linux发行版之一,以其简洁、稳定和对自由软件...

    docker-slackware:Slackware64-current 的 docker 服务

    码头服务 我在生产中使用的基于 slackware64-current 的各种服务

    linux SlackWare安装简明教程

    Linux Slackware是一款历史悠久且高度可定制的Linux发行版,它以其纯净、稳定和对自由软件的严格遵循而受到部分用户的喜爱。本教程将带你逐步了解如何安装Slackware Linux系统,确保你能够顺利地在你的计算机上搭建...

    Slackware Linux9.0安装教程

    ### Slackware Linux 9.0 安装教程详解 #### 一、准备工作 在开始安装前,你需要确保已经准备好以下工具: 1. **VMware 6.0**:一款功能强大的虚拟机软件,用于模拟真实计算机环境。 2. **Slackware Linux 9.0 ...

    Slackware Linux操作系统启动过程详解

    总之,理解Slackware Linux的启动过程和运行级别管理对于系统管理员来说至关重要,它能帮助优化系统性能,增强安全性,以及在出现问题时进行有效的故障排查。通过掌握这些知识,Linux用户可以更好地掌控自己的系统,...

    Slackware手册中文版本

    slackware中文手册,希望可以帮助到您。感谢背后翻译的人员,谢谢你们。

    slackware 服务器配置

    ### Slackware 服务器配置与SSH服务详解 #### 一、硬件信息 在开始配置Slackware服务器之前,首先需要了解服务器的基本硬件信息。这包括系统信息、处理器信息、内存信息、硬盘信息以及网络接口信息等。 **1.1 ...

Global site tag (gtag.js) - Google Analytics