Comment autoriser les fonctions clés lorsque le bureau est verrouillé

20

Est-il possible d'autoriser les touches de volume d'un clavier à continuer de fonctionner lorsque votre bureau est verrouillé? Actuellement, le comportement par défaut désactive toutes les touches de fonction spéciale jusqu'à ce que le bureau soit déverrouillé. J'aime utiliser mon PC comme lecteur de musique et le laisser verrouillé lorsque je ne suis pas directement sur la console, mais je veux quand même permettre aux gens de contrôler le volume si une chanson est trop forte.

Cerin
la source
+1! Je parie qu'un effet secondaire de cela (si c'est possible) est de ne pas réveiller l'écran de veille, ce que je me demandais auparavant.
David Oneill
1
J'aimerais aussi avoir cette fonctionnalité. Non seulement pour le volume, mais aussi pour les touches de contrôle de la musique (lecture, pause; suivant; précédent).
jPlatte
En passant, pendant que je mettais à niveau, j'ai baissé mon écran au réglage le plus bas. À mi-chemin de l'installation, je n'ai pas pu le rétablir. Conçu pour une expérience intéressante ..
Will Richardson
Je me demande si les clés multimédias pourraient être transformées en une sorte de faux appareil LIRC, faisant semblant d'être une télécommande ... Au moins conceptuellement, cela a du sens, non?
taneli

Réponses:

9

Un peu honteux, mais comme il ne semblait pas y avoir de solution existante et que la tâche semblait relativement simple, j'ai écrit un simple démon Python pour résoudre le problème. Il utilise l'API python-xlib pour capturer les pressions de touches à l'échelle du système, puis exécute des commandes shell personnalisées. Il suppose une configuration de base Debian / Ubuntu, mais fonctionnerait probablement sur la plupart des systèmes Linux avec quelques ajustements.

Pour mon cas, les touches de volume haut / bas correspondent au code 122/123, donc les commandes correspondantes pour baisser ou augmenter le volume uniquement lorsque le bureau est verrouillé sont:

gnome-screensaver-command -q | grep "is active" && bash -c '/usr/bin/pactl -- set-sink-volume `pacmd list-sinks | grep -P -o "(?<=\* index: )[0-9]+"` -10%'
gnome-screensaver-command -q | grep "is active" && bash -c '/usr/bin/pactl -- set-sink-volume `pacmd list-sinks | grep -P -o "(?<=\* index: )[0-9]+"` +10%'

Certes, c'est un peu bavard. Le deuxième grep consiste à trouver l'interface audio active sur les systèmes qui pourraient en avoir plusieurs (par exemple, mon ordinateur portable a une interface maître et casque, permettant à ces commandes de contrôler l'une ou l'autre).

Edit: Cela ne fonctionne plus à partir d'Ubuntu 16. Toutes les fonctions X semblent devenir désactivées, même depuis le terminal, une fois l'écran verrouillé.

Cerin
la source
1
Je viens de le faire fonctionner sur Ubuntu 18.04. J'ai dû remplacer le "test verrouillé" par gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -ioP "true"basé sur askubuntu.com/a/890802/627247 parce que je n'utilise pas le gnome-screesaver mais après cela, aucun problème du tout.
Fabian N.
Je peux également confirmer que cela fonctionne sur Ubuntu 16.04. Pour éviter toute confusion, le "test est verrouillé" mentionné par Fabian N. signifie remplacer gnome-screensaver-command -q | grep "is active"sur les lignes 160--165 de freekey.py ou directement dans le fichier de configuration par ce qu'il propose.
Pierre Thalamy
sur mon système 171 gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -ioP "true" && bash -c 'rhythmbox-client --next'fonctionne parfaitement pour la prochaine chanson sur rhythmbox. Je travaille toujours sur les commandes précédentes et autres, mais ça y arrivera.
John Hamilton