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É