Não, não há um único local onde todos os atalhos são armazenados. Os aplicativos podem optar por armazenar suas configurações onde quiserem.
Dito isto, você está olhando principalmente para dois níveis: o nível do aplicativo (como Ctrl-C para copiar no Firefox) e o nível do gerenciador de janelas (como o Win + D para mostrar a área de trabalho). O Compiz usa o gconf para armazenar sua configuração .
Para aplicativos, você pode dividi-los aproximadamente pelos kits de ferramentas. Ou seja, os aplicativos GTK também usam o gconf.
Certamente, o Ubuntu deve armazenar isso em algum lugar para que a combinação de teclas pressionada no teclado seja direcionada para o que está conectado?
Nem tanto. O aplicativo focado recebe o primeiro chute em um evento do teclado X, mas, se não o fizer, será exibido para outros aplicativos, como o gerenciador de janelas. Assim, você pode ter um jogo que captura Alt + F4 e não fecha a janela (maldito seja, Jamestown!). Eu acho que você está pensando que ele vai para algum roteador central de eventos, depois é compatível com algum banco de dados e roteado para o seu destino. É mais como passar uma garrafa de bebida: passe, dê um gole se quiser e passe o resto, ou pegue a coisa toda e seja ganancioso.
O ambiente Linux / FOSS (você deve ter notado) é bastante democrático, e fazer com que todos os aplicativos concordem em um único repositório de configuração de teclado central é uma tarefa fácil. Por um lado, você tem aplicativos não mantidos que foram escritos há muito tempo e que não sabiam disso.
Atualização: de acordo com os documentos Xlib sobre o assunto :
Começando com a janela de origem, o servidor X pesquisa a hierarquia da janela até localizar a primeira janela especificada por um cliente como interessada nesses eventos. Se uma das janelas intermediárias tiver sua máscara de não propagação definida para proibir a geração do tipo de evento, os eventos desses tipos serão suprimidos.
Além disso,
Para receber os eventos KeyPress, KeyRelease, ButtonPress e ButtonRelease, defina os bits KeyPressMask, KeyReleaseMask, ButtonPressMask e ButtonReleaseMask no atributo de máscara de evento da janela.
E você pode definir um atributo para desativar a propagação .
O problema é que você não diz ao X quais chaves devem ser ouvidas; portanto, nunca é possível dizer a priori quais chaves o aplicativo escuta (muito menos o que eles fazem) ou realmente se eles pretendem propagá-lo se, de fato, ouvindo. Portanto, um registro central é impossível no nível X, portanto, você deve fazer isso no nível do kit de ferramentas, o que é praticamente impossível. : D