Назначаем горячие клавиши в Ubuntu и не только
Для связывания горячих клавиш с программами в разных дистрибутивах Линукса разработчики предлагают свои собственные средства. Или . не предлагают, как, например, в LXDE. И правильно, Линуксов много, всем не угодишь. Но есть простое решение, пригодное для подавляющего большинства Линуксов.
К счастью, несмотря на разношёрстность оболочек, всё же в Линуксе есть два основополагающих стандарта – это ядро и X-сервер (пресловутые «иксы»). Последний – это то, что связывает ядро с графическим дисплеем (монитор+клавиатура) и мышью пользователя. Без «иксов» Линукс тоже работает, но в алфавитно-цифровом режиме. Любое телодвижение пользователя перехватывается «иксами». Это и позволило стандартизовать утилиту, связывающую горячие клавиши с запусками различных программ. Называется утилита xbindkeys, имеется практически во всех репозиториях и устанавливается стандартно с помощью эмулятора терминала:
sudo apt-get install xbindkeys
Далее для краткости утилиту xbindkeys я буду называть «биндилкой». Запускается биндилка командой
Сразу после установки может отсутствовать управляющий скрытый файл .xbindkeysrc, о чём биндилка вам сообщит при первом же запуске. В таком случае надо установить дефолтный управляющий файл командой
xbindkeys —defaults > /home/имя_пользователя/.xbindkeysrc
Или создать пустой управляющий файл командой
Займёмся составлением таблицы кодов всяческих сочетаний клавиш (пока без привязки к командам). Биндилка имеет собственную нотацию сочетаний клавиш. Однако биндилка достаточно умна и может сама обо всём рассказать пользователю. Для того, чтобы посмотреть коды сочетаний, понятные биндилке, запустим её с опцией:
Появится небольшое пустое окно. Его задача – перетянуть на себя фокус менеджера окон, независимо от того, где это фокус находится. Теперь событие нажатия любого сочетания клавиш может быть захвачено, декодировано и выведено на экран именно в той нотации, в которой работает биндилка, после чего фокус возвращается на место. Итак, каждый раз запуская вышеприведённую команду, жмём клавиши или их сочетания и наблюдаем, что выводится в окно эмулятора терминала.
Правый Shift+Pause – выводится:
Левый Shift+Pause – выводится:
И т.д. Первая строчка – собственная нотация биндилки, вторая – более привычная для пользователя нотация. Как видим, если пользоваться «удобоваримой» нотацией, то биндилка не будет различать левую и правую клавиши сдвига, альтернативы или управления. Следовательно, собственная нотация биндилки предпочтительнее.
Теперь самое главное: чтобы связать выполнение той или иной команды с горячими клавишами, надо в скрытый текстовый файл .xbindkeysrc с помощью любого редактора или консольной команды nano записать эту комбинацию в нотации биндилки, предваряя её строкой, содержащей текст выполняемой команды, заключённый в кавычки. Например, следующие строки связывают нажатие комбинации клавиш Ctr+Pause с запуском офисного редактора теста:
Всё! Но одно важно: чтобы изменения в файле .xbindkeysrc вступили в силу, необходимо или перелогиниться, или перезапустить X-сервер, или перезагрузиться, или просто перезапустить биндилку.
Предвижу недовольство со стороны тех, кто привык кликать, а не печатать. Не спешите. Для биндилки разработан графический интерфейс (GUI), который устанавливается командой
sudo apt-get install 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 независимо от версии? Не думаю.
Источник
Ubuntu Documentation
Чтобы изменить клавишу или клавиши для комбинации клавиш:
Open the Activities overview and start typing Settings .
Click on Settings .
Click Keyboard Shortcuts in the sidebar to open the panel.
Click the row for the desired action. The Set shortcut window will be shown.
Hold down the desired key combination, or press Backspace to reset, or press Esc to cancel.
Заранее заданные комбинации клавиш
Существуют заранее заданные комбинации клавиш, которые можно изменить. Они сгруппированы в следующие категории:
Запуск приложений
or
or Explorer
or Calculator
Запустить клиент эл. почты
or Mail
or
or WWW
or Search
Перемещение
Скрыть все обычные окна
Переместить на рабочее место вверх
Переместить на рабочее место вниз
Super + Page Down
Move window one monitor down
Move window one monitor to the left
Move window one monitor to the right
Move window one monitor up
Переместить окно на одно рабочее место вниз
Shift + Super + Page Down
Переместить окно на одно рабочее место вверх
Shift + Super + Page Up
Move window to last workspace
Shift + Super + End
Переместить окно на рабочее место 1
Shift + Super + Home
Переместить окно на рабочее место 2
Переместить окно на рабочее место 3
Переместить окно на рабочее место 4
Переключить элемент управления
Немедленно переключить элемент управления
Switch to last workspace
Переключиться на рабочее место 1
Переключиться на рабочее место 2
Переключиться на рабочее место 3
Переключиться на рабочее место 4
Переключение между окнами
Немедленно переключить окно
Немедленно переключить окно приложения
Переключить окно приложения
Снимки экрана
Скопировать снимок окна в буфер обмена
Ctrl + Alt + Print
Скопировать снимок области экрана в буфер обмена
Shift + Ctrl + Print
Скопировать снимок экрана в буфер обмена
Record a short screencast
Shift + Ctrl + Alt + R
Save a screenshot of a window to Pictures
Save a screenshot of an area to Pictures
Save a screenshot to Pictures
Звук и носители
(Eject)
(Audio media)
(Audio next)
(Audio pause)
Воспроизвести (или воспроизвести/приостановить)
(Audio play)
(Audio previous)
(Audio stop)
(Audio lower volume)
(Audio mute)
(Audio raise volume)
Система
Выделить активное уведомление
Show the Power Off / Restart dialog
Ctrl + Alt + Delete
Открыть меню приложения
Restore the keyboard shortcuts
Показать список всех приложений
Показать режим обзора
Show the notification list
Show the overview
Показать диалог запуска команды
Переключиться на следующий источник ввода.
Переключиться на предыдущий источник ввода.
Shift + Super + Space
Accessibility
Уменьшить размер текста
Включить или выключить высокую контрастность
Увеличить размер текста
Включить или выключить экранную клавиатуру
Включить или выключить чтение с экрана
Включить или выключить увеличение
Активировать меню окна
Поместить окно под другими окнами
Развернуть окно на весь экран
Развернуть окно на весь экран горизонтально
Развернуть окно на весь экран вертикально
Поднять окно на передний план
Поднять окно на передний план, если оно перекрыто другими, иначе опустить его
Изменить размер окна
Переключить полноэкранный режим
Переключить состояние развёрнутости на весь экран
Поместить окно на все рабочие места или на одно
Дополнительные комбинации клавиш
To create your own application keyboard shortcut in the Keyboard settings:
Click the + button. The Add Custom Shortcut window will appear.
Type a Name to identify the shortcut, and a Command to run an application. For example, if you wanted the shortcut to open Rhythmbox , you could name it Music and use the rhythmbox command.
Click the row that was just added. When the Set Custom Shortcut window opens, hold down the desired shortcut key combination.
Указанное вами имя команды должно быть именем реальной системной команды. Чтобы проверить, работает ли команда, можно набрать её в открытом Терминале. Команда, запускающая приложение, не совпадает с названием самого приложения.
If you want to change the command that is associated with a custom keyboard shortcut, click the name of the shortcut. The Set Custom Shortcut window will appear, and you can edit the command.
Источник
Настраиваем сочетания клавиш в Linux наподобие Mac OS X
Раньше, у меня довольно часто возникала такая ситуация, когда одновременно работаешь в терминале и, например, в браузере.
После нескольких часов работы начинаешь путаться и в терминале вместо [Ctrl]+[Shift]+[C] нажимаешь [Ctrl]+[C], а в браузере наоборот. В итоге в терминале вы получаете прерывание а в браузере вместо ожидаемого эффекта у вас медленно прогружается дебаггер.
В один прекрасный момент меня это достало и я решил, что пора что-то менять.
До того как я переустановил на своей рабочей машине OSX на Linux, я успел привыкнуть к довольно приятной реализации сочетаний клавиш. А точнее к тому, что все основные операции, такие как «Вырезать», «Копировать» и «Вставить», все они используют кнопку [Cmd] (аналог кнопки [Win] на PC), а не [Ctrl], как это сделано по умолчанию в Linux и Windows. Это очень удобно, так как, повторюсь, если вы часто работаете в терминале, вы имеете единые сочетания клавиш для копирования и вставки как и во всех других приложениях, а прерывание всегда остается на своем месте [Ctrl]+[C].
Вы так же олучите профит от такого способа, если вы используете тайловый оконный менеджер, т.к. в большинстве случаев для использования стандартных операций и переключений между тэгами/окнами вам не придется снимать палец с вашего modkey
Конечно настраивать сочетания клавиш можно в конфигах каждого определенного приложения, но это слишком не удобно, к тому же не каждое приложение поддерживает такую настройку. По этому я решил просто забиндить стандартные сочетания клавиш на те, что нужны мне.
Т.е. нажимая [Win]+[C], ваш терминал будет думать, что вы нажимаете [Ctrl]+[Shift]+[C], а все остальные приложения, что [Ctrl]+[C].
Для реализации задуманного нам понадобятся программа, которая будет отслеживать наши нажатия, например xbindkeys или же можно воспользоваться штатными возможностями вашего оконного менеджера, и эмулятор нажатий на клавиши, их несколько: xdotool, xte и xvkbd.
Правда с первыми двумя у меня возникал один преинтереснийший глюк: если например вы нажимете [Win]+[A], эмулятор покорно передаст [Ctrl]+[A] в приложение, а приложение увидит что нажаты все три клавиши [Win]+[Ctrl]+[A] и не обработает такое сочетание. Этот весьма неприятный баг было не просто обнаружить, так как не помогала даже опция —clearmodifiers для xdotool, которая, казалось бы, специально для такого случая и создана. В xkdbb подобного поведения замечено не было.
Начнем, пожалуй с xbindkeys. Отключем все CapsLock, NumLock и прочие модификаторы, запускаем:
Открывается окошко, в окошке нажимаем сочетание [Win]+[A], в терминале получаем такой вывод:
где Mod4 — это наша клавиша [Win]. Это же можно использовать для написания конфига xbindkeys:
/.xbindkeysrc и пишем:
Теперь запустим xbindkeys:
И попробуем нажать [Win]+[A], эффект будет такой-же как и если бы вы нажали [Ctrl]+[A]
После того что вы убедитесь, что все работает, можно продолжить править кофиг, но перед следующим запуском нужно с начала завершить предыдущий процесс xbindkeys:
Ок, с этим разобрались, но как нам передавать различные сочетания клавиш, при нажатии одних и тех же кнопок, в зависимости от программы с которой мы работем?
На помощь приходит все тот же xdotool и xprop, с помощью которых мы определяем является ли активное окно терминалом.
Давайте напишем простенький скрипт и положим его в /bin/copypaste.sh:
Используйте xprop, если вы не знаете какой класс использует ваша программа:
и клик на окне
Не забываем сделать скрипт исполняемым:
Работает он вот так:
Это же и допишем в наш конфиг
Подобным образом настраиваем сочетания для остальных клавиш.
Источник