41 votes

Où Ubuntu stocke-t-il sa configuration des raccourcis clavier ?

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

Quels sont les raccourcis clavier et souris d'Unity ? liste quelques raccourcis "Unity" vers le Dash, le lanceur, etc. et Comment lister les raccourcis de Compiz en cours d'utilisation ? montre un moyen de lister les connexions de Compiz, mais je cherche plus que ça (pas juste quelques connexions limitées uniquement à Unity ou Compiz) bien que cela soit un début.

Y a-t-il une liste globale des raccourcis clavier/combinations de touches/raccourcis clavier en cours d'utilisation, qui est stockée quelque part dans Ubuntu ou y a-t-il un moyen de les compiler et de les lister ? Un qui s'applique à Ubuntu et aux éléments qui y tournent (Unity, Compiz, Raccourcis vers les programmes, etc.).

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

24voto

Bill K Points 32115

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 en fonction du bureau que vous utilisez (gnome/unity, kde, xfce, lxde, etc).

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

et sous
~/.gconf/apps/metacity.

13voto

HellSaint Points 35493

Votre gestionnaire de fenêtres reçoit les événements de touche avant que les applications ne le fassent, donc s'il souhaite consommer ces événements, il le fait et vos applications ne les recevront jamais. Si le gestionnaire de fenêtres ne souhaite pas réagir aux événements de touche lui-même, il les transmet à l'application.

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

  1. Démarrer un terminal.
  2. Démarrer xev | grep KeyPress, l'afficheur d'événements X.
  3. Appuyer sur Alt, noter que xev montre qu'il a reçu l'événement de touche dans sa fenêtre de terminal.
  4. Appuyer sur Ctrl, noter de nouveau que xev a reçu l'événement. Prendre note de l'apparence de la fenêtre de terminal à ce moment-là.
  5. Appuyer sur la touche de gauche pour aller sur un autre espace de travail. (Je suppose que vous avez cela comme raccourci de gestionnaire de fenêtres.)
  6. Appuyer sur la touche de droite pour revenir à l'endroit où vous exécutez xev. Noter qu'il n'a jamais reçu les événements de touche de votre passage d'un espace de travail à l'autre via les touches de gauche et de droite -- la sortie est la même qu'à l'étape 4.

Vous voyez donc que le gestionnaire de fenêtres reçoit en pratique tous les événements de touche et s'il ne veut pas les capturer, il les transmet à l'application. L'application peut ensuite faire de même pour ses propres widgets (comme le fait que vous pouvez appuyer sur Entrée toute la journée dans votre navigateur web, mais rien ne se passera tant que vous n'avez pas placé le curseur dans la barre d'adresse ou un champ où vous pouvez saisir du texte).

C'est à 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 pouviez définir les raccourcis par défaut (par ex. Ctrl-s pour sauvegarder) dans le Centre de Contrôle de KDE et cela s'appliquerait à toutes les applications écrites avec la trousse à outils Qt, mais je ne sais pas si c'est encore possible depuis leur passage à KDE 4.

4voto

angelina Points 31

Non, il n'y a pas un endroit unique où tous les raccourcis sont stockés. Les applications peuvent choisir d'enregister leurs configurations où elles le souhaitent.

Cela dit, vous regardez principalement deux niveaux : le niveau de l'application (comme Ctrl-C pour copier 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 approximativement les diviser selon leurs outils. Notamment, les applications GTK utilisent également gconf.

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

Pas tout à fait. L'application en cours reçoit en premier un événement clavier X, mais si ce n'est pas le cas, il remonte à 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 (maudit soit Jamestown !). Je pense que vous pensez que cela passe par un routeur d'événements central, puis est assorti à une base de données et dirigé vers sa destination. C'est plus comme passer une bouteille de boisson autour : passer, prendre une gorgée si vous le souhaitez et passer le reste, ou prendre tout et être avide.

L'environnement Linux/FOSS (vous l'avez peut-être remarqué) est assez démocratique, et obtenir toutes les applications à accepter un référentiel de configuration clavier central unique est une tâche futile. Pour une chose, vous avez des applications non maintenues qui ont été écrites il y a longtemps et qui ne le saurait même 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 ayant un intérêt pour ces événements. Si l'une des fenêtres intermédiaires a son mask "ne pas propager" défini pour interdire la génération du type d'événement, les événements de ces types seront supprimés.

Aussi,

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

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

Le problème, c'est que vous ne dites pas à X quels touches écouter, vous ne pouvez donc jamais dire a priori quelles touches l'application écoute (sans parler de ce qu'elles font) ou vraiment si elles ont l'intention de le propager s'ils écoutent effectivement. Ainsi, un registre central est impossible au niveau X, vous devriez donc le faire au niveau toolkit, ce qui est simplement pratiquement impossible. :D

1voto

Igor B. Points 365

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

Je ne comprends pas tout le processus de l'interaction clavier--OS--kernel--X11--Window Manager--Desktop Environment--Applications, mais si une certaine fenêtre, comme Gedit, a le focus clavier, elle peut gérer les entrées par elle-même, et c'est ce qu'elle fait.

-1voto

Cmorales Points 1268

Dans 11.10, sous Configuration système -> Clavier -> Raccourcis, vous obtenez une assez longue liste d'entre eux. Est-ce ce que vous cherchez?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X