我正在使用 Ubuntu 12.04。我读过在联想 Thinkpad 上启用麦克风静音按钮和指示灯但acpi_listen
终端中没有产生任何输出(对于任何媒体按钮,即使是正常工作的按钮)
并且xev
不会为该麦克风静音按钮输出任何内容。
答案1
此解决方案适用于所有带有静音按钮且内置有灯的 ThinkPad。它也可能适用于其他 ThinkPad。
除了通知气泡之外:
有两种可能的“硬件”指示器(显示静音是打开还是关闭):
- 电源按钮灯(绿色)将闪烁以显示静音状态
麦克风静音按钮灯(橙色)将亮起或熄灭以显示静音状态(就像在 Windows 中一样)
解决方案 2 需要修补的
thinkpad_acpi
内核模块,仅推荐给知道自己在做什么的高级用户。这是因为默认情况下,thinkpad_acpi 开发人员不包含该补丁,(请参阅此讨论以了解更多详细信息)。
常见步骤
a. 确定麦克风静音热键代码和麦克风输入设备
- 使用以下命令打开终端
Ctrl+Alt+T
- 运行
acpi_listen
,然后按静音键 注意结果,它应该是这样的:
ibm/hotkey HKEY 00000080 0000101b
然后运行
amixer scontrols
,您应该在输出中看到以下内容之一:
简单的混音器控制‘内置麦克风’,0
或者
简单的混频器控制‘捕获’,0
根据您所看到的内容,“内置麦克风”或“捕获”是您的输入设备。
b. 创建 Mic-Mute ACPI 事件处理程序
- 打开终端,输入
gksudo gedit /etc/acpi/events/lenovo-mutemic
打开编辑器。 - 在编辑器中粘贴以下内容,其中第一行应为上一节中显示的代码
acpi_listen
:事件 = ibm/热键 HKEY 00000080 0000101b 动作=/etc/acpi/lenovo-mutemic.sh
- 保存并退出编辑器。
选择电源指示灯或麦克风静音指示灯
c-1. 带电源按钮指示器的 Mute-Mute 脚本
- 如果您想要一个简单的解决方案并且不想使用修补的内核模块,请执行此操作(请参阅 C-2)。
- 打开终端,输入
gksudo gedit /etc/acpi/lenovo-mutemic.sh
在编辑器中粘贴:
/bin/bash #!/bin/bash INPUT_DEVICE="'内置麦克风'" YOUR_USERNAME="在此处输入您的用户名" 如果 amixer sget $INPUT_DEVICE,0 | grep '\[on\]' ; 然后 amixer sset $INPUT_DEVICE,0 切换 echo“ 0 闪烁”> /proc/acpi/ibm/led su $YOUR_USERNAME -c 'DISPLAY=":0.0" 通知发送 -t 50 \ -i 麦克风灵敏度静音符号“麦克风静音”' 别的 amixer sset $INPUT_DEVICE,0 切换 su $YOUR_USERNAME -c 'DISPLAY=":0.0" 通知发送 -t 50 \ -i 麦克风灵敏度高符号“麦克风开启”' 回显“0 on”> /proc/acpi/ibm/led 菲
如果这是您的输入设备名称,则用其替换 INPUT_DEVICE 变量的值
Capture
(保留所有勾号)。- 将 YOUR_USERNAME 变量的值替换为您要向其发送通知的用户的帐户名
- 保存并退出编辑器。
- 现在运行以下命令(从终端):
sudo chmod +x /etc/acpi/lenovo-mutemic.sh sudo 服务 acpid 重启
- 跳至测试部分(d)以确认其有效。
c-2. 带官方麦克风静音指示灯的麦克风静音
设置脚本
- 如果您不熟悉终端/shell,请不要使用此方法。
- 这将需要编译修补的
thinkpad_acpi
模块,并且已经验证可以与 Ubuntu Precise 12.04 和 Quantal 12.10、内核 3.2.0-23 和 3.2.0-24 和 3.5.0-21 一起使用。 让我们首先创建脚本:
/etc/acpi/lenovo-mutemic.sh
应该与第 c-1 节一样,并添加以下内容:在标题 (
#!/bin/bash
) 后插入此行:MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
在第一
echo...
行之后插入:echo 1 > $MICMUTE
在第二
echo...
行之后插入:echo 0 > $MICMUTE
您可以找到完整脚本的示例在这篇文章中
然后:
sudo chmod +x /etc/acpi/lenovo-mutemic.sh sudo service acpid restart
确认按下静音按钮会导致电源灯闪烁;再次按下会导致电源灯稳定。
构建、测试和安装内核模块
安装(或确保)您拥有当前运行的内核的标头和构建工具:
sudo apt-get install linux-headers-$(uname -r) build-essential
创建一个临时目录并更改至该目录:
mkdir ~/tpacpi && cd ~/tpacpi
thinkpad_acpi.c
从 Ubuntu Kernel git 存储库下载源文件:wget -Othinkpad_acpi.c "http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-$(lsb_release -sc).git;\ a=blob_plain;f=drivers/platform/x86/thinkpad_acpi.c;hb=HEAD"
用以下方法修补(复制并粘贴整行):
sed -i -e 's/"tpacpi::thinkvantage",/"tpacpi::thinkvantage",\n\t"tpacpi::unknown_led4",\n\t"tpacpi::micmute",/g' -e 's/0x1081U/0x5081U/g' -e 's/0x1fffU/0x5fffU/g' thinkpad_acpi.c
thinkpad_acpi.c
在下载的同一文件夹中,您需要一个“Makefile”。您可以直接从此处下载粘贴箱, 使用:wget -OMakefile http://pastebin.com/raw.php?i=ybpnxeUT
或者将以下内容粘贴到名为的文件中
Makefile
:obj-m += thinkpad_acpi.o
全部: 制作-C / lib / modules / $(shell uname -r)/ build M = $(PWD)模块
干净的: 使-C / lib / modules / $(shell uname-r)/ build M = $(PWD)清洁现在输入
make
以创建模块;thinkpad_acpi.ko
完成后您将在文件夹中看到一个文件。加载修补后的模块后对其进行测试:
sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
现在确认按下麦克风按钮将打开/关闭橙色麦克风灯并且电源灯闪烁/稳定。
如果确认,请执行以下操作来替换当前
thinkpad_acpi
模块:TPDIR=/lib/模块/$(uname -r)/内核/驱动程序/平台/x86 sudo mv $TPDIR/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko.stock sudo mv /where/you/built/it/tpacpi_micmute/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko
注释掉或删除电源指示灯线
lenovo-micmute.sh
d. 测试
- 除了选择指标外,您还可以通过以下方式确认静音:
- 点击右上角的音量图标,然后点击底部的声音设置:
- 切换到“输入”选项卡。
现在按下麦克风静音按钮,您应该会看到它反映在:
- 窗口中的静音复选框
- 通知气泡(如果每隔几秒按下麦克风静音按钮多次,则不会立即出现!)
- 您选择的指示灯:闪烁的电源按钮灯或内置麦克风静音灯。