问题描述
我的Lenovo Thinkpad T420上有一个麦克风静音按钮,但是不起作用。
因此,我尝试使用xev
命令来监视新闻事件,但未捕获该键。
无论如何,有没有修复它,例如添加原始密钥代码?
操作系统和笔记本电脑
Ubuntu 12.04
,也希望它可以在Arch Linux上运行,但没什么大不了; -P
Thinkpad模块:X220 4290LY9
适用于Arch Linux的内核补丁
最后
这有点棘手,但是有了内核补丁和acpid脚本,它现在可以工作了。
我需要的其余部分是一个通知守护程序,如输出静音的通知守护程序,但现在没有多大关系了。
最佳办法
该解决方案应适用于所有带静音按钮的Thinkpad,并且该按钮也带有内置指示灯。它可能也适用于其他Thinkpad。
除了通知气泡:
有两个可能的”hardware”指示灯(以显示静音打开或关闭):
-
静音启用时,电源按钮指示灯(绿色)将闪烁以显示
-
麦克风静音按钮指示灯(橙色)将亮起或熄灭以显示静音状态(就像在Windows中一样)解决方案2需要修补的
thinkpad_acpi
内核模块,仅建议知道其工作状态的高级用户使用。这是因为thinkpad_acpi开发人员默认不包含该修补程序(See this discussion for more details)。
常见步骤
一种。确定Mic-Mute热键代码和麦克风输入设备
-
使用
Ctrl+Alt+T
打开终端 -
运行
acpi_listen
,然后按静音键 -
注意结果,它应该类似于:
ibm/hotkey HKEY 00000080 0000101b
-
然后运行
amixer scontrols
,您应该在输出中看到以下内容之一:
Simple mixer control 'Internal Mic',0
要么
Simple mixer control 'Capture',0
根据您看到的内容,”Internal Mic”或”Capture”是您的输入设备。
b。创建Mic-Mute ACPI事件处理程序
-
打开终端,键入
gksudo gedit /etc/acpi/events/lenovo-mutemic
以打开编辑器。 -
在编辑器中,粘贴以下内容,第一行应为
acpi_listen
上一部分中显示的代码:event = ibm /hotkey HKEY 00000080 0000101b action = /etc /acpi /lenovo-mutemic.sh -
保存并退出编辑器。
选择电源指示灯或麦克风静音指示灯
c-1。具有电源按钮指示灯的Mic-Mute脚本
-
如果您想要一个简单的解决方案并且不想使用修补的内核模块(请参阅C-2),请执行此操作。
-
打开端子,输入
gksudo gedit /etc/acpi/lenovo-mutemic.sh
-
在编辑器中,粘贴:#!/bin /bash INPUT_DEVICE =“ ‘Internal Mic’” YOUR_USERNAME = “place_your_username_here”如果搅拌器sget $ INPUT_DEVICE,0 | grep ‘\[on\]’;然后搅拌机固定$ INPUT_DEVICE,0切换回显“ 0闪烁”的/proc /ACPI /IBM /苏导致$ YOUR_USERNAME -c ‘DISPLAY = “:0.0” notify-send -t 50 \ -i microphone-sensitivity-muted象征”Mic MUTED”‘ 别的amixer SSET $ INPUT_DEVICE,0肘苏$ YOUR_USERNAME -c“DISPLAY = “:0.0” notify-send -t 50 \ -i microphone-sensitivity-high-符号”Mic ON”‘回显“ 0开启” /proc /acpi /ibm /led fi
-
如果那是您的输入设备名称,则用
Capture
替换INPUT_DEVICE变量的值(保留所有刻度)。 -
将YOUR_USERNAME变量的值替换为您要向其发送通知的用户的帐户名
-
保存并退出编辑器。
-
现在(从终端)运行以下命令:sudo chmod + x /etc/acpi/lenovo-mutemic.sh sudo服务acpid restart
-
跳至“测试”部分(d)以确认它是否有效。
c-2。带有官方Mic-mute指示灯的Mic-mute
设置脚本
-
如果您不熟悉终端/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
-
您可以找到一个完整脚本的示例,看起来像in this paste
-
然后:
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
-
从Ubuntu Kernel git存储库下载源文件
thinkpad_acpi.c
: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”。您可以使用以下命令直接从此Pastebin下载:wget -OMakefile http://pastebin.com/raw.php?i=ybpnxeUT
或将以下内容粘贴到名为
Makefile
的文件中:obj-m += thinkpad_acpi.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
-
现在键入
make
创建模块;完成后,您将在文件夹中看到一个thinkpad_acpi.ko
文件。 -
加载后,测试修补的模块:
sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
-
现在确认按下麦克风按钮将打开/关闭橙色麦克风指示灯,并且电源指示灯闪烁/稳定亮起。
-
如果得到确认,请执行以下操作来替换当前的
thinkpad_acpi
模块:TPDIR = /lib /modules /$(uname -r)/kernel /drivers /platform /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。测试中
-
除了选择指标之外,您还可以通过以下方式确认静音:
-
单击右上方的音量图标,然后单击底部的声音设置:
-
切换到”Input”选项卡。
-
现在,按下“麦克风静音”按钮,您将会发现乐趣:
-
窗口中的“静音”复选框
-
通知气泡(如果您每隔几秒钟按下Mic Mute一次,就不会立即显示!)
-
您选择的指示灯:闪烁的电源按钮指示灯或内置麦克风静音指示灯。
-