Мне известно о нескольких способах переназначения комбинаций клавиш в Ubuntu на глобальной основе (например, глобальное переназначение Ctrl + S для отправки Ctrl + D или что-то еще), например, приложение xbindkeys. Однако мне нужен способ только для конкретного приложения . Например, что-то вроде «Remap Ctrl + S» для отправки Ctrl + D, но только в Chrome ». Есть ли способ сделать это?
Ваша идея использования xbindkeys звучит хорошо:
в вашем .xbindkeysrc добавить новую привязку клавиш:
"app_specific_keys.sh"
Control+s
Это будет выполняться "app_specific_keys.sh" при нажатии ctrl+s ,
Теперь вам нужно определить скрипт. Он должен получить активное окно и оттуда имя приложения, которое в настоящее время имеет фокус:
xprop -id `xdotool getactivewindow` |awk '/WM_CLASS/{print $4}'
Это могло бы сделать трюк: он запрашивает xdotool для активного окна, а затем запрашивает xprop для всех свойств окна с данным идентификатором, а затем уменьшает очень подробный вывод на имя приложения (фактически его класс). Если вы запустите это в терминале gnome, вы получите
"Gnome-terminal"
Теперь вам нужно определить действия для ваших приложений:
if [ $N = '"Gnome-terminal"' ]; then
xdotool key --clearmodifiers ctrl+s
else
xdotool key --clearmodifiers ctrl+d
fi
Итак, скрипт "app_specific_keys.sh" может выглядеть так:
#!/bin/bash
W=`xdotool getactivewindow`
S1=`xprop -id ${W} |awk '/WM_CLASS/{print $4}'`
S2='"Gnome-terminal"'
if [ $S1 = $S2 ]; then
xdotool key --clearmodifiers ctrl+d
else
xdotool key --clearmodifiers ctrl+s
fi
Это должно работать, но, как и в этом вопросе, я должен признать, что это не так. Вероятно, потому что один из Compiz, Unity, Global Menu не работает с опцией --clearmodifiers xdotool. Обходным путем было бы добавить сон перед вашим сценарием в другом, чтобы иметь возможность выпускать ключи самостоятельно: в вашем .xbindkeysrc изменении этого ключевого слова:
"sleep 0.5; app_specific_keys.sh"
Control+s
В качестве побочного элемента: это будет не работает, если вы хотите изменить ключи для программ, которые запускаются в терминале (например, vi или emacs в режиме консоли). Возвращаемый класс приложения все равно будет «Gnome-terminal».
Надеюсь, что это поможет.
autokey похож на AutoHotkey для Ubuntu. Вы можете писать сценарии на python и выполнять их с помощью сочетания клавиш и фильтра Windows (что делает его псевдо-специфичным для приложения). Ваш скрипт может управлять событиями клавиатуры и мыши и даже перемещать окна в виде добавленного касания.