So lassen Sie Tastenfunktionen zu, während der Desktop gesperrt ist

20

Ist es möglich, dass die Lautstärketasten einer Tastatur weiter funktionieren, wenn Ihr Desktop gesperrt ist? Gegenwärtig deaktiviert das Standardverhalten alle Sonderfunktionstasten, bis der Desktop entsperrt wird. Ich verwende meinen PC gerne als Musik-Player und lasse ihn gesperrt, wenn ich nicht direkt an der Konsole bin, aber ich möchte trotzdem die Lautstärke regeln, wenn ein Song zu laut ist.

Cerin
quelle
+1! Ich wette, dass ein Nebeneffekt davon (wenn es möglich ist) ist, das Schlafdisplay nicht wieder zu erwecken, worüber ich mich schon einmal gewundert habe.
David Oneill
1
Ich möchte diese Funktionalität auch haben. Nicht nur für die Lautstärke, sondern auch für die Musiksteuerungstasten (Wiedergabe, Pause; Weiter; Zurück).
jPlatte
Nebenbei habe ich während des Upgrades meinen Bildschirm auf die niedrigste Einstellung gestellt. Nach der Hälfte der Installation konnte ich es nicht wieder aufdrehen. Gemacht für eine interessante Erfahrung ..
Will Richardson
Ich frage mich, ob die Medientasten in eine Art gefälschtes LIRC-Gerät verwandelt werden könnten, das vorgibt, eine Fernbedienung zu sein ... Zumindest konzeptionell macht es Sinn, oder?
Taneli

Antworten:

9

Etwas beschämend, aber da es keine Lösung zu geben schien und die Aufgabe relativ einfach zu sein schien, habe ich einen einfachen Python-Daemon geschrieben , um das Problem zu beheben. Es verwendet die python-xlib-API, um systemweite Tastendrücke zu erfassen und führt dann benutzerdefinierte Shell-Befehle aus. Es geht von einem grundlegenden Debian / Ubuntu-Setup aus, würde aber wahrscheinlich auf den meisten Linux-Systemen mit ein paar Änderungen funktionieren.

In meinem Fall sind die Lauter- / Leiser-Tasten dem Code 122/123 zugeordnet. Die entsprechenden Befehle zum Verringern oder Erhöhen der Lautstärke nur bei gesperrtem Desktop lauten daher:

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

Zugegeben, das ist etwas ausführlich. Das zweite Problem besteht darin, die aktive Soundschnittstelle auf Systemen zu finden, auf denen möglicherweise mehrere vorhanden sind (z. B. mein Laptop verfügt über eine Master- und eine Kopfhörerschnittstelle, über die diese Befehle gesteuert werden können).

Bearbeiten: Dies funktioniert ab Ubuntu 16 nicht mehr. Alle X-Funktionen scheinen deaktiviert zu sein, auch vom Terminal aus, sobald der Bildschirm gesperrt ist.

Cerin
quelle
1
Ich habe gerade diese Arbeit an Ubuntu 18.04. Ich musste den "gesperrten Test" auf der gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -ioP "true"Basis von askubuntu.com/a/890802/627247 ersetzen, weil ich den Gnome-Screesaver nicht verwende, aber danach überhaupt keine Probleme mehr.
Fabian N.
Ich kann bestätigen, dass es auch unter Ubuntu 16.04 funktioniert. Um Verwechslungen zu vermeiden, bedeutet der von Fabian N. erwähnte "gesperrte Test", gnome-screensaver-command -q | grep "is active"in den Zeilen 160-165 von freekey.py oder direkt in der Konfigurationsdatei durch das zu ersetzen, was er vorschlägt.
Pierre Thalamy
auf meinem System 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'funktioniert perfekt für den nächsten Song auf Rhythmbox. Ich arbeite immer noch an früheren und anderen Steuerelementen, aber es wird dort ankommen.
John Hamilton