Jak zezwolić na kluczowe funkcje przy zablokowanym pulpicie

20

Czy możliwe jest zezwolenie na kontynuowanie działania klawiszy głośności na klawiaturze, gdy pulpit jest zablokowany? Obecnie domyślne zachowanie wyłącza wszystkie klawisze funkcji specjalnych do momentu odblokowania pulpitu. Lubię używać komputera jako odtwarzacza muzyki i zostawiam go zablokowanego, gdy nie jestem bezpośrednio przy konsoli, ale nadal chcę pozwolić ludziom kontrolować głośność, jeśli utwór jest zbyt głośny.

Cerin
źródło
+1! Założę się, że efektem ubocznym tego (jeśli to możliwe) jest nie przebudzenie ekranu uśpienia, o czym wcześniej się zastanawiałem.
David Oneill
1
Chciałbym też mieć tę funkcjonalność. Nie tylko dla głośności, ale także dla klawiszy sterowania muzyką (odtwarzanie, pauza; dalej; poprzedni).
jPlatte
Na marginesie, podczas aktualizacji, obniżyłem ekran do najniższego ustawienia. W połowie instalacji nie mogłem go ponownie włączyć. Stworzony dla ciekawych wrażeń ..
Will Richardson
Zastanawiam się, czy klucze multimedialne można przekształcić w jakieś fałszywe urządzenie LIRC, udające pilota ... Przynajmniej pod względem koncepcyjnym ma to sens, prawda?
taneli

Odpowiedzi:

9

Trochę wstydliwa wtyczka, ale ponieważ wydaje się, że nie ma już żadnego rozwiązania, a ponieważ zadanie wydawało się stosunkowo proste, napisałem prostego demona Pythona, aby rozwiązać problem. Używa API python-xlib do przechwytywania naciśnięć klawiszy w całym systemie, a następnie uruchamia niestandardowe polecenia powłoki. Zakłada podstawową konfigurację Debiana / Ubuntu, ale prawdopodobnie działałby na większości systemów Linux z kilkoma poprawkami.

W moim przypadku klawisze zwiększania / zmniejszania głośności są mapowane na kod 122/123, więc odpowiednie polecenia zmniejszania lub zwiększania głośności tylko przy zablokowanym pulpicie to :

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

Trzeba przyznać, że to trochę gadatliwe. Drugim grepem jest znalezienie aktywnego interfejsu dźwiękowego w systemach, które mogą mieć kilka (np. Mój laptop ma interfejs Master i Słuchawki, pozwalając tym komendom sterować).

Edycja: To nie działa już od Ubuntu 16. Wszystkie funkcje X wydają się być wyłączone, nawet z terminala, gdy ekran się zablokuje.

Cerin
źródło
1
Właśnie dostałem to działa na Ubuntu 18.04. Musiałem zastąpić „test zablokowania” gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -ioP "true"oparty na askubuntu.com/a/890802/627247, ponieważ nie używam gnome-screesaver, ale potem nie ma żadnych problemów.
Fabian N.
Mogę potwierdzić, że działa również na Ubuntu 16.04. Aby uniknąć nieporozumień, „test zablokowania” wspomniany przez Fabiana N. oznacza zastąpienie gnome-screensaver-command -q | grep "is active"linii 160--165 pliku freekey.py lub bezpośrednio w pliku konfiguracyjnym tym, co on sugeruje.
Pierre Thalamy,
w moim systemie 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'działa idealnie dla następnej piosenki na rhythmbox. Nadal pracuję nad poprzednimi i innymi kontrolkami, ale się tam znajdą.
John Hamilton