Gdzie Ubuntu przechowuje konfigurację skrótów klawiaturowych?

34

Czy w „Ubuntu” jest miejsce, w którym jest przechowywana pełna lista tego, do jakich klawiszy / kombinacji / skrótów są przypisane?

Jakie są skróty klawiaturowe i myszy Unity? wymień niektóre skróty „Jedność” do Dasha, Launchera itp. oraz Jak wyświetlić listę używanych skrótów klawiszowych Compiz? pokazuje sposób na wyświetlenie powiązań compiz, ale szukam czegoś więcej (nie tylko kilku skrótów klawiszowych ograniczonych tylko do Unity lub Compiz), chociaż to początek.

Czy istnieje globalna lista powiązań klawiszy / kombinacji klawiszy / skrótów klawiaturowych, która jest przechowywana gdzieś w Ubuntu, czy istnieje sposób na ich kompilację i wyświetlenie? Jeden, który dotyczy Ubuntu i działających w nim rzeczy (Unity, Compiz, Skróty do programów itp.).

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? Jeśli nie ma takiego miejsca w Ubuntu, opublikuj post jako odpowiedź, aby przyszli użytkownicy, którzy będą wyszukiwać, dowiedzieli się.

James
źródło
1
Ok, zmieniłem nazwę na mniejszą duplikat
Jorge Castro,
Dotychczas dwie odpowiedzi przyniosły dwie sprzeczne sekwencje wydarzeń. Lakritsbollar stwierdził, że menedżer okien najpierw przejmuje kontrolę, a następnie przekazuje ją aplikacjom, nfirvine stwierdził, że aplikacje najpierw się na nim łamią, a następnie przekazują do menedżera okien. Który to jest sposób?
James
Kilka innych skrótów można znaleźć na detektor-pro.com/2008/07/ubuntu-tweak-keyboard-shortcuts.html
James

Odpowiedzi:

10

Twój menedżer okien pobiera wszystkie kluczowe zdarzenia zanim zrobią to aplikacje, więc jeśli chce je zużyć, robi to i Twoje aplikacje nigdy ich nie otrzymają. Jeśli menedżer okien nie chce sam reagować na kluczowe zdarzenia, przekazuje je do aplikacji.

Możesz to zweryfikować samodzielnie w następujący sposób:

  1. Uruchom terminal.
  2. Uruchom xev | grep KeyPressprzeglądarkę zdarzeń X.
  3. Naciśnij Alt, zauważ, że xevpokazuje kluczowe zdarzenie w oknie terminala.
  4. naciśnij Ctrl , ponownie zauważ, że xevwydarzenie się udało. Zwróć uwagę na to, jak teraz wygląda okno terminala.
  5. Naciśnij, Left arrowaby przejść do innego obszaru roboczego. (Zakładam, że masz go jako klawisz skrótu menedżera okien).
  6. Naciśnij, Right arrowaby wrócić do miejsca, w którym biegnieszxev . Pamiętaj, że nigdy nie otrzymał żadnych kluczowych zdarzeń dotyczących przełączania obszarów roboczych za pomocą klawiszy strzałek w lewo i w prawo - wynik jest taki sam jak w kroku 4.

Widzisz więc, że menedżer okien w praktyce pobiera wszystkie kluczowe zdarzenia, a jeśli nie chce ich przechwytywać, przekazuje je do aplikacji. Aplikacja zrobi to samo dla własnych widżetów (np. Jak możesz naciskać Entercały dzień w przeglądarce, ale nic nie zrobi, dopóki nie umieścisz kursora w pasku adresu lub w polu, w którym możesz wpisać tekst) .

To do aplikacji należy ustawianie własnych skrótów, a aplikacje są konfigurowane niezależnie od siebie.

W KDE 3.x, jeśli dobrze pamiętam, możesz ustawić domyślne skróty (np. Ctrl-sDo zapisywania) w Centrum sterowania KDE i dotyczyłoby to wszystkich aplikacji napisanych za pomocą zestawu narzędzi Qt, ale nie wiem, czy to nadal możliwe od czasu przejścia na KDE 4.

Lakritsbollar
źródło
To nie jest odpowiedź w 100%, ale jest blisko. Zasadniczo nie ma centralnego miejsca, w którym przechowywane są powiązania / skróty klawiaturowe. Menedżer okien dostaje najpierw crack po naciśnięciu klawisza, a następnie aktywnej aplikacji. Fokus również odgrywa rolę.
James
20

Od wersji Ubuntu 17.10

Na tych ścieżkach :

dconf dump /org/gnome/desktop/wm/keybindings/
dconf dump /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/  # Custom

Możesz także użyć dconf-editor(GUI) lub gsettings(CLI).

Od wersji Ubuntu 12.10-17.04

~/.config/dconf/user(w edytorze dconf: org.gnome.settings-daemon.plugins.media-keys.custom-keybindings(niestandardowe skróty)

~/.config/compiz-1/compizconfig

Do wersji Ubuntu 12.04

Skróty są rozmieszczone inaczej w zależności od używanego pulpitu (gnome / unity, kde, xfce, lxde itp.).

W przypadku gnome są poniżej
~/.gconf/desktop/gnome/keybindings(niestandardowe skróty)

i poniżej
~/.gconf/apps/metacity.

desgua
źródło
11.10 nie używa GNOME ani Metacity.
nfirvine,
Ale ścieżka do skrótów nadal działa, gdy z niej korzystam.
desgua
Podczas patrzenia na całkiem świeżą instalację Ubuntu 11.10 na MacBooku Pro pierwsza lokalizacja nie miała pliku przypisania klawiszy, ale druga lokalizacja miała to:general/ global_keybindings/ window_keybindings/
Victor S
1
Pierwsza lokalizacja dotyczy niestandardowych skrótów.
desgua
1
@AnonymousPlatypus zobaczyć tutaj do gsettingsinstrukcji
wjandrea
4

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

nfirwina
źródło
Doszedłem do prawie tego samego wniosku, że skupienie determinuje to, co obsługuje dane wejściowe. Można to zaobserwować, otwierając okno przeglądarki, a następnie otwierając okno terminala, które teraz staje się aktywnym oknem. Jeśli najedziesz myszką na okno przeglądarki, użyj kółka przewijania, aby przewinąć okno przeglądarki, nawet jeśli okno Terminal jest aktywnym oknem.
James
Miałem nadzieję na łatwą odpowiedź na moje pytanie, a przynajmniej na łatwy sposób kompilacji i listy skrótów, ale nie wydaje się to możliwe, biorąc pod uwagę sposób, w jaki naciśnięcia klawiszy ostatecznie docierają do miejsca, w którym zostały zdefiniowane. Skróty klawiaturowe / skróty klawiszowe wydają się być rozmieszczone w różnych miejscach, a ich użycie zwykle zależy od tego, co jest aktywne i gdzie aktualnie się skupia.
James
1
Jednak nie jestem z tobą w aplikacji, która otrzymuje kluczowe zdarzenie przed menedżerem okien. Myślę, że Menedżer okien najpierw pękał podczas tego wydarzenia, a następnie aktywnych aplikacji.
James
1

Aplikacje przechowują swoje skróty niezależnie, więc nie ma centralnego miejsca, w którym są przechowywane.

Nie rozumiem całego procesu klawiatury interakcji - OS - jądro - X11 - Menedżer okien - Środowisko pulpitu - Aplikacje, ale jeśli pewne okno, takie jak Gedit, ma fokus klawiatury, może obsłużyć wkład sam w sobie i robi to.

nieznany użytkownik
źródło
-1

W 11.10, w obszarze Konfiguracja systemu -> Klawiatura -> Skróty, pojawi się całkiem spora ich lista. Czy tego szukasz?

Cmorales
źródło
Szuka pliku, który zawiera wszystkie skróty, a nie tylko ich listę.
Mark O'Sullivan