У меня на Lenovo Thinkpad T420 есть кнопка отключения микрофона, но она не работает.
Итак, я попробовал команду xev
для отслеживания события нажатия, и эта клавиша не была захвачена.
Есть ли способ исправить это, например добавить необработанный код ключа?
OS & amp; Ноутбук
Ubuntu 12.04
, также надеюсь, что он работает на Arch Linux, но не имеет большого значения ;-P
Модуль Thinkpad: X220 4290LY9
[ 1116] Исправление ядра для Arch Linux
НАКОНЕЦ
Это немного сложно, но с патч ядра и скрипт acpid, теперь он работает.
Остальное, что мне нужно, это демон уведомления, подобный тому, который используется для вывода звука, но сейчас он не имеет большого значения.
Это решение должно работать на все Ноутбуки ThinkPad с кнопкой отключения звука, которая также имеет встроенный свет. Это может также работать на другие Ноутбуки ThinkPad.
Кроме пузырей уведомления:
Существует два возможных "аппаратных" индикатора (чтобы показать, что бесшумный режим идет или прочь):
(Оранжевый) свет кнопки отключения звука Микрометра будет идти или прочь показать бесшумное состояние (точно так же, как в Windows)
Решение 2 требует исправленного thinkpad_acpi
модуль ядра, и только рекомендуется для опытных пользователей, которые знают то, что они делают. Это вызвано тем, что патч не включен thinkpad_acpi разработчиками по умолчанию, (Дополнительную информацию см. в этом обсуждении).
Ctrl+Alt+T
acpi_listen
, и нажмите клавишу отключения микрофонаОтметьте результат, который должен быть чем-то как: ibm/hotkey HKEY 00000080 0000101b
Затем выполненный amixer scontrols
, необходимо видеть одно из следующего в выводе:
Simple mixer control 'Internal Mic',0
или
Simple mixer control 'Capture',0
В зависимости от того, что Вы видите, "Внутренний Микрометр" или "Получение" являются Вашим устройством ввода данных.
gksudo gedit /etc/acpi/events/lenovo-mutemic
открыть редактора.acpi_listen
: event=ibm/hotkey HKEY 00000080 0000101b action=/etc/acpi/lenovo-mutemic.sh
gksudo gedit /etc/acpi/lenovo-mutemic.sh
В редакторе, вставке:
#!/bin/bash INPUT_DEVICE="'Internal Mic'" YOUR_USERNAME="place_your_username_here" if amixer sget $INPUT_DEVICE,0 | grep '\[on\]' ; then amixer sset $INPUT_DEVICE,0 toggle echo "0 blink" > /proc/acpi/ibm/led su $YOUR_USERNAME -c 'DISPLAY=":0.0" notify-send -t 50 \ -i microphone-sensitivity-muted-symbolic "Mic MUTED"' else amixer sset $INPUT_DEVICE,0 toggle su $YOUR_USERNAME -c 'DISPLAY=":0.0" notify-send -t 50 \ -i microphone-sensitivity-high-symbolic "Mic ON"' echo "0 on" > /proc/acpi/ibm/led fi
Значение замены переменной INPUT_DEVICE с Capture
если это - Ваше название устройства ввода данных (оставьте все галочки неповрежденными).
sudo chmod +x /etc/acpi/lenovo-mutemic.sh sudo service acpid restart
thinkpad_acpi
модуль и был проверен для работы с Ubuntu Точных 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:
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
был загружен, Вам будет нужен "Make-файл". Можно загрузить его непосредственно с этого 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
создать модуль; Вы будете видеть a 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
Теперь весело проведите время нажатие Mic Mute button, необходимо видеть, что он отразился в:
Я не смог заставить его работать сразу же на Ubuntu 12.10, используя также среду рабочего стола linux.
Это было исправлено простым добавлением кавычек и удалением запятой (и добавлением моего имени пользователя):
#!/bin/bash
MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
ID='"Internal Mic"'
USERNAME="" #put your username here
if amixer sget "$ID"ntenter code herernal Mic" 0 | grep '\[on\]' ; then
amixer sset "$ID" 0 toggle
#echo "0 blink" > /proc/acpi/ibm/led #related to blinking power
echo 1 > $MICMUTE
su $USERNAME -c 'DISPLAY=":0.0" notify-send -t 50 \
-i microphone-sensitivity-muted-symbolic "Mic MUTED"'
echo "MUTE ON"
else
amixer sset "$ID" 0 toggle
su $USERNAME -c 'DISPLAY=":0.0" notify-send -t 50 \
-i microphone-sensitivity-high-symbolic "Mic ON"'
#echo "0 on" > /proc/acpi/ibm/led
echo 0 > $MICMUTE
echo "MUTE OFF"
fi
, а затем следовали вашим шагам при составлении thinkpad_acpi.
Все на Thinkpad T520 с NVS 4200M, Ubuntu 12.10. Еще не перезагружен, но я протестировал с шагом теста, который вы обрисовали в общих чертах, и он работает с включением и выключением индикатора отключения звука и его отключением (с уведомлением). Кажется, что прыжки с пистолетом работают нормально. Благодаря.
Хорошо перезагружен, сам скрипт работает нормально, приглушая и отключая звук, но я не установил пропатченный thinkpad_acpi ... oops
Хорошо, перезапустился снова после правильной установки на этот раз, и светодиод также загорелся , Вероятно, должен быть сценарий запуска, чтобы проверить, отключен ли микрофон или нет, и включить / выключить свет, поскольку текущая настройка будет включать / выключать свет только при нажатии кнопки.
Чтобы свет показывал, был ли он приглушен или нет при запуске, а не при первом нажатии кнопки, я просто сохранил:
#!/bin/bash
MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
if amixer sget "Internal Mic" 0 | grep '\[on\]' ; then
echo 0 > $MICMUTE
elif amixer sget "Internal Mic" 0 | grep '\[off\]' ; then
echo 1 > $MICMUTE
else
echo "No Mic Detected";
fi
Дал разрешение на выполнение [ 1112]
sudo chmod +x /etc/init.d/lenovo-mic-check
Как lenovo-mic-check для /etc/init.d/ и затем запустил:
sudo update-rc.d lenovo-mic-check defauts 98 02
Также не забудьте скопировать в / etc / pm / sleep. d /
sudo cp /etc/init.d/lenovo-mic-check /etc/pm/sleep.d/lenovo-mic-check
Теперь индикатор горит, если я перезагружаю компьютер, ПРИМЕЧАНИЕ: второй, если это может быть просто другое.