Cómo permitir funciones clave mientras el escritorio está bloqueado

20

¿Es posible permitir que las teclas de volumen de un teclado continúen funcionando cuando su escritorio está bloqueado? Actualmente, el comportamiento predeterminado deshabilita todas las teclas de funciones especiales hasta que se desbloquea el escritorio. Me gusta usar mi PC como reproductor de música y dejarlo bloqueado cuando no estoy directamente en la consola, pero todavía quiero permitir que la gente controle el volumen si una canción está demasiado alta.

Cerin
fuente
+1! Apuesto a que un efecto secundario de esto (si es posible) es no volver a despertar la pantalla para dormir, que es algo que me he preguntado antes.
David Oneill
1
Me gustaría tener esta funcionalidad también. No solo para el volumen, sino también para las teclas de control de música (reproducción, pausa; siguiente; anterior).
jPlatte
Como comentario aparte, mientras estaba actualizando, bajé la pantalla a la configuración más baja. A mitad de la instalación no pude volver a encenderlo. Hecho para una experiencia interesante ..
Will Richardson
Me pregunto si las teclas multimedia podrían convertirse en algún tipo de dispositivo LIRC falso, pretendiendo ser un control remoto ... Al menos conceptualmente tiene sentido, ¿verdad?
taneli

Respuestas:

9

Un complemento un tanto vergonzoso, pero como no parecía haber ninguna solución existente, y dado que la tarea parecía relativamente sencilla, escribí un demonio Python simple para solucionar el problema. Utiliza la API python-xlib para capturar las pulsaciones de teclas en todo el sistema y luego ejecuta comandos de shell personalizados. Asume una configuración básica de Debian / Ubuntu, pero probablemente funcionaría en la mayoría de los sistemas Linux con algunos ajustes.

En mi caso, las teclas de subir / bajar volumen se asignan al código 122/123, por lo que los comandos correspondientes para bajar o subir el volumen solo cuando el escritorio está bloqueado son:

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%'

Es cierto que eso es un poco detallado. El segundo grep es encontrar la interfaz de sonido activa en sistemas que pueden tener varios (por ejemplo, mi computadora portátil tiene una interfaz Master y Headphone, lo que permite controlar estos comandos).

Editar: Esto ya no funciona a partir de Ubuntu 16. Todas las funciones X parecen deshabilitarse, incluso desde el terminal, una vez que la pantalla se bloquea.

Cerin
fuente
1
Acabo de hacer que esto funcione en Ubuntu 18.04. Tenía que sustituir la "prueba está bloqueado", con gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -ioP "true"base en askubuntu.com/a/890802/627247 porque no estoy usando el gnome-screesaver pero después de eso, no hay problema en absoluto.
Fabian N.
Puedo confirmar que también funciona en Ubuntu 16.04. Para evitar confusiones, la "prueba bloqueada" mencionada por Fabian N. significa reemplazar gnome-screensaver-command -q | grep "is active"en las líneas 160--165 de freekey.py o directamente en el archivo de configuración por lo que sugiere.
Pierre Thalamy el
en mi sistema 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'funciona perfectamente para la próxima canción en rhythmbox. Todavía estoy trabajando en controles anteriores y otros pero llegará allí.
John Hamilton