Назначаем горячие клавиши в Ubuntu и не только

Для связывания горячих клавиш с программами в разных дистрибутивах Линукса разработчики предлагают свои собственные средства. Или ...не предлагают, как, например, в LXDE. И правильно, Линуксов много, всем не угодишь. Но есть простое решение, пригодное для подавляющего большинства Линуксов.

К счастью, несмотря на разношёрстность оболочек, всё же в Линуксе есть два основополагающих стандарта – это ядро и X-сервер (пресловутые «иксы»). Последний – это то, что связывает ядро с графическим дисплеем (монитор+клавиатура) и мышью пользователя. Без «иксов» Линукс тоже работает, но в алфавитно-цифровом режиме. Любое телодвижение пользователя перехватывается «иксами». Это и позволило стандартизовать утилиту, связывающую горячие клавиши с запусками различных программ. Называется утилита xbindkeys, имеется практически во всех репозиториях и устанавливается стандартно с помощью эмулятора терминала:

sudo apt-get install xbindkeys

Далее для краткости утилиту xbindkeys я буду называть «биндилкой». Запускается биндилка командой

xbindkeys

 

Сразу после установки может отсутствовать управляющий скрытый файл .xbindkeysrc, о чём биндилка вам сообщит при первом же запуске. В таком случае надо установить дефолтный управляющий файл командой

xbindkeys --defaults > /home/имя_пользователя/.xbindkeysrc

Или создать пустой управляющий файл командой

touch ~/.xbindkeysrc

Займёмся составлением таблицы кодов всяческих сочетаний клавиш (пока без привязки к командам). Биндилка имеет собственную нотацию сочетаний клавиш. Однако биндилка достаточно умна и может сама обо всём рассказать пользователю. Для того, чтобы посмотреть коды сочетаний, понятные биндилке, запустим её с опцией:

xbindkeys -k

Появится небольшое пустое окно. Его задача – перетянуть на себя фокус менеджера окон, независимо от того, где это фокус  находится. Теперь событие нажатия любого сочетания клавиш может быть захвачено, декодировано и выведено на экран именно в той нотации, в которой работает биндилка, после чего фокус возвращается на место. Итак, каждый раз запуская вышеприведённую команду, жмём клавиши или их сочетания и наблюдаем, что выводится в окно эмулятора терминала.

Alt+F11 – выводится:

m:0x18 + c:95

Alt+Mod2 + F11

Правый Shift+Pause – выводится:

:0x11 + c:127

Shift+Mod2 + Pause

Левый Shift+Pause – выводится:

m:0x2011 + c:127

hift+Mod2 + Pause

И т.д. Первая строчка – собственная нотация биндилки, вторая – более привычная для пользователя нотация. Как видим, если пользоваться «удобоваримой» нотацией, то биндилка не будет различать левую и правую клавиши сдвига, альтернативы или управления. Следовательно, собственная нотация биндилки предпочтительнее.

Теперь самое главное: чтобы связать выполнение той или иной команды с горячими клавишами, надо в скрытый текстовый файл .xbindkeysrc с помощью любого редактора или консольной команды nano записать эту комбинацию в нотации биндилки, предваряя её строкой, содержащей текст выполняемой команды, заключённый в кавычки. Например, следующие строки связывают нажатие комбинации клавиш Ctr+Pause с запуском офисного редактора теста:

«libreoffice --writer»

m:0x2014 + c:127

Всё! Но одно важно: чтобы изменения в файле .xbindkeysrc вступили в силу, необходимо или перелогиниться, или перезапустить X-сервер, или перезагрузиться, или просто перезапустить биндилку.

Предвижу недовольство со стороны тех, кто привык кликать, а не печатать. Не спешите. Для биндилки разработан графический интерфейс (GUI), который устанавливается командой

sudo apt-get install xbindkeys-config

Запускается графический интерфейс командой

xbindkeys-config

При этом открывается вот такое окно:


Работа с этим графическим интерфейсом очень простая. Разберём по шагам.

Кликаем кнопку «New» и в поле «Name» вписываем пояснение к выполняемой команде.

Кликаем кнопку «Get Key». При этом откроется окно, уже знакомое по запуску команды xbindkeys -k. Жмём горячую комбинацию. Она запомнилась в специальном кэше, освобождая пользователя от копипастинга биндилкиной нотации.

В поле «Action» вписываем выполняемую команду или имя приложения, путь к которому прописан в переменной окружения PATH. Иначе необходимо перед именем указывать путь. В частности, можно вписать и путь с именем скрипта, написанного на любом из понятных Линуксу языков: bash, sh, perl, piton и т.д.

Чтобы горячее сочетание вступило в силу немедленно, кликаем «Apply». Оно будет активным до перезагрузки или до перелогинивания. Чтобы горячее сочетание стало постоянным, его надо сохранить кликом по «Save&Apply».

Поскольку файл, описывающий связку горячих клавиш с запусками программ, хранится в домашней папке, то разные пользователи могут иметь разные наборы горячих клавиш. Более того, один и тот же пользователь тоже может создавать себе разные наборы горячих клавиш для разных работ. (Ну как тут не вспомнить о концепции комнат?) Для этого всего-то нужно сделать две вещи: 1) составив с помощью GUI набор связок, сохранить его в файле, имя которого отличается от стандартного .xbindkeysrc, и 2) при запуске биндилки указать, каким набором горячих клавиш надо воспользоваться:

xbindkeys -f имя_набора

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

Нет необходимости прописывать биндилку в автозагрузку. Однажды установленная биндилка запускается при запуске «иксов» (не путайте с автозагрузкой!). Если по какой-то причине вам или другому пользователю такое поведение не нравится, создайте в домашней папке пользователя пустой файл .xbindkeys.noauto.

Биндилка также позволяет связать кнопки мыши и их клавиатурные модификации с запусками программ, что позволяет превратить мышь в швейцарский офицерский нож. Например, можно в один клик защищать файл цифровой подписью, отправлять адресату или помещать на сайт.

Сможете сделать подобное так же просто в Windows независимо от версии? Не думаю.

Успехов!

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

всем привет!
может знает что назначить клавише "super" в ubunta, чтобы она отрабатывала как в windows - открывала/закрывала главное меню?