XKB. Как создать своё сочетание клавиш
Не могу разобраться, как создать своё сочетание клавиш для выполнения какого-либо действия?
Насколько понимаю, делается это средствами секции Compat, в которой прописываются нужные свойства для комбинаций клавиш. Не могу понять как это работает. Как например сделать, чтобы Alt+Shift активировали третий ряд клавиш?
Что ты имеешь в виду под «активировать третий ряд клавиш»?
Или включить третий ряд клавиш, или переключиться на третий ряд клавиш. Не важно, с удержанием нажатия клавиш или в режиме тумблера (свитчера/переключателя). Если всё равно не понятно, то не важно, можно взять для примера клавишу Compose (назначить её на Ctrl+Shift или другое сочетание). Мне не важно, хочу принцип понять.
В каком смысле «переключиться на ряд клавиш»? Или ты так раскладку обозвал?
Нет, не раскладку. В раскладке как правило два ряда клавиш — прописные буквы и строчные, а может быть ещё один уровень закреплён за каждой клавишей. И таких уровней может быть много.
Раскладка это вообще-то про языки. Ряд клавиш — вообще термин про конструкцию.
Т.е. на одной клавише может висеть не только два символа строчный (открытая клавиша) и ПРОПИСНОЙ (Shift+клавиша), а может быть четыре, шесть, сколько надо.
То есть ты хочешь создать кастомный слой и повесить его на определенную комбинацию?
В контексте темы про XKB этот термин («уровень») специфичный для программы XKB. Возможно не корректно называть «рядом», хотя именно так это именуется в GUI настройках переключения раскладок.
Может перейдем на английские термины? А то эти переводы на русский — в них черт ногу сломит.
Как бы да, но смысл в том, что бы создать эту самую «определённую комбинацию» клавиш. Кастомный слой создан. Задача в том, что бы научить комбинации выполнять действия, которых они ранее не выполняли.
Т.е. мне нужно создать виртуальный можификатор в Xkb Compability Map, который потом повесить на сочетание реальных клавиш. Вроде корректно изъяснился?
Как например сделать, чтобы Alt+Shift активировали третий ряд клавиш?
Весьма странное желание, учитывая, что обычно это четвертый.
Однако, если так хочется, то втупую, не?
Если вы не можете вспомнить, как это называется по-русски, то это называется «регистром». 🙂
Точно, регистр. Мдя, не корректно сформулировал задачу. Alt+Shift — оно да, понятно как делается. Но вот как сделать то же самое, например, для Ctrl+Alt?
Или конкретнее. У меня сейчас раскладку переключает на английский — Caps, на русский — Shift+Caps.
Это понятно:
Т.е. видимо, требуется создать виртуальный модификатор (Альт+Капс), который бы включал третий уровень персонально для клавиши Капс, которая бы в свою очередь включала бы третий уровень для всех остальных клавиш.
Не могу разобраться, как создать своё сочетание клавиш для выполнения какого-либо действия?
В Windows есть Autohotkey. А в Linux?
Но вот как сделать то же самое, например, для Ctrl+Alt?
Опять же, не проверял.
В Windows есть Autohotkey. А в Linux?
А Линукс — это слишком низкоуровневая штука, чтобы под него так подрезаться.
Две раскладки, три-четыре ряда (уровня/регистра) клавиш, Compose keys
1. Реализовать раздельное переключение раскладки на латиницу посредством Caps Lock;
2. Реализовать раздельное переключение раскладки на кириллицу посредством Shift+Caps Lock;
3. Реализовать переключение регистра клавиш на третий уровень посредством Alt+Caps Lock;
4. Реализовать клавишу Compose посредством комбинации Control+Caps Lock.
5. Сохранить штатную функциональность Shift, Control, Alt
В файле типа xkb_types должен быть объявлен виртуальный модификатор:
Caps Lock = английский;
Shift+Caps Lock = русский;
Alt+Caps Lock = 3-й ряд клавиш;
Control+Caps Lock = Compose.
О! Ну вот что вам мешало столь же ясно сразу написать? Сами еще не знали, чего хотели? 🙂
Источник
Настраиваем сочетания клавиш в 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, если вы не знаете какой класс использует ваша программа:
и клик на окне
Не забываем сделать скрипт исполняемым:
Работает он вот так:
Это же и допишем в наш конфиг
Подобным образом настраиваем сочетания для остальных клавиш.
Источник
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.
Источник