No, non esiste un unico posto in cui sono memorizzate tutte le scorciatoie. Le applicazioni possono scegliere di archiviare le loro configurazioni ovunque scelgano.
Detto questo, stai principalmente guardando a due livelli: il livello dell'applicazione (come Ctrl-C per la copia in Firefox) e il livello del gestore delle finestre (come Win + D per mostrare il desktop). Compiz usa gconf per memorizzare la sua configurazione .
Per le applicazioni, è possibile dividerli approssimativamente per i loro kit di strumenti. Vale a dire, anche le app GTK usano gconf.
Sicuramente Ubuntu deve memorizzarlo da qualche parte affinché la combinazione di tasti premuta sulla tastiera sia diretta a ciò a cui è connessa?
Non proprio. L'applicazione focalizzata viene lanciata per la prima volta a un evento della tastiera X, ma in caso contrario, si diffonde su altre applicazioni, vale a dire il gestore delle finestre. Quindi, puoi avere un gioco che cattura Alt + F4 e non chiude la finestra (maledizione, Jamestown!). Penso che tu stia pensando che vada a qualche router di eventi centrale, quindi confrontato con alcuni database e instradato alla sua destinazione. È più come passare una bottiglia di drink in giro: passa, fai una nuotata se vuoi e passa il resto, oppure prendi tutto e sii avido.
L'ambiente Linux / FOSS (forse avrai notato) è piuttosto democratico e far concordare tutte le applicazioni su un singolo repository di configurazione della tastiera centrale è una follia. Per prima cosa, hai applicazioni non mantenute che sono state scritte molto tempo fa e non lo saprebbero.
Aggiornamento: secondo i documenti Xlib sull'argomento :
A partire dalla finestra di origine, il server X cerca la gerarchia di finestre fino a quando non individua la prima finestra specificata da un client come interessata a questi eventi. Se una delle finestre intermedie ha la sua maschera di non propagazione impostata per proibire la generazione del tipo di evento, gli eventi di tali tipi verranno soppressi.
Anche,
Per ricevere eventi KeyPress, KeyRelease, ButtonPress e ButtonRelease, impostare i bit KeyPressMask, KeyReleaseMask, ButtonPressMask e ButtonReleaseMask nell'attributo maschera evento della finestra.
E puoi impostare un attributo per disabilitare la propagazione .
Il problema è che non dici a X quali chiavi ascoltare, quindi non puoi mai dire a priori quali chiavi l'applicazione ascolta (figuriamoci cosa fanno) o davvero se intendono propagarlo se sono in realtà ascoltandolo. Pertanto, un registro centrale è impossibile a livello di X, quindi dovresti farlo a livello di toolkit, il che è semplicemente praticamente impossibile. : D