Nie, nie ma jednego miejsca, w którym przechowywane są wszystkie skróty. Aplikacje mogą przechowywać swoje konfiguracje w dowolnym miejscu.
To powiedziawszy, patrzysz głównie na dwa poziomy: poziom aplikacji (jak Ctrl-C dla kopiowania w Firefoksie) i poziom menedżera okien (jak Win + D, aby wyświetlić pulpit). Compiz używa gconf do przechowywania swojej konfiguracji .
W przypadku aplikacji można je z grubsza podzielić według ich zestawów narzędzi. Mianowicie, aplikacje GTK również używają gconf.
Z pewnością Ubuntu musi to gdzieś przechowywać, aby kombinacja klawiszy wciśnięta na klawiaturze była skierowana na to, z czym jest związana?
Nie do końca. Zogniskowana aplikacja jest uruchamiana po raz pierwszy w przypadku zdarzenia X na klawiaturze, ale jeśli nie, przenosi się do innych aplikacji, mianowicie menedżera okien. Tak więc możesz mieć grę, która przechwytuje Alt + F4 i nie zamyka okna (cholera, Jamestown!). Myślę, że myślisz, że idzie do jakiegoś centralnego routera zdarzeń, a następnie dopasowuje się do bazy danych i kieruje do miejsca docelowego. Bardziej przypomina podawanie butelki napoju: podaj, pociągnij łyk, jeśli chcesz i podaj resztę, albo weź wszystko i bądź chciwy.
Środowisko Linux / FOSS (być może zauważyłeś) jest dość demokratyczne, a uzyskanie zgody wszystkich aplikacji na jedno centralne repozytorium konfiguracji klawiatury jest głupcem. Po pierwsze, masz nieopracowane aplikacje, które zostały napisane dawno temu i nie wiedziałbyś o tym.
Aktualizacja: Zgodnie z dokumentacją Xlib na ten temat :
Począwszy od okna źródłowego, serwer X przeszukuje hierarchię okien, aż znajdzie pierwsze okno określone przez klienta jako zainteresowane tymi zdarzeniami. Jeśli jedno z interweniujących okien ma ustawioną maskę „nie propaguj”, aby zabronić generowania typu zdarzenia, zdarzenia tego typu zostaną pominięte.
Również,
Aby odbierać zdarzenia KeyPress, KeyRelease, ButtonPress i ButtonRelease, ustaw bity KeyPressMask, KeyReleaseMask, ButtonPressMask i ButtonReleaseMask w atrybucie maski zdarzenia okna.
I możesz ustawić atrybut, aby wyłączyć propagację .
Problem polega na tym, że nie mówisz X, które klucze mają nasłuchiwać, więc nigdy nie możesz z góry powiedzieć, jakich kluczy słucha aplikacja (nie mówiąc już o tym, co robią), ani tak naprawdę, czy zamierzają ją propagować, jeśli w rzeczywistości są słucham tego. Dlatego centralny rejestr jest niemożliwy na poziomie X, więc trzeba by to zrobić na poziomie zestawu narzędzi, co jest praktycznie niemożliwe. :RE