J'ai un bouton de sourdine sur mon Lenovo Thinkpad T420, mais cela ne fonctionne pas.
J'ai donc essayé la commande xev
pour surveiller l'événement de presse, et cette clé n'a pas été capturée.
Y a-t-il un moyen de le réparer, comme d'ajouter un code de clé brut?
OS & Laptop
Ubuntu 12.04
, espérons également que cela fonctionne sous Arch Linux, mais cela n'a pas beaucoup d'importance ;-P
Module Thinkpad: X220 4290LY9
Patch du noyau pour Arch Linux
FINALEMENT
C'est un peu délicat, mais avec le correctif du noyau et le script acpid, cela fonctionne maintenant.
Le reste dont j'ai besoin est un démon de notification tel que celui de la sortie muette, mais peu importe maintenant.
Cette solution devrait fonctionner pour tous les Thinkpads avec un bouton de sourdine qui possède également une lumière intégrée. Cela peut également fonctionner pour d'autres Thinkpads.
Outre les bulles de notification:
Il existe deux indicateurs "matériels" possibles (pour indiquer que la sourdine est activée ou désactivée):
Le voyant du bouton de sourdine du micro (orange) s'allume ou s'éteint pour indiquer l'état de la sourdine (comme sous Windows).
La solution 2 nécessite un module de noyau thinkpad_acpi
corrigé et est uniquement recommandée aux utilisateurs avancés qui savent ce qu’ils font. Cela est dû au fait que le correctif n’est pas inclus par défaut par les développeurs thinkpad_acpi (( Voir cette discussion pour plus de détails ).
Ctrl+Alt+T
acpi_listen
et appuyez sur la touche secretNotez le résultat, qui devrait ressembler à ceci: ibm/hotkey HKEY 00000080 0000101b
Puis exécutez amixer scontrols
, vous devriez voir l'un des éléments suivants dans la sortie:
Commande de mixage simple 'Internal Mic', 0
ou
Commande de mixage simple 'Capture', 0
Selon ce que vous voyez, "Internal Mic" ou "Capture" est votre périphérique d'entrée.
gksudo gedit /etc/acpi/events/lenovo-mutemic
pour ouvrir l'éditeur.acpi_listen
: événement = ibm/raccourci clavier HKEY 00000080 0000101b action =/etc/acpi/lenovo-mutemic.sh
gksudo gedit /etc/acpi/lenovo-mutemic.sh
Dans l'éditeur, collez:
.] grep '\ [sur \]'; then amixer sset $ INPUT_DEVICE, 0 bascule echo "0 clignotement"> /proc/acpi/ibm/led su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0" notifier -send -t 50\ -i microphone-sensibilité-sourdine-symbolique "Mic MUTED" ' sinon réglage de mixage $ INPUT_DEVICE, 0 bascule su $ YOUR_USERNAME -c 'DISPLAY = ": 0.0" notifier-envoyer -t 50\ -I sensibilité du microphone hautement symbolique "Mic ON"'. Echo "0 sur">/proc/acpi/ibm/led fi
Remplacez la valeur de la variable INPUT_DEVICE par Capture
s'il s'agit de votre nom de périphérique en entrée (laissez toutes les graduations intactes).
Sudo chmod + x /etc/acpi/lenovo-mutemic.sh Sudo service acpid restart
thinkpad_acpi
et il a été vérifié que celui-ci fonctionne avec Ubuntu Precise 12.04 et Quantal 12.10, dans les noyaux 3.2.0-23, 3.2.0-24 et 3.5.0-21.Créons d'abord le script: /etc/acpi/lenovo-mutemic.sh
devrait être comme dans la section c-1, avec les ajouts suivants:
Insérer cette ligne après l'en-tête (#!/bin/bash
):
MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
Après la première ligne echo...
, insérez:
echo 1 > $MICMUTE
Et après la deuxième ligne echo...
, insérez:
echo 0 > $MICMUTE
Vous pouvez trouver un exemple de ce à quoi le script complet devrait ressembler dans cette pâte
Ensuite:
Sudo chmod +x /etc/acpi/lenovo-mutemic.sh
Sudo service acpid restart
Confirmez que le fait d’appuyer sur le bouton de sourdine allume le voyant d’alimentation clignotant; appuyez à nouveau pour allumer le voyant.
Installez (ou assurez-vous) que vous avez les en-têtes et les outils construits pour votre noyau en cours d'exécution avec:
Sudo apt-get install linux-headers-$(uname -r) build-essential
Créez un répertoire temporaire et changez-le:
mkdir ~/tpacpi && cd ~/tpacpi
Téléchargez le fichier source thinkpad_acpi.c
à partir du référentiel git Ubuntu Kernel:
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"
Corrigez le avec (copiez et collez la ligne complète):
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
Dans le même dossier où thinkpad_acpi.c
a été téléchargé, vous aurez besoin d'un "Makefile". Vous pouvez le télécharger directement depuis ce Pastebin , en utilisant:
wget -OMakefile http://Pastebin.com/raw.php?i=ybpnxeUT
OU collez le texte ci-dessous dans un fichier nommé Makefile
name__:
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
Maintenant, tapez make
pour créer le module; vous verrez un fichier thinkpad_acpi.ko
dans le dossier lorsque vous avez terminé.
Testez le module corrigé après l'avoir chargé avec:
Sudo rmmod thinkpad_acpi && Sudo insmod thinkpad_acpi.ko
Confirmez maintenant que le fait d'appuyer sur le bouton micro allume/éteint la lumière orange du microphone ET que le voyant d'alimentation clignote/reste allumé.
Si cela est confirmé, procédez comme suit pour remplacer votre module actuel thinkpad_acpi
:
TPDIR =/lib/modules/$ (uname -r)/kernel/drivers/platform/x86 Calculez le processus à l'aide de $ TPDIR/thinkpad_acpi.ko $ TPDIR/thinkpad_acpi.ko.stock Sudo mv /where/you/built/it/tpacpi_micmute/thinkpad_acpi.ko $ TPDIR/thinkpad_acpi.ko
Commentez ou supprimez les lignes de leds d'alimentation dans lenovo-micmute.sh
Maintenant amusez-vous en appuyant sur le bouton Mic Mute, vous devriez le voir reflété dans:
Je ne pouvais pas le faire fonctionner immédiatement sur Ubuntu 12.10 pour la première fois en utilisant un environnement de bureau Linux.
Il a été résolu en ajoutant simplement des guillemets et en supprimant la virgule (et en ajoutant mon nom d'utilisateur):
#!/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
et ensuite suivi vos étapes dans la compilation du thinkpad_acpi.
Le tout sur un Thinkpad T520 avec NVS 4200M, Ubuntu 12.10. Je n'ai pas encore redémarré, mais j'ai testé avec l'étape de test que vous avez décrite et cela fonctionne avec l'allumage et l'extinction de la DEL de mise en sourdine et sa mise en sourdine (avec la notification). Sauter un peu l'arme semble fonctionner correctement. Merci.
Bien redémarré, le script lui-même fonctionne très bien, mais je n’ai pas installé le correctif thinkpad_acpi ... oups
D'accord, redémarrez à nouveau après l'avoir installé correctement cette fois et le voyant s'allume également. Devrait probablement avoir un script de démarrage pour vérifier si le micro est en sourdine ou non et allumer/éteindre la lumière, car la configuration actuelle ne l'allumera/éteindra que lorsque le bouton sera enfoncé.
Pour que la lumière indique si le son a été coupé ou non au démarrage au lieu de la première pression sur le bouton, je viens de sauvegarder:
#!/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
Lui a donné la permission d'exécuter
Sudo chmod +x /etc/init.d/lenovo-mic-check
Comme lenovo-mic-check à /etc/init.d/ puis exécuté:
Sudo update-rc.d lenovo-mic-check defauts 98 02
N'oubliez pas de copier vers /etc/pm/sleep.d/
Sudo cp /etc/init.d/lenovo-mic-check /etc/pm/sleep.d/lenovo-mic-check
Maintenant, le voyant est allumé si je redémarre l'ordinateur. REMARQUE: le deuxième si pourrait bien être un autre.