Для связывания горячих клавиш с программами в разных дистрибутивах Линукса разработчики предлагают свои собственные средства. Или ...не предлагают, как, например, в 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 независимо от версии? Не думаю.
Успехов!
![Версия для печати Версия для печати](https://www.kv.by/sites/all/modules/print/icons/print_icon.png)
Комментарии
всем привет!
может знает что назначить клавише "super" в ubunta, чтобы она отрабатывала как в windows - открывала/закрывала главное меню?