dai*_*isy 26 shortcut-keys thinkpad volume-control
我的 Lenovo Thinkpad T420 上有一个麦克风静音按钮,但它不起作用。
因此,我尝试使用xev命令来监视按下事件,但未捕获该键。
有没有办法修复它,比如添加原始密钥代码?
操作系统和笔记本电脑
Ubuntu 12.04 ,也希望它适用于 Arch Linux ,但没关系;-P
Thinkpad 模块: X220 4290LY9
Arch Linux 内核补丁
最后
这有点棘手,但有了内核补丁和 acpid 脚本,它现在可以工作了。
我需要的其余部分是一个类似于 output mute 的通知守护程序,但现在它并不重要。
ish*_*ish 34
此解决方案适用于所有带有静音按钮且内置指示灯的 Thinkpad。它也可能适用于其他 Thinkpad。
除了通知气泡:


有两种可能的“硬件”指示器(用于显示静音打开或关闭):
麦克风静音按钮灯(橙色)将亮起或熄灭以显示静音状态(就像在 Windows 中一样)
解决方案 2 需要打补丁的thinkpad_acpi内核模块,并且只推荐给知道自己在做什么的高级用户。这是因为默认情况下 thinkpad_acpi 开发人员不包含该补丁(有关更多详细信息,请参阅此讨论)。
Ctrl+Alt+Tacpi_listen,然后按静音键注意结果,它应该是这样的:
ibm/hotkey HKEY 00000080 0000101b
然后运行amixer scontrols,您应该会在输出中看到以下内容之一:
简单的混音器控制“内置麦克风”,0
或者
简单的混音器控制 'Capture',0
根据您看到的内容,“内置麦克风”或“捕获”是您的输入设备。
gksudo gedit /etc/acpi/events/lenovo-mutemic打开编辑器。acpi_listen:
事件=ibm/热键 HKEY 00000080 0000101b 动作=/etc/acpi/lenovo-mutemic.sh
gksudo gedit /etc/acpi/lenovo-mutemic.sh在编辑器中,粘贴:
#!/bin/bash
INPUT_DEVICE="'内置麦克风'"
YOUR_USERNAME="place_your_username_here"
如果 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 麦克风灵敏度-高符号“麦克风开启”'
echo "0 on" > /proc/acpi/ibm/led
菲
将 INPUT_DEVICE 变量的值替换Capture为您的输入设备名称(保持所有刻度不变)。
须藤 chmod +x /etc/acpi/lenovo-mutemic.sh 须藤服务 acpid 重启
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
Run Code Online (Sandbox Code Playgroud)在第一echo...行之后,插入:
echo 1 > $MICMUTE
Run Code Online (Sandbox Code Playgroud)在第二echo...行之后,插入:
echo 0 > $MICMUTE
Run Code Online (Sandbox Code Playgroud)您可以在此粘贴中找到完整脚本的示例
然后:
sudo chmod +x /etc/acpi/lenovo-mutemic.sh
sudo service acpid restart
Run Code Online (Sandbox Code Playgroud)确认按下静音按钮导致电源灯闪烁;再次按下会发出稳定的电源指示灯。
安装(或确保)您拥有当前正在运行的内核的头文件和构建工具:
sudo apt-get install linux-headers-$(uname -r) build-essential
Run Code Online (Sandbox Code Playgroud)创建一个临时目录并更改为:
mkdir ~/tpacpi && cd ~/tpacpi
Run Code Online (Sandbox Code Playgroud)thinkpad_acpi.c从 Ubuntu 内核 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"
Run Code Online (Sandbox Code Playgroud)修补它(复制并粘贴整行):
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
Run Code Online (Sandbox Code Playgroud)在thinkpad_acpi.c已下载的同一文件夹中,您将需要一个“Makefile”。你可以直接从这个Pastebin下载它,使用:
wget -OMakefile http://pastebin.com/raw.php?i=ybpnxeUT
Run Code Online (Sandbox Code Playgroud)
或将以下内容粘贴到名为 的文件中Makefile:
obj-m += thinkpad_acpi.o
全部: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) 模块
干净的: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
现在键入make以创建模块;完成后,您将thinkpad_acpi.ko在文件夹中看到一个文件。
加载后测试修补模块:
sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
Run Code Online (Sandbox Code Playgroud)现在确认按下麦克风按钮将打开/关闭橙色麦克风灯和电源灯闪烁/稳定。
如果确认,请执行以下操作以更换您当前的thinkpad_acpi模块:
TPDIR=/lib/modules/$(uname -r)/kernel/drivers/platform/x86 须藤 mv $TPDIR/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko.stock 须藤 mv /where/you/built/it/tpacpi_micmute/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko
注释掉或删除电源线 lenovo-micmute.sh

现在按 Mic Mute 按钮玩得开心,您应该会看到它反映在: