Ubuntu изменился с тех пор, как были написаны другие ответы на этот вопрос.
Перемещения клавиш переместились из gconf в dconf. Gconf сохраняет свои данные в xml-файлах и к ним обращаются gconf-editor и gconf-tool2. Dconf сохраняет свои данные в двоичном формате и к ним обращаются dconf-editor и gsettings.
Уменьшено количество мест, в которых хранятся ключевые слова. В настоящее время существует централизованный путь dconf для хранения привязок клавиш менеджера окон (org.gnome.desktop.wm.keybindings). Существуют файлы сопоставления в каталоге /usr/share/gnome-control-center/keybindings/, которые показывают, как они применяются на основе используемого вами диспетчера окон (compiz или metacity).
Второй набор привязок ключей, не связанных с оконным менеджером хранится в пути dconf org.gnome.settings-daemon.plugins.media-keys
Существует третий набор привязок клавиш, связанных с кнопками питания, которые сохраняются в пути dconf org.gnome.settings-daemon.plugins.power. В настоящее время есть ошибка в графическом интерфейсе, который позволяет настраивать привязки клавиш. Он не знает об этих настройках. У меня есть клавиша «sleep» на моей клавиатуре. Если я хочу переназначить его для других функций, я должен отключить настройку в org.gnome.settings-daemon.plugins.power вручную. GUI не делает это для меня (хотя он отлично назначает новую функциональность).
Другой морщин - это привязки пользовательских клавиш. Они хранятся в dconf с использованием перемещаемой схемы. Это делается так, потому что их произвольное число. Разумный подход, но он делает листинг или изменяет их с помощью командной строки сложнее, чем это должно быть.
Я также узнал, что графический интерфейс, который позволяет назначать привязки клавиш, ограничен тем, что меня раздражает. Графический интерфейс позволяет точно привязать одно ключевое слово к каждому действию. В dconf вы можете установить массив привязок для одного действия. Это полезно для меня. Например, мне нравится, чтобы действие «закрыть окно» было назначено на традиционный Alt-F4, а также на более легкую нажатие одной кнопки на моем ключевом блоке.
Я написал сценарий Perl для сброса все привязки к CSV-файлу или восстановление их из файла csv. Например, чтобы сбросить привязки клавиш, которые вы можете использовать:
./keybindings.pl -e /tmp/keys.csv
, и для их восстановления вы можете использовать:
./keybindings.pl -i /tmp/keys.csv
[ f1]Это включает в себя исправление пользователя2589537, чтобы разрешать в них команды с кавычками.