Ok, znalazłem to na https://help.ubuntu.com/community/MultimediaKeys
Kiedy naciskasz klawisz na klawiaturze, jądro Linuksa generuje dla niego surowy skancode (jeśli jest przypisany). Każdy scancode można przypisać do kodu klucza. To jest na poziomie jądra. X ma (quasi) całkowicie niezależny sposób mapowania kluczy: X odczytuje tablicę kodów jądra podczas uruchamiania, a następnie mapuje go na swoją niezależną tablicę kodów (jest taki sam jak kody kluczy jądra, ale różni się :)). Następnie każdy kod klucza można odwzorować na klucz, tzn. Ciąg znaków, który reprezentuje klucz lub sugeruje akcję. Aby więc nasze klucze były w pełni funkcjonalne, potrzebują jądra scancode / keycode oraz X keycode / keysym. Może to wydawać się dziwne, ale programiści X mają powód, aby zachować oddzielne mapowanie klawiatury od jądra. To wcale nie jest trudne, tylko dość żmudna procedura.
Więc kody są mapowane na klucze, więc gdzie są klucze? Znalazłem odpowiedź na to pytanie: Gdzie znajdę teraz listę wszystkich kluczy X? Ponieważ mówimy o klawiszach głośności, można je znaleźć w XF86keysym.h
kodzie źródłowym wymienionym w odpowiedzi.
W tym pliku na moim komputerze znalazłem następujące dane dla woluminu:
#define XF86XK_AudioLowerVolume 0x1008FF11 /* Volume control down */
#define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */
#define XF86XK_AudioRaiseVolume 0x1008FF13 /* Volume control up */
Dziwne ... inne wartości niż cokolwiek innego, może istnieje wiele systemów do obsługi kluczy? http://crunchbang.org/forums/viewtopic.php?id=16656
Korzystam z Xubuntu i aby kontrolować klawisze, muszę ręcznie mapować akcje (jak to. Jak zmienić skróty klawiaturowe w Xubuntu? ). Jednak powiadomienia wydają się niezależne, jakby odbierały naciśnięcie klawisza i działały odpowiednio. Może to oznaczać, że inne programy w Ubuntu są skonfigurowane w ten sposób, więc nie ma potrzeby mapowania skryptów na klawisze.
Jestem więc całkiem pewien, że programy odbierają teraz klucz (więc nie można znaleźć skryptu).
W Xubuntu miałem ten problem z Pulse Audio i używając niestandardowych skryptów do zmiany głośności. Wydawało się, że Pulse przechwytuje klawisz Wycisz, klawisz Wycisz wycisza Alsa i PulseAudio, ale wyłącza wyciszenie tylko Alsy stworzonej dla interesujących obejść.
Sprawdź to na temat NotifyOSD https://wiki.ubuntu.com/NotifyOSD#Volume_changes
Jeśli spojrzysz na te diagramy: https://wiki.ubuntu.com/NotifyOSD#Architecture
Zwłaszcza ten:
Pokazuje, że istnieje „odbiornik kluczy sprzętowych”, który otrzymuje dane z DBus lub HAL? Następnie „pobiera element wizualny z systemu”, który ikony dźwięku i jasności znajdują się w źródle Notify-OSD, a następnie tworzy bańkę stamtąd.
To wszystko jest szalone mylące, ale o ile rozumiem (do tej pory):
raw scancode (np. e016)> kod klucza (np. 160)> keyym (np. XF86AudioMute)> demon ustawień gnome (np. zwiększanie głośności)> sygnał DBus> detektor kluczy sprzętowych dla powiadomień-osd (lub innych słuchanie programu)