Переопределить общесистемный ярлык для ярлыка для конкретного приложения

11

Есть ли способ присвоения сочетания клавиш, определенного в приоритете приложения, над общесистемным сочетанием клавиш с такой же привязкой клавиш?

Желаемое поведение: при нажатии некоторых клавиш проверьте, хочет ли сфокусированное приложение что-либо сделать (и если да, то сделайте это). Если нет, проверьте, есть ли системная комбинация клавиш, а затем сделайте это.

Что происходит в настоящее время: я F11установил как «переключение в полноэкранный режим» в меню настроек для сочетаний клавиш. В Chrome F11следует активировать собственный полноэкранный режим Chrome, но вместо этого он отменяется общесистемным сочетанием клавиш, то есть Chrome становится полноэкранным (панель GNOME и строка заголовка исчезают), но не входит в полноэкранный режим Chrome (где вкладки, адресная строка и панель закладок также обращаются в нуль).

(Примечание: у Firefox такой же проблемы нет, но, похоже, это связано с тем, что FF fullscreen совпадает с / запускается полноэкранным менеджером окон)

Фред
источник
Первый вопрос, который приходит мне в голову; что говорит с ОС о нажатии клавиш, приложении или X / Wayland? Мне кажется, что X будет обрабатывать нажатие клавиш и, при необходимости, манипулировать ими, прежде чем передавать их в окно, в котором ваше приложение ждет вас. Второй вопрос: как X узнает, изменилось ли приложение в состоянии, и как он узнает, что изменение произошло непосредственно из-за нажатия клавиши? Я был бы склонен выйти на конечность и сказать, что вам не повезло в этом.
HellionWisp

Ответы:

2

Отказ от ответственности: это не совсем то, что вы хотите, но я потратил слишком много времени на это, чтобы не публиковать его, и, возможно, кто-то другой может использовать его.

Я понял, что Ctrl + F11 - это полноэкранный режим везде, кроме Chromium, где это полноэкранный режим Chromium!

  1. Ход мыслей

Я думал, что смогу обмануть оконный менеджер, если я использую xdotoolи отправляю команду прямо в окно Chrome - безрезультатно.

Тогда я подумал, что смогу изменить сочетание клавиш в Google Chrome, но это кажется жестко закодированным - еще один тупик.

  1. Что оставляет нас с этим

Установить xdotoolдля имитации нажатия клавиш

sudo apt-get install xdotool

перенастроить сочетания клавиш Ubuntu на что-то произвольное, что мы никогда не набираем, но используемы в сценарии

Настройки -> Устройства -> Клавиатура

Выполните прокрутку вниз и редактировать Переключить полноэкранный режим , чтобы Ctrl + Alt + 1затем ударить +и добавить пользовательские комбинации клавиш

сочетания клавиш - полноэкранные

а затем нажмите +и добавьте пользовательское сочетание клавиш

диалог пользовательских ярлыков

редактировать сценарий

nano /home/user/fullscreen.sh


#!/bin/bash
export DISPLAY=:0
windowname=$(xdotool getactivewindow getwindowname | cut -d "-" -f 2)
if [[ $windowname != *"Chromium"* ]]
then
xdotool keydown Ctrl keydown Alt key 1 keyup Alt keyup Ctrl
else
xdotool search --onlyvisible --class "Chromium" windowfocus 
sleep 0.2
xdotool key F11
fi

сделать его исполняемым

chmod +x /home/user/fullscreen.sh

  1. Вывод

Кажется невозможным обмануть оконного менеджера и переправить нажатия клавиш, но, безусловно, существуют обходные пути. В этом случае Google сделал полноэкранную комбинацию клавиш неконфигурируемой, поэтому она не дотягивает до цели

Теперь с помощью Ctrl + F11 менеджер окон управляет полноэкранным режимом, за исключением хрома.

Роберт Ридл
источник
1
Думаю, вы правы, что это лучшее, на что мы можем надеяться - позор, что Chrome / ium не поддерживает пользовательские сочетания клавиш. Стоит отметить: выбор сочетания клавиш имеет значение для этого трюка! У меня уже были Ctrl + F11, привязанный к чему-то другому. Пробовал с Shift + Alt + F11, который не работал. Alt + F11 работал нормально, хотя. (Я предполагаю, что он пытался сделать Shift + Ctrl + Alt + F11)
Фред