Как определить горячую клавишу для приложения, которая отменяет глобальную горячую клавишу?

В Windows есть этот инструмент AutoHotkey, он позволяет вам определять специальные клавиши для приложений для любого приложения. Я хочу сделать то же самое в Linux: у меня есть глобальная горячая клавиша для переключения языков (это CapsLock, и она определена в системных настройках), и я хочу переопределить эту горячую клавишу, когда в определенном приложении.

Я на Ubuntu 14.04, под GNOME. Я использую xbindkeys для реализации некоторых глобальных горячих клавиш.

Достаточно расширенные оконные менеджеры (включая Sawfish, Awesome, Fvwm, …) позволяют определять привязки ключевых слов в окне. Примитивные оконные менеджеры, такие как Metacity и Mutter (настройки Gnome по умолчанию), нет. Если вы хотите настроить свою оконную среду на то, что хотите, а не придерживаться некоторых базовых значений по умолчанию, я рекомендую использовать более продвинутый оконный менеджер. Вы все еще можете использовать Gnome со многими оконными менеджерами, включая Sawfish и Fvwm.

Если вы хотите настроить привязки клавиш независимо от оконного менеджера, вы можете использовать только программу для этого, такую ​​как xbindkeys . Сделайте свою привязку ключа вызовом сценария оболочки, который действует по-разному на основе активного окна. Вы можете использовать xdotool для получения активного идентификатора окна (также его названия), а затем других инструментов, таких как xprop для получения дополнительной информации о окне.

 #!/bin/sh wid="$(xdotool getactivewindow)" class="$(xprop -id "$wid" '$1' WM_CLASS)"; class="${class#*\"}"; class="${class%\"}" case "$class" in Myapp) do something;; *) do something else;; esac