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

34

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? lister quelques raccourcis "Unity" vers le tableau de bord , le lanceur, etc. et comment lister les associations de touches Compiz utilisées? montre un moyen de lister les liaisons compiz, mais je recherche plus que cela (pas seulement quelques-unes des combinaisons de touches limitées à Unity ou Compiz) bien que ce soit 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 de cette recherche le sachent.

James
la source
1
Ok j'ai retitéré pour être moins duplicate-y
Jorge Castro
Deux réponses jusqu'à présent ont mis en évidence deux séquences d'événements contradictoires. Lakritsbollar a déclaré que le gestionnaire de fenêtres obtenait le contrôle en premier, puis le transférait aux applications. De quel côté est-ce?
James
Quelques raccourcis supplémentaires peuvent être trouvés à detector-pro.com/2008/07/ubuntu-tweak-keyboard-shortcuts.html
James

Réponses:

10

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émarrer xev | grep KeyPress, l'observateur d'événements X.
  3. Appuyez sur Alt, notez que cela xevindique que l'événement clé a été enregistré dans la fenêtre du terminal.
  4. Appuyez sur Ctrl, notez à nouveau que xevl'événement a eu lieu. Prenez note de ce à quoi la fenêtre du terminal ressemble maintenant.
  5. Appuyez sur Left arrowpour 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 arrowpour revenir à l'endroit où vous courez xev. Notez qu’il n’a jamais reçu d’événements clés 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 (par exemple, comment vous pouvez appuyer Entertoute la journée dans votre navigateur Web, mais cela ne changera rien tant que vous n’aurez pas placé le curseur dans la barre d’adresse ou un champ dans lequel 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-spour 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 est toujours possible. depuis leur passage à KDE 4.

Lakritsbollar
la source
Ce n'est pas une réponse à 100%, mais c'est la fin. En gros, il n’existe aucun lieu central où les raccourcis clavier sont stockés. Le gestionnaire de fenêtres commence par se fissurer à l’appui des touches puis des applications actives. La mise au point joue également un rôle.
James
20

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.

desgua
la source
11.10 n'utilise ni GNOME ni Metacity.
nfirvine
Mais le chemin d'accès aux raccourcis fonctionne toujours tel que je l'utilise.
Desgua
Lors de la recherche d'une nouvelle installation d'ubuntu 11.10 sur un macbook pro, le premier emplacement ne contenait pas le fichier de liaison de clé, mais le second avait ceci:general/ global_keybindings/ window_keybindings/
Victor S
1
Le premier emplacement concerne les raccourcis personnalisés.
desgua
1
@AnonymousPlatypus voir ici pour gsettingsinstructions
wjandrea
4

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 kits d’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 reçoit le premier coup de poing lors d’un événement de clavier X, mais si ce n’est pas le cas, 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 un jeu ridicule. D'une part, vous avez des applications non gérées qui ont été écrites il y a longtemps et qui ne le savent 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 sont les touches à écouter, vous ne pouvez donc jamais dire a priori quelles sont les touches que l'application écoute (sans parler de ce qu'elles font) ou vraiment si elles ont l'intention de les propager si elles le sont réellement. à l'écoute. 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É

Nfirvine
la source
Je suis arrivé à peu près à la même conclusion, c'est le focus qui détermine ce qui gère les entrées. Cela peut être observé en ouvrant une fenêtre du navigateur, puis en ouvrant une fenêtre de terminal qui devient maintenant la fenêtre active. Si vous maintenez la souris sur la fenêtre du navigateur, utilisez la molette de défilement. La fenêtre du navigateur défilera alors que la fenêtre du terminal est la fenêtre active.
James
J'espérais une réponse facile à ma question, ou au moins un moyen simple de compiler et de lister les raccourcis, mais cela ne semble pas possible étant donné la manière dont les presses à clé parviennent finalement à leur définition. Les raccourcis clavier / raccourcis clavier semblent être éparpillés et leur utilisation dépend généralement de ce qui est actif et de l’orientation actuelle.
James
1
Cependant, je ne suis pas avec vous sur l'application pour obtenir l'événement clé avant le gestionnaire de fenêtres. Je pense que le gestionnaire de fenêtres a tout d’abord craqué lors de l’événement, puis les applications actives.
James
1

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.

Utilisateur inconnu
la source
-1

Dans 11.10, sous Configuration du système -> Clavier -> Raccourcis, vous en obtenez une assez grande liste. Est-ce ce que vous cherchez?

Cmorales
la source
Il recherche le fichier contenant tous les raccourcis, pas seulement une liste.
Mark O'Sullivan