Je viens d’installer Ubuntu 16.04 sur mon ThinkPad T450 et, pour une raison quelconque, les touches de support pour le volume et la luminosité de l’écran ne donnent pas de codes de clé ou d’appareils de frappe (par exemple, XF86AudioRaiseVolume). Mais toutes les autres clés multimédias donnent les valeurs correctes.
Ce qui est étrange, c'est que les touches multimédias fonctionnent toujours bien dans l'unité et gnome, c'est simplement un problème lorsque j'utilise i3 car je ne peux pas mapper les touches de volume pour modifier le volume.
Voici ce que xev
renvoie pour les touches Volume bas, Volume haut et Muet muet:
Baisser le volume:
FocusOut event, serial 33, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyPointer
FocusIn event, serial 33, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 33, synthetic NO, window 0x0,
keys: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Monter le son:
FocusOut event, serial 33, synthetic NO, window 0x1a00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 33, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 33, synthetic NO, window 0x0,
keys: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Volume muet:
FocusOut event, serial 33, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyPointer
FocusIn event, serial 33, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 33, synthetic NO, window 0x0,
keys: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Comme vous pouvez le constater, ils sont tous identiques. Je ne vois donc pas comment l’unité ou le gnome peuvent les différencier. Juste pour référence, je vais montrer la sortie pour le micro éteint et le wifi éteint par les touches multimédias de xev
:
KeyRelease event, serial 33, synthetic NO, window 0x1a00001,
root 0xf6, subw 0x0, time 3107820, (-19,759), root:(625,798),
state 0x0, keycode 198 (keysym 0x1008ffb2, XF86AudioMicMute), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 34, synthetic NO, window 0x1a00001,
root 0xf6, subw 0x0, time 3112189, (-19,759), root:(625,798),
state 0x0, keycode 246 (keysym 0x1008ff95, XF86WLAN), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
Avant d’installer Ubuntu (j’utilisais Arch), j’obtenais des résultats similaires pour les clés de volume.
Les touches de luminosité ne fonctionnent pas non plus, sont-elles remplacées à un niveau bas? Existe-t-il un moyen de résoudre le problème pour qu'ils renvoient la valeur correcte ou existe-t-il un autre moyen de faire en sorte que les clés multimédias fonctionnent pour ubuntu?
Mise à jour: C'est ce que xev
donne pour les touches d'augmentation et de diminution du volume pendant l'exécution de l'unité.
FocusOut event, serial 47, synthetic NO, window 0x4800001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 47, synthetic NO, window 0x4800001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 47, synthetic NO, window 0x0,
keys: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 47, synthetic NO, window 0x4800001,
root 0xf7, subw 0x0, time 2182026, (-1217,972), root:(525,2104),
state 0x0, keycode 122 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 47, synthetic NO, window 0x4800001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 47, synthetic NO, window 0x4800001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 47, synthetic NO, window 0x0,
keys: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 47, synthetic NO, window 0x4800001,
root 0xf7, subw 0x0, time 2185429, (-1217,972), root:(525,2104),
state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Lors de l'exécution de l'unité, j'ai également unity-settings-daemon
, unity-panel-service
et unity-fallback-mount-helper
. L'un de ceux-ci pourrait-il intercepter l'événement et ajouter les XF86
keysyms? Aucun d'entre eux ne fonctionne sous i3.
En réponse à @Adaephon, j'ai ceci dans ma config i3:
# volume controls
bindsym XF86AudioRaiseVolume exec amixer -q set Master playback 2%+ unmute
bindsym XF86AudioLowerVolume exec amixer -q set Master playback 2%- unmute
bindsym XF86AudioMute exec amixer -q set Master mute
Il semble que les clés en question aient déjà été récupérées globalement par une autre application. Les trois segments de sortie que vous obtenez de xev
ne sont liés qu’à la perte et à la réactivation de la fenêtre xev, tandis que la clé est saisie autrement (Voir mon message sur l’ancien i3 FAQ ).
Il y a deux causes probables, pourquoi xev
pourrait afficher une sortie comme celle-ci et que la liaison de clé ne fonctionne pas:
Je voudrais d’abord vérifier si les clés en question - XF86AudioLowerVolume (keycode 122
), XF86AudioRaiseVolume (keycode 123
) et XF86AudioMute (keycode 121
) - sont déjà liés à bindsym
(ou bindcode
) dans votre configuration i3 . Peut-être que c'est seulement la commande liée, qui ne fonctionne pas.
(Mise à jour) De l'extrait de code de votre i3 config, cela semble être le cas. Je pense que 16.04 utilise PulseAudio par défaut, donc amixer
pourrait même ne pas être installé. Vous pouvez utiliser pactl
pour modifier le volume sur PulseAudio. Pour émuler vos paramètres amixer
précédents, essayez ceci:
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +2%; exec pactl set-sink-mute @DEFAULT_SINK@ 0
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -2%; exec pactl set-sink-mute @DEFAULT_SINK@ 0
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
Vous pouvez également utiliser 1
au lieu de toggle
sur set-sink-mute
, si vous souhaitez réactiver le son uniquement avec le XF86AudioLowerVolume et XF86AudioRaiseVolume clés.
Si ce n'est pas le cas, un autre outil récupère ces clés. Un candidat probable est gnome-settings-daemon
, unity-settings-daemon
pourrait en être un autre. En outre, certains lecteurs multimédias peuvent essayer de lier ces clés globalement. Je suggère de vérifier la sortie de ps aux
sur une nouvelle session i3 == pour voir ce qui est démarré automatiquement. Lorsque vous avez trouvé le coupable, vous avez essentiellement trois options:
exec
dans votre configuration i3 ), vous pouvez simplement le supprimer. S'il est démarré automatiquement en raison de certains préréglages Ubuntu, cela peut nécessiter davantage de travail.Pour gnome-settings-daemon
, vous pouvez utiliser les instructions de mon (autre) message sur l'ancien i3 FAQ :
Vous devriez pouvoir obtenir une liste de clés liées avec les commandes suivantes:
gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys
Vous pouvez ensuite les supprimer en analysant une chaîne empy
gsettings set org.gnome.settings-daemon.plugins.media-keys volume-mute ''
gsettings set org.gnome.settings-daemon.plugins.media-keys volume-down ''
gesttings set org.gnome.settings-daemon.plugins.media-keys volume-up ''
Vous pouvez également utiliser dconf
:
dconf write /org/gnome/settings-daemon/plugins/media-keys/volume-mute "''"
dconf write /org/gnome/settings-daemon/plugins/media-keys/volume-down "''"
dconf write /org/gnome/settings-daemon/plugins/media-keys/volume-up "''"