不,没有一个地方可以存储所有快捷方式。应用程序可以选择在任何地方存储其配置。
就是说,您主要关注的是两个级别:应用程序级别(例如Ctrl-C用于Firefox中的复制)和窗口管理器级别(例如Win + D以显示桌面)。 Compiz使用gconf来存储其配置。
对于应用程序,可以将它们按工具箱大致划分。即,GTK应用程序也使用gconf。
当然,Ubuntu必须将其存储在某个位置,以便将键盘上按的组合键定向到与其连接的对象?
不完全的。重点关注的应用程序在X键盘事件中获得先发优势,但如果没有,它将冒充其他应用程序,即窗口管理器。因此,您可以拥有一款可以捕获Alt + F4且不会关闭窗口的游戏(该死的Jamestown!)。我认为您正在考虑将其发送到某个中央事件路由器,然后与某个数据库进行匹配,然后路由到其目的地。这更像是传递一瓶饮料:传递,如果愿意的话喝一口酒,传递其余的东西,或者吸收整个事物并保持贪婪。
Linux / FOSS环境(您可能已经注意到)非常民主,而让所有应用程序在单个中央键盘配置存储库上达成一致是愚蠢的。一方面,您有很早以前就编写的不维护的应用程序,对此一无所知。
更新:根据关于该主题的Xlib文档:
从源窗口开始,X服务器将搜索窗口层次结构,直到找到客户端指定的对这些事件感兴趣的第一个窗口为止。如果其中一个窗口的禁止传播掩码设置为禁止生成事件类型,则将抑制这些类型的事件。
也,
要接收KeyPress,KeyRelease,ButtonPress和ButtonRelease事件,请在窗口的事件掩码属性中设置KeyPressMask,KeyReleaseMask,ButtonPressMask和ButtonReleaseMask位。
而且你可以设置为禁用传播的属性。
问题是,您不会告诉X 要监听哪些键,因此您永远无法告诉先验应用程序要监听的键(更不用说它们在做什么),或者如果实际上它们实际上是否打算将其传播出去听它。因此,在X级别上不可能有中央注册表,因此您必须在工具箱级别上做到这一点,但这实际上是不可能的。:D