Где в Ubuntu хранятся настройки сочетаний клавиш?

Есть ли место в «Ubuntu», где хранится полный список того, какие клавиши / комбинации / сочетания клавиш связаны с чем?

Что такое сочетания клавиш Unity с клавиатурой и мышью? перечисляют некоторые Ярлыки «Unity» для Dash, Launcher и т. Д. И Как составить список используемых сочетаний клавиш Compiz? показывает способ составления списка привязок Compiz, но я ищу что-то большее (не только некоторые из сочетания клавиш ограничены только Unity или Compiz), хотя это только начало.

Существует ли глобальный список используемых сочетаний клавиш / сочетаний клавиш / сочетаний клавиш, который хранится где-то в Ubuntu или есть способ их компилировать и перечислять? Тот, который применяется к Ubuntu и работающим в нем (Unity, Compiz, ярлыки для программ и т. Д.).

Конечно, Ubuntu должен хранить это где-нибудь, чтобы комбинация клавиш, нажимаемая на клавиатуре, была направлена ​​на то, с чем она связана? Если в Ubuntu такого места нет, то опубликуйте это как ответ, чтобы будущие пользователи, которые будут искать, будут знать.

34
задан 13 April 2017 в 15:23

5 ответов

До Ubuntu 12.04

Ярлыки размещаются по-разному в зависимости от используемого рабочего стола ведьмы (gnome / unity, kde, xfce, lxde и т. Д.).

Для гномов они под
~/.gconf/desktop/gnome/keybindings (пользовательские ярлыки)

и под
~/.gconf/apps/metacity.

Начиная с Ubuntu 12.10

~/.config/dconf/user (в dconf-editor: org.gnome.settings-daemon.plugins.media-keys.custom-keybindings (пользовательские ярлыки)

~/.config/compiz-1/compizconfig

0
ответ дан 13 April 2017 в 15:23

Ваш оконный менеджер получает любые ключевые события до того, как приложения это делают, поэтому, если он хочет использовать эти события, он делает это, и ваши приложения никогда не получат их. Если оконный менеджер не хочет реагировать на ключевые события сам, он передает их приложению.

Вы можете проверить это самостоятельно следующим образом:

  1. Запустить терминал.
  2. Запустите xev | grep KeyPress, просмотрщик событий X.
  3. Нажмите Alt, обратите внимание, что xev показывает, что он получил ключевое событие в своем окне терминала.
  4. Нажмите Ctrl, еще раз отметьте, что xev получил событие. Обратите внимание на то, как выглядит окно терминала прямо сейчас.
  5. Нажмите Left arrow, чтобы перейти в другое рабочее пространство. (Я предполагаю, что вы используете это в качестве сочетания клавиш менеджера окон.)
  6. Нажмите Right arrow, чтобы вернуться туда, где вы работаете xev. Обратите внимание, что он никогда не получал никаких событий клавиш для переключения рабочих пространств с помощью клавиш со стрелками влево и вправо - вывод такой же, как и в шаге 4.

Итак, вы видите, что оконный менеджер на практике получает все ключевые события и, если он не хочет их захватывать, передает их приложению. Затем приложение делает то же самое для своих собственных виджетов (например, как вы можете нажимать Enter весь день в своем веб-браузере, но ничего не будет делать, пока вы не поместите курсор в адресную строку или какое-либо поле, где вы можете введите текст).

Приложение может устанавливать собственные ярлыки, а приложения настраиваются независимо друг от друга.

В KDE 3.x, если я правильно помню, вы можете установить ярлыки по умолчанию (например, Ctrl-s для сохранения) в Центре управления KDE, и это будет применяться ко всем приложениям, написанным с помощью инструментария Qt, но я не не знаю, возможно ли это все еще с момента перехода на KDE 4.

0
ответ дан 13 April 2017 в 15:23

Приложения хранят свои ярлыки независимо, поэтому нет центрального места, где они хранятся.

Я не понимаю весь процесс взаимодействия с клавиатурой - ОС - ядро ​​- X11 - Window Manager - Среда рабочего стола - Приложения, но если определенное окно, такое как Gedit, имеет Фокус клавиатуры, он может обрабатывать ввод самостоятельно, и это так.

0
ответ дан 13 April 2017 в 15:23

В 11.10 в разделе «Конфигурация системы -> Клавиатура -> Ярлыки» вы получите довольно большой список из них. Это то, что вы ищете?

0
ответ дан 13 April 2017 в 15:23

Нет, нет единого места, где хранятся все ярлыки. Приложения могут хранить свои конфигурации там, где они захотят.

Тем не менее, вы в основном смотрите на два уровня: уровень приложения (например, 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 в атрибуте event-mask окна.

И вы можете установить атрибут для отключения распространения .

Проблема в том, что вы не указываете X , какие клавиши следует прослушивать, поэтому вы никогда не можете сказать априори , какие клавиши слушает приложение (не говоря уже о том, что они делают). ) или действительно ли они намереваются распространять это, если они фактически слушают это. Таким образом, центральный реестр невозможен на уровне X, поэтому вам придется делать это на уровне инструментария, что просто практически невозможно. : D

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: