it-swarm.com.de

Wo speichert Ubuntu seine Tastaturkürzel-Konfiguration?

Gibt es in "Ubuntu" eine Stelle, an der eine vollständige Liste der Tasten/Kombinationen/Verknüpfungen gespeichert ist, an die welche gebunden sind?

Was sind Unitys Tastatur- und Mausverknüpfungen? listet einige "Unity" -Verknüpfungen zum Dash, Launcher usw. auf und Wie listet man die verwendeten Compiz-Tastenkombinationen auf? zeigt einen Weg zur Auflistung Compiz-Bindungen, aber ich suche mehr als das (nicht nur einige der nur auf Unity oder Compiz beschränkten Tastaturbindungen), obwohl es ein Anfang ist.

Gibt es eine globale Liste der verwendeten Tastenzuordnungen/Tastenkombinationen/Tastaturkürzel, die irgendwo in Ubuntu gespeichert sind, oder gibt es eine Möglichkeit, sie zu kompilieren und aufzulisten? Eine, die für Ubuntu und die darin laufenden Dinge gilt (Unity, Compiz, Verknüpfungen zu Programmen usw.).

Sicherlich muss Ubuntu dies irgendwo speichern, damit die auf der Tastatur gedrückte Tastenkombination darauf verweist, womit sie verbunden ist. Wenn es in Ubuntu keinen solchen Ort gibt, poste dies als Antwort, damit zukünftige Benutzer, die danach suchen, Bescheid wissen.

33
James

Ihr Fenstermanager erhält alle wichtigen Ereignisse vor den Anwendungen. Wenn er diese Ereignisse also nutzen möchte, werden sie von Ihren Anwendungen niemals empfangen. Wenn der Fenstermanager nicht auf die Schlüsselereignisse selbst reagieren möchte, leitet er sie an die Anwendung weiter.

Sie können dies auf folgende Weise selbst überprüfen:

  1. Starten Sie ein Terminal.
  2. Starten Sie xev | grep KeyPress, die X-Ereignisanzeige.
  3. Drücken Sie Alt, und beachten Sie, dass xev anzeigt, dass das Tastenereignis im Terminalfenster angezeigt wird.
  4. Drücken Sie Ctrl, und beachten Sie erneut, dass xev das Ereignis erhalten hat. Beachten Sie, wie das Terminalfenster jetzt aussieht.
  5. Drücken Sie Left arrow, um zu einem anderen Arbeitsbereich zu wechseln. (Ich nehme an, Sie haben das als Tastenkürzel für den Fenstermanager.)
  6. Drücken Sie Right arrow, um zu der Stelle zurückzukehren, an der Sie xev ausführen. Beachten Sie, dass Sie beim Wechseln des Arbeitsbereichs über die Pfeiltasten nach links und nach rechts keine Schlüsselereignisse erhalten haben - die Ausgabe ist dieselbe wie in Schritt 4.

Sie sehen also, dass der Fenstermanager in der Praxis alle wichtigen Ereignisse erhält und diese, wenn er sie nicht erfassen möchte, an die Anwendung weiterleitet. Die Anwendung kann dann dasselbe für ihre eigenen Widgets tun (z. B. wie Sie den ganzen Tag in Ihrem Webbrowser Enter drücken können, aber nichts tun, bis Sie den Cursor in die Adressleiste oder in ein Feld setzen, in dem Sie können Text eingeben).

Es ist Aufgabe der Anwendung, eigene Verknüpfungen festzulegen, und die Anwendungen werden unabhängig voneinander konfiguriert.

Wenn ich mich richtig erinnere, können Sie in KDE 3.x die Standardverknüpfungen (z. B. Ctrl-s zum Speichern) im KDE-Kontrollzentrum festlegen. Sie gelten für alle Anwendungen, die mit dem Qt-Toolkit geschrieben wurden Ich weiß, ob das noch möglich ist, seit sie zu KDE 4 gewechselt sind.

10
Lakritsbollar

Seit Ubuntu 17.10

Auf diesen Wegen :

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

Sie können auch dconf-editor (GUI) oder gsettings (CLI) verwenden.

Seit Ubuntu 12.10-17.04

~/.config/dconf/user (im dconf-editor: org.gnome.settings-daemon.plugins.media-keys.custom-keybindings (benutzerdefinierte Verknüpfungen)

~/.config/compiz-1/compizconfig

Bis Ubuntu 12.04

Die Verknüpfungen sind je nach verwendetem Desktop unterschiedlich angeordnet (gnome/unity, kde, xfce, lxde usw.).

Für Gnome sind sie unter
~/.gconf/desktop/gnome/keybindings (benutzerdefinierte Verknüpfungen)

und unter
~/.gconf/apps/metacity.

20
desgua

Nein, es gibt keinen einzigen Ort, an dem alle Verknüpfungen gespeichert sind. Anwendungen können ihre Konfigurationen beliebig speichern.

Das heißt, Sie suchen hauptsächlich nach zwei Ebenen: der Anwendungsebene (wie Strg-C zum Kopieren in Firefox) und der Fenstermanagerebene (wie Win + D zum Anzeigen des Desktops). Compiz speichert seine Konfiguration mit gconf .

Bei Anwendungen können Sie diese grob nach ihren Toolkits unterteilen. GTK-Apps verwenden nämlich auch gconf.

Sicherlich muss Ubuntu dies irgendwo speichern, damit die auf der Tastatur gedrückte Tastenkombination darauf verweist, womit sie verbunden ist.

Nicht ganz. Die fokussierte Anwendung erhält bei einem X-Tastaturereignis den ersten Kick. Wenn dies nicht der Fall ist, sprudelt sie in andere Anwendungen, nämlich den Fenstermanager. Sie können also ein Spiel haben, das Alt + F4 erfasst und das Fenster nicht schließt (verdammt, Jamestown!). Ich glaube, Sie denken, es geht zu einem zentralen Ereignis-Router, der dann mit einer Datenbank abgeglichen und an sein Ziel weitergeleitet wird. Es ist eher so, als würde man eine Flasche mit einem Getränk herumreichen: Pass, nimm einen Schluck, wenn du willst, und pass den Rest, oder nimm das Ganze und sei gierig.

Die Linux/FOSS-Umgebung ist (wie Sie vielleicht bemerkt haben) ziemlich demokratisch, und alle Anwendungen dazu zu bringen, sich auf ein einziges zentrales Tastaturkonfigurations-Repository zu einigen, ist ein Kinderspiel. Zum einen haben Sie nicht verwaltete Anwendungen, die vor langer Zeit geschrieben wurden und nichts davon wissen.

Update: Laut die Xlib-Dokumentation zum Thema :

Beginnend mit dem Quellfenster durchsucht der X-Server die Fensterhierarchie, bis er das erste Fenster findet, das von einem Client als an diesen Ereignissen interessiert angegeben wurde. Wenn für eines der dazwischenliegenden Fenster die Option "Nicht weitergeben" festgelegt ist, um die Generierung des Ereignistyps zu verhindern, werden die Ereignisse dieser Typen unterdrückt.

Ebenfalls,

Um KeyPress-, KeyRelease-, ButtonPress- und ButtonRelease-Ereignisse zu empfangen, legen Sie die Bits KeyPressMask, KeyReleaseMask, ButtonPressMask und ButtonReleaseMask im Ereignismaskenattribut des Fensters fest.

Und Sie können ein Attribut festlegen, um die Weitergabe zu deaktivieren .

Das Problem ist, dass Sie X nicht mitteilen, auf welche Tasten Sie achten sollen, sodass Sie niemals a priori sagen können welche Tasten die Anwendung abhört (geschweige denn, was sie tut) oder ob sie tatsächlich beabsichtigen, sie weiterzugeben, wenn sie tatsächlich darauf warten. Daher ist eine zentrale Registrierung auf X-Ebene nicht möglich, sodass Sie sie auf Toolkit-Ebene ausführen müssen, was praktisch unmöglich ist. : D

4
nfirvine

Anwendungen speichern ihre Verknüpfungen unabhängig voneinander, sodass es keinen zentralen Ort gibt, an dem sie gespeichert werden.

Ich verstehe nicht den gesamten Prozess der Interaktion Tastatur - Betriebssystem - Kernel - X11 - Fenstermanager - Desktop-Umgebung - Anwendungen, aber wenn ein bestimmtes Fenster wie Gedit den Tastaturfokus hat, kann es damit umgehen die Eingabe für sich allein, und das tut es auch.

1
user unknown