Lenovo Thinkpad T420にマイクミュートボタンがありますが、機能しません。
そこで、プレスイベントを監視するxev
コマンドを試しましたが、そのキーはキャプチャされませんでした。
とにかく、生のキーコードを追加するなど、修正する方法はありますか?
OSおよびラップトップ
Ubuntu 12.04
、Arch Linuxでも動作することを望みますが、それほど重要ではありません;-P
Thinkpadモジュール:X220 4290LY9
Arch Linuxのカーネルパッチ
最後に
少し注意が必要ですが、カーネルパッチとacpidスクリプトを使用すると、現在は動作します。
私が必要とする残りは、出力muteのような通知デーモンですが、今ではあまり重要ではありません。
このソリューションは、ライトが内蔵されたミュートボタンを備えたすべてのThinkpadで機能するはずです。他のThinkpadでも機能する場合があります。
通知バブルとは別に:
「ミュート」がオンまたはオフであることを示すために、2つの可能な「ハードウェア」インジケータがあります。
マイクのミュートボタンライト(オレンジ)がオンまたはオフになり、ミュート状態が表示されます(Windowsの場合と同様)
ソリューション2には、パッチを適用したthinkpad_acpi
カーネルモジュールが必要です。これは、自分が何をしているのかを知っている上級ユーザーにのみお勧めします。これは、デフォルトではパッチがthinkpad_acpi開発者に含まれていないためです( 詳細についてはこの説明を参照してください )。
Ctrl+Alt+T
でターミナルを開きますacpi_listen
を実行し、ミュートキーを押します次のような結果になるはずである結果に注意してください:ibm/hotkey HKEY 00000080 0000101b
次にamixer scontrols
を実行すると、出力に次のいずれかが表示されます。
シンプルなミキサーコントロール「内部マイク」、0
または
シンプルなミキサーコントロール '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" 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
に置き換えます(すべての目盛りをそのまま残します)。
sudo chmod + x /etc/acpi/lenovo-mutemic.sh Sudo service acpid restart
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
の電力線をコメントアウトまたは削除します
マイクミュートボタンを押すと、次のように反映されます。
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は他の場合でも可能です。