web-dev-qa-db-fra.com

Où Ubuntu stocke-t-il sa configuration de raccourci clavier?

Y a-t-il un endroit dans "Ubuntu" qui stocke une liste complète de quelles touches/combinaisons/raccourcis sont liés à quoi?

Quels sont les raccourcis clavier et souris d'Unity? liste quelques raccourcis "Unity" vers le tableau de bord, le lanceur, etc. et Comment lister les raccourcis clavier Compiz utilisés? montre un moyen de lister les liens Compiz, mais je cherche plus que cela (pas seulement quelques uns des raccourcis clavier uniquement à Unity ou Compiz) bien que c'est un début.

Existe-t-il une liste globale des combinaisons/combinaisons de touches/raccourcis clavier utilisés, stockée quelque part dans Ubuntu, ou existe-t-il un moyen de les compiler et de les lister? Celle qui s’applique à Ubuntu et à tout ce qui s’exécute (Unity, Compiz, Raccourcis vers les programmes, etc.).

Ubuntu doit sûrement stocker cela quelque part pour que la combinaison de touches sur le clavier soit dirigée vers ce à quoi elle est connectée? S'il n'y a pas un tel lieu dans Ubuntu, alors postez-le comme réponse, afin que les futurs utilisateurs, cette recherche, le sachent.

33
James

Votre gestionnaire de fenêtres obtient tous les événements clés avant les applications. Par conséquent, s'il souhaite utiliser ces événements, il le fait et vos applications ne les recevront jamais. Si le gestionnaire de fenêtres ne veut pas réagir aux événements clés, il les transmet à l'application.

Vous pouvez le vérifier vous-même de la manière suivante:

  1. Démarrer un terminal.
  2. Démarrez xev | grep KeyPress, l'afficheur d'événements X.
  3. Appuyez sur Altname__, notez que xevindique que l'événement clé a été enregistré dans la fenêtre du terminal.
  4. Appuyez sur Ctrlname__, notez à nouveau que xeva eu l'événement. Prenez note de ce à quoi la fenêtre du terminal ressemble maintenant.
  5. Appuyez sur Left arrow pour accéder à un autre espace de travail. (Je suppose que vous avez cela comme touche de raccourci du gestionnaire de fenêtres.)
  6. Appuyez sur Right arrow pour revenir à l'endroit où vous exécutez xevname__. Notez qu’il n’a jamais reçu d’événement clé pour le changement d’espaces de travail via les touches fléchées gauche et droite - le résultat est identique à celui de l’étape 4.

Ainsi, vous voyez que le gestionnaire de fenêtres obtient en pratique tous les événements clés et, s'il ne veut pas les capturer, il les transmet à l'application. L’application fait alors la même chose pour ses propres widgets (comme comment vous pouvez appuyer sur Entertoute la journée dans votre navigateur Web, mais cela ne fera rien tant que vous n'aurez pas placé le curseur dans la barre d'adresse ou un champ où vous pourrez saisir du texte. ).

Il appartient à l'application de définir ses propres raccourcis et les applications sont configurées indépendamment les unes des autres.

Dans KDE 3.x, si je me souviens bien, vous pouvez définir les raccourcis par défaut (par exemple, Ctrl-s pour enregistrer) dans le Centre de contrôle KDE et cela s'appliquerait à toutes les applications écrites avec le toolkit Qt, mais je ne sais pas si cela reste possible depuis leur passage à KDE 4.

10
Lakritsbollar

Depuis Ubuntu 17.10

Sur ces chemins :

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

Vous pouvez également utiliser dconf-editor (GUI) ou gsettings (CLI).

Depuis Ubuntu 12.10-17.04

~/.config/dconf/user (dans dconf-editor: org.gnome.settings-daemon.plugins.media-keys.custom-keybindings (raccourcis personnalisés)

~/.config/compiz-1/compizconfig

Jusqu'à Ubuntu 12.04

Les raccourcis sont placés différemment selon le bureau que vous utilisez (gnome/Unity, kde, xfce, lxde, etc.).

Pour gnome, ils sont sous
~/.gconf/desktop/gnome/keybindings (raccourcis personnalisés)

et sous
~/.gconf/apps/metacity.

20
desgua

Non, il n'y a pas de lieu unique où tous les raccourcis sont stockés. Les applications peuvent choisir de stocker leurs configurations où bon leur semble.

Cela dit, vous examinez principalement deux niveaux: le niveau de l'application (comme Ctrl-C pour la copie dans Firefox) et le niveau du gestionnaire de fenêtres (comme Win + D pour afficher le bureau). Compiz utilise gconf pour stocker sa configuration .

Pour les applications, vous pouvez les diviser grossièrement par leurs boîtes à outils. A savoir, les applications GTK utilisent aussi gconf.

Ubuntu doit sûrement stocker cela quelque part pour que la combinaison de touches sur le clavier soit dirigée vers ce à quoi elle est connectée?

Pas assez. L’application ciblée est traitée en premier lors d’un événement clavier X, mais s’il ne le fait pas, elle est renvoyée vers d’autres applications, notamment le gestionnaire de fenêtres. Ainsi, vous pouvez avoir un jeu qui capture Alt + F4 et ne ferme pas la fenêtre (putain, Jamestown!). Je pense que vous pensez qu'il va à un routeur d'événements central, puis mis en correspondance avec une base de données, et routé vers sa destination. Cela ressemble plus à passer une bouteille de boisson: passez, prenez une gorgée si vous voulez et passez le reste, ou prenez le tout et soyez gourmand.

L’environnement Linux/FOSS (vous l’avez peut-être remarqué) est assez démocratique, et l’obtention d’un accord entre toutes les applications sur un référentiel de configuration de clavier central unique est une tâche insensée. D'une part, vous avez des applications non gérées qui ont été écrites il y a longtemps et qui ne le sauraient pas.

Mise à jour: Selon la documentation Xlib sur le sujet :

En commençant par la fenêtre source, le serveur X recherche dans la hiérarchie des fenêtres jusqu'à ce qu'il localise la première fenêtre spécifiée par un client comme étant intéressée par ces événements. Si l'une des fenêtres intermédiaires a son masque do-not-propagate-mask défini pour interdire la génération du type d'événement, les événements de ces types seront supprimés.

Également,

Pour recevoir les événements KeyPress, KeyRelease, ButtonPress et ButtonRelease, définissez les bits KeyPressMask, KeyReleaseMask, ButtonPressMask et ButtonReleaseMask dans l'attribut masque d'événement de la fenêtre.

Et vous pouvez définir un attribut pour désactiver la propagation .

Le problème est que vous ne dites pas à X quelles touches écouter, vous ne pouvez donc jamais dire a priori quelles sont les clés que l'application écoute (sans parler de ce qu'elles font) ou vraiment si elles ont l'intention de les propager si elles les écoutent. Ainsi, un registre central est impossible au niveau X, vous devez donc le faire au niveau de la boîte à outils, ce qui est pratiquement impossible. :RÉ

4
nfirvine

Les applications stockent leurs raccourcis de manière indépendante, il n'y a donc pas de lieu central où ils sont stockés.

Je ne comprends pas tout le processus du clavier d'interaction - Système d'exploitation - Noyau - X11 - Gestionnaire de fenêtres - Environnement de bureau - Applications, mais si une fenêtre donnée, telle que Gedit, a le focus du clavier, elle peut gérer l'entrée seule, et elle le fait.

1
user unknown