Де Ubuntu зберігає конфігурацію клавіш швидкого доступу?


34

Чи є в "Ubuntu" місце, яке зберігає повний перелік того, які клавіші / комбінації / ярлики пов'язані з чим?

Що таке комбінації клавіш та миші Unity? перелічіть декілька ярликів "Unity" до тире, запуску тощо та як перелічити використовувані клавіші Compiz? показує спосіб перерахування прив’язок compiz, але я шукаю більше, ніж це (не лише кілька клавішних обмежень, обмежених лише Unity або Compiz), хоча це і є початком.

Чи існує глобальний список прив'язок клавіш / комбінацій клавіш / комбінацій клавіш, які використовуються, які зберігаються десь в Ubuntu, або є спосіб їх компілювати та перелічити? Той, який стосується Ubuntu та речей, що працюють у ньому (Unity, Compiz, ярлики до програм тощо).

Звичайно, Ubuntu повинен зберігати це десь, щоб комбінація клавіш, натиснута на клавіатурі, була спрямована на те, з чим це пов'язано? Якщо в Ubuntu такого місця немає, тоді публікуйте його як відповідь, тому майбутні користувачі, які шукають, будуть знати.


1
Гаразд, я переказав, що це менш дублікат
Хорхе Кастро

Два відповіді поки що вивели дві суперечливі послідовності подій. Lakritsbollar заявив, що менеджер Window спочатку отримує контроль, а потім передає його додаткам, а nfirvine заявлені програми отримують спочатку тріщини на ньому, а потім передають його до менеджера вікон. Який шлях?
Джеймс

Ще кілька ярликів можна знайти на сайті detector-pro.com/2008/07/ubuntu-tweak-keyboard-shortcuts.html
Джеймс,

Відповіді:


10

Ваш менеджер вікон отримує будь-які ключові події до того, як це роблять програми, тож якщо він хоче споживати ці події, він це робить, і ваші програми ніколи їх не отримуватимуть. Якщо менеджер вікон не хоче реагувати на ключові події, він передає їх разом із додатком.

Ви можете перевірити це самостійно наступним чином:

  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.


Це не 100% відповідь, але це близьке. В основному немає центрального місця, де зберігаються прив’язки / ярлики клавіатури. Менеджер вікон спочатку тріскається при натисканні клавіш, а потім на активних додатках. Фокус також грає роль.
Джеймс

20

З моменту Ubuntu 17.10

На цих стежках :

dconf dump /org/gnome/desktop/wm/keybindings/
dconf dump /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/  # Custom

Ви також можете використовувати dconf-editor(GUI) або gsettings(CLI).

З моменту Ubuntu 12.10-17.04

~/.config/dconf/user(у dconf-редакторі: org.gnome.settings-daemon.plugins.media-keys.custom-keybindings(спеціальні ярлики)

~/.config/compiz-1/compizconfig

До Ubuntu 12.04

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

Для gnome вони знаходяться під
~/.gconf/desktop/gnome/keybindings(користувацькі ярлики)

і під
~/.gconf/apps/metacity.


11.10 не використовує GNOME або Metacity.
nfirvine

Але шлях до ярликів все ще працює, як я його використовую.
десгуа

Подивившись їли досить свіжу установку ubuntu 11.10 на комп'ютері macbook pro, у першому розташуванні не було файлу прив'язки клавіш, але у другому розташуванні було таке:general/ global_keybindings/ window_keybindings/
Victor S

1
Перше місце - для користувацьких ярликів.
десгуа

1
@AnonymousPlatypus см тут для gsettingsінструкції
wjandrea

4

Ні, немає єдиного місця, де зберігаються всі ярлики. Програми можуть зберігати свої конфігурації де завгодно.

Це означає, що ви здебільшого дивитесь на два рівні: рівень програми (наприклад, 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


Я дійшов майже такого ж висновку, що фокус визначає, що обробляє вклад. Це можна спостерігати, відкриваючи вікно браузера, а потім відкриваючи термінальне вікно, яке тепер стає активним вікном. Якщо ви утримуєте мишу над вікном браузера, тоді використовуйте колесо прокрутки, воно прокрутить вікно браузера, навіть якщо вікно терміналу є активним вікном.
Джеймс

Я сподівався на просту відповідь на моє запитання або, принаймні, простий спосіб зібрати та перелічити ярлики, але це не здається можливим, враховуючи те, як натискання клавіш врешті-решт дістанеться до місця, де вони визначені. Комбінації клавіш / вкладки клавіатури, здається, розповсюджені по всьому, і їх використання, як правило, залежить від активності та поточного фокусування.
Джеймс

1
Однак я не з вами у програмі, яка отримує ключову подію перед менеджером вікон. Я думаю, що менеджер вікон спочатку зламає події, а потім активні програми.
Джеймс

1

Програми зберігають свої ярлики самостійно, тому немає центрального місця, де вони зберігаються.

Я не розумію весь процес взаємодії клавіатури - ОС - ядро ​​- X11 - Менеджер вікон - Настільне середовище - Програми, але якщо певне вікно, як, наприклад, Gedit, має фокус клавіатури, воно може працювати вхід самостійно, і він це робить.


-1

У 11.10 у розділі Налаштування системи -> Клавіатура -> Ярлики ви отримуєте досить великий список їх. Це те, що ви шукаєте?


Він шукає файл, який містить усі ярлики, а не лише їх список.
Марк О'Салліван
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.