Нет, нет единого места, где хранятся все ярлыки. Приложения могут хранить свои конфигурации там, где они захотят.
Тем не менее, вы в основном смотрите на два уровня: уровень приложения (например, Ctrl-C для копирования в Firefox) и уровень оконного менеджера (например, Win + D для отображения рабочего стола). Compiz использует gconf для хранения своей конфигурации .
Для приложений вы можете грубо разделить их по наборам инструментов. А именно, приложения GTK также используют gconf.
Конечно, Ubuntu должен хранить это где-нибудь, чтобы комбинация клавиш, нажимаемая на клавиатуре, была направлена на то, с чем она связана?
Не совсем. Сосредоточенное приложение получает первый удар по событию клавиатуры X, но если этого не происходит, оно всплывает перед другими приложениями, а именно оконным менеджером. Таким образом, вы можете иметь игру, которая захватывает Alt + F4 и не закрывает окно (черт побери, Джеймстаун!). Я думаю, вы думаете, что он идет к какому-то центральному маршрутизатору событий, затем сопоставляется с некоторой базой данных и направляется к месту назначения. Это больше похоже на раздачу бутылки с напитком: проходи мимо, сделай глоток, если хочешь и передай остальное, или возьми все это и будь жадным
Среда Linux / FOSS (вы, возможно, заметили) довольно демократична, и заставить все приложения согласовать единый репозиторий конфигурации центральной клавиатуры - глупое дело. Во-первых, у вас есть неподдерживаемые приложения, которые были написаны очень давно, и вы об этом не знали бы.
Обновление: Согласно документации Xlib на эту тему :
Начиная с исходного окна, X-сервер просматривает иерархию окон, пока не найдет первое окно, указанное клиентом как имеющее интерес к этим событиям. Если в одном из промежуточных окон установлена маска «не распространять», запрещающая генерацию типа события, события этих типов будут подавлены.
Также,
Чтобы получать события KeyPress, KeyRelease, ButtonPress и ButtonRelease, установите биты KeyPressMask, KeyReleaseMask, ButtonPressMask и ButtonReleaseMask в атрибуте маски события окна.
И вы можете установить атрибут, чтобы отключить распространение .
Проблема в том, что вы не указываете X, какие ключи прослушивать, поэтому вы никогда не можете априори сказать, какие ключи прослушивает приложение (не говоря уже о том, что они делают) или действительно ли они намереваются распространять его, если они на самом деле слушаю это. Таким образом, центральный реестр невозможен на уровне X, поэтому вам придется делать это на уровне инструментария, что просто практически невозможно. : D