Мне известен ряд способов переназначения сочетаний клавиш в Ubuntu на глобальном уровне (например, глобальное переназначение Ctrl + S для отправки Ctrl + D или что-то в этом роде), например, приложение xbindkeys . , Однако мне нужен способ сделать это только для определенного приложения . Например, что-то вроде «Переопределить 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-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, Единицы, Глобальное меню не работает хорошо с --clearmodifiers
опция xdotool. Обходное решение должно было бы добавить сон перед Вашим сценарием, чтобы смочь отпустить клавиши самостоятельно: В Вашем .xbindkeysrc
изменение в этой привязке клавиш:
"sleep 0.5; app_specific_keys.sh"
Control+s
Как заметка на полях: это не будет работать, если Вы захотите изменить ключи для программ, которые работают в терминале (например, vi или emacs в консольном режиме). Возвращенный класс приложений все еще был бы "терминальным Gnome".
Надежда, которая помогает.
автоключ похож на AutoHotkey для Ubuntu. Можно записать сценарии в Python и сделать, чтобы они выполнились через сочетание клавиш и фильтр окон (делающий его псевдоспециализированный). Ваш сценарий может управлять событиями клавиатуры и событиями от нажатия мыши и даже переместить окна как добавленное касание.