Включение кнопки Mic Mute и подсветка на планшетах Lenovo

У меня на Lenovo Thinkpad T420 есть кнопка отключения микрофона, но она не работает.

Итак, я попробовал команду xev для отслеживания события нажатия, и эта клавиша не была захвачена.

Есть ли способ исправить это, например добавить необработанный код ключа?

OS & amp; Ноутбук

Ubuntu 12.04, также надеюсь, что он работает на Arch Linux, но не имеет большого значения ;-P

Модуль Thinkpad: X220 4290LY9

[ 1116] Исправление ядра для Arch Linux

Скачать здесь

НАКОНЕЦ

Это немного сложно, но с патч ядра и скрипт acpid, теперь он работает.

Остальное, что мне нужно, это демон уведомления, подобный тому, который используется для вывода звука, но сейчас он не имеет большого значения.

26
задан 9 May 2014 в 01:46

2 ответа

Это решение должно работать на все Ноутбуки ThinkPad с кнопкой отключения звука, которая также имеет встроенный свет. Это может также работать на другие Ноутбуки ThinkPad.

Кроме пузырей уведомления:

enter image description hereenter image description here

Существует два возможных "аппаратных" индикатора (чтобы показать, что бесшумный режим идет или прочь):

  1. (Зеленый) свет кнопки питания мигнет для показа, когда бесшумный режим будет идти
  2. (Оранжевый) свет кнопки отключения звука Микрометра будет идти или прочь показать бесшумное состояние (точно так же, как в Windows)

    Решение 2 требует исправленного thinkpad_acpi модуль ядра, и только рекомендуется для опытных пользователей, которые знают то, что они делают. Это вызвано тем, что патч не включен thinkpad_acpi разработчиками по умолчанию, (Дополнительную информацию см. в этом обсуждении).

Общие шаги


a. Определение кода горячей клавиши 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

В зависимости от того, что Вы видите, "Внутренний Микрометр" или "Получение" являются Вашим устройством ввода данных.

b. Создайте Бесшумный Микрометром обработчик событий ACPI

  • Откройте терминал, введите gksudo gedit /etc/acpi/events/lenovo-mutemic открыть редактора.
  • В редакторе вставьте в следующем, где первая строка должна быть кодом, показанным в предыдущем разделе acpi_listen:
    event=ibm/hotkey HKEY 00000080 0000101b
    action=/etc/acpi/lenovo-mutemic.sh
    
  • Сохраните и выйдите из редактора.

Выбор индикаторов Power Light или Mic Mute


c-1. Бесшумный микрометром сценарий с индикатором кнопки питания

  • Сделайте это, если Вы хотите легкое решение и не хотите использовать исправленный модуль ядра (см. C-2).
  • Откройте терминал, введите 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 если это - Ваше название устройства ввода данных (оставьте все галочки неповрежденными).

  • Значение замены переменной YOUR_USERNAME с именем учетной записи пользователя Вы хотите отправить уведомления
  • Сохраните и выйдите из редактора.
  • Теперь выполните следующее (от терминала):
    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    
  • Переход к разделу Testing (d), чтобы подтвердить, что это работает.

c-2. Бесшумный режим микрометра с официальным бесшумным Микрометром Индикатором

Установка сценария

  • Не используйте этот метод, если Вы не знакомы с терминалом/оболочкой.
  • Это потребует компиляции исправленного 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


d. Тестирование

  • Кроме Вашего выбора индикатора, можно также подтвердить бесшумный режим через следующее:

Mic Input

  • Нажмите на значок громкости на верхних правых, и звуковых настройках внизу:
  • Переключитесь на вкладку "Input".
  • Теперь весело проведите время нажатие Mic Mute button, необходимо видеть, что он отразился в:

    1. Флажок Mute в окне
    2. Пузыри уведомления (не появится немедленно, если Вы нажмете Mic Mute несколько раз каждые несколько секунд!)
    3. Ваш выбранный индикатор: мигающий свет кнопки питания или встроенный световой сигнал Mic Mute.
34
ответ дан 9 May 2014 в 01:46

Я не смог заставить его работать сразу же на 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

Теперь индикатор горит, если я перезагружаю компьютер, ПРИМЕЧАНИЕ: второй, если это может быть просто другое.

0
ответ дан 9 May 2014 в 01:46

Другие вопросы по тегам:

Похожие вопросы: