web-dev-qa-db-ja.com

Lenovo Thinkpadでマイクミュートボタンとライトを有効にする

Lenovo Thinkpad T420にマイクミュートボタンがありますが、機能しません。

そこで、プレスイベントを監視するxevコマンドを試しましたが、そのキーはキャプチャされませんでした。

とにかく、生のキーコードを追加するなど、修正する方法はありますか?

OSおよびラップトップ

Ubuntu 12.04、Arch Linuxでも動作することを望みますが、それほど重要ではありません;-P

Thinkpadモジュール:X220 4290LY9

Arch Linuxのカーネルパッチ

ここからダウンロード

最後に

少し注意が必要ですが、カーネルパッチとacpidスクリプトを使用すると、現在は動作します。

私が必要とする残りは、出力muteのような通知デーモンですが、今ではあまり重要ではありません。

26
daisy

このソリューションは、ライトが内蔵されたミュートボタンを備えたすべてのThinkpadで機能するはずです。他のThinkpadでも機能する場合があります。

通知バブルとは別に:

enter image description hereenter image description here

「ミュート」がオンまたはオフであることを示すために、2つの可能な「ハードウェア」インジケータがあります。

  1. ミュートがオンになると、電源ボタンのライト(緑色)が点滅して表示されます
  2. マイクのミュートボタンライト(オレンジ)がオンまたはオフになり、ミュート状態が表示されます(Windowsの場合と同様)

    ソリューション2には、パッチを適用したthinkpad_acpiカーネルモジュールが必要です。これは、自分が何をしているのかを知っている上級ユーザーにのみお勧めします。これは、デフォルトではパッチがthinkpad_acpi開発者に含まれていないためです( 詳細についてはこの説明を参照してください )。

一般的な手順


a。 Mic-MuteホットキーコードとMic入力デバイスの決定

  • Ctrl+Alt+Tでターミナルを開きます
  • acpi_listenを実行し、ミュートキーを押します
  • 次のような結果になるはずである結果に注意してください:ibm/hotkey HKEY 00000080 0000101b

  • 次にamixer scontrolsを実行すると、出力に次のいずれかが表示されます。

シンプルなミキサーコントロール「内部マイク」、0 

または

シンプルなミキサーコントロール 'Capture'、0 

表示内容に応じて、「内部マイク」または「キャプチャ」が入力デバイスになります。

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。電源ボタンインジケータ付きのマイクミュートスクリプト

  • これは、簡単な解決策が必要で、パッチを適用したカーネルモジュールを使用したくない場合に行います(C-2を参照)。
  • ターミナルを開き、gksudo gedit /etc/acpi/lenovo-mutemic.shと入力します
  • エディターで貼り付けます:

    #!/ bin/bash 
     INPUT_DEVICE = "'Internal Mic'" 
     YOUR_USERNAME = "place_your_username_here" 
     amixerが$ 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マイク感度ミュート記号 '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 
    
  • テストセクション(d)にジャンプして、動作することを確認します。

c-2。公式のマイクミュートインジケーターライト付きマイクミュート

スクリプトを設定する

  • 端末/シェルに詳しくない場合は、この方法を使用しないでください。
  • これには、パッチを適用した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
    
  • そして、2番目の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
    
  • 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。テスト中

  • インジケータの選択とは別に、次の方法でミュートを確認することもできます。

Mic Input

  • 右上の音量アイコンをクリックし、下部にサウンド設定をクリックします。
  • 「入力」タブに切り替えます。
  • マイクミュートボタンを押すと、次のように反映されます。

    1. ウィンドウのミュートチェックボックス
    2. 通知バブル(マイクミュートを数秒に1回以上押すと、すぐには表示されません!)
    3. 選択したインジケータ:点滅する電源ボタンライトまたは内蔵のマイクミュートライト。
34
ish

Linuxデスクトップ環境を使用しても、Ubuntu 12.10で初めてすぐに動作させることはできませんでした。

引用符を追加してカンマを削除するだけで修正されました(そして、ユーザー名を追加しました)。

#!/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をコンパイルする手順に従いました。

NVS 4200M、Ubuntu 12.10を搭載したThinkpad T520上のすべてまだリブートしていませんが、説明したテスト手順でテストしました。ミュートLEDをオンおよびオフにし、実際にミュートします(通知あり)。銃を少しジャンプしてもうまくいくようです。ありがとう。

再起動して、スクリプト自体は正常にミュートおよびミュート解除できますが、パッチを適用したthinkpad_acpiをインストールしませんでした。

さて、今回は適切にインストールした後、再起動し、LEDも点灯します。現在の設定ではボタンが押されたときにのみライトをオン/オフするため、マイクがミュートされているかどうかを確認し、ライトをオン/オフするための起動スクリプトが必要です。


ボタンを最初に押したときではなく、起動時にミュートされているかどうかを示すライトを取得するには、保存しました。

#!/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

実行許可を与えた

Sudo chmod +x /etc/init.d/lenovo-mic-check

/etc/init.d/へのlenovo-mic-checkとして実行しました:

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

これで、コンピューターを再起動するとライトが点灯します。注:2番目のifは他の場合でも可能です。

0
JQuantum