Zastąp skrót systemowy dla skrótu aplikacji

11

Czy istnieje sposób, aby skrót klawiaturowy zdefiniowany w aplikacji miał pierwszeństwo przed skrótem systemowym z tym samym przypisaniem klawiszy?

Pożądane zachowanie: po naciśnięciu niektórych klawiszy sprawdź, czy skoncentrowana aplikacja chce coś zrobić (a jeśli tak, to zrób to). Jeśli nie, sprawdź, czy istnieje skrót systemowy dla niektórych kluczy, a następnie zrób to.

Co obecnie dzieje: mam F11ustawiony jako „przełącznik fullscreen” w menu ustawień dla skrótów klawiaturowych. W Chrome F11powinien aktywować własny tryb pełnoekranowy Chrome, ale zamiast tego jest zastąpiony skrótem systemowym, tzn. Chrome staje się pełnoekranowy (panel GNOME i pasek tytułu znikają), ale nie wchodzi w tryb pełnoekranowy Chrome (gdzie również karty, pasek adresu i pasek zakładek znikać).

(Uwaga dodatkowa: Firefox nie ma tego samego problemu, ale wydaje się, że dzieje się tak, ponieważ pełny ekran FF jest taki sam, jak / jest uruchamiany przez pełny ekran menedżera okien)

Fred
źródło
Pierwsze pytanie, które przychodzi mi do głowy; co mówi systemowi operacyjnemu o naciśnięciach klawiszy, aplikacji lub X / Wayland? Wydaje mi się, że X obsłuży naciśnięcie klawisza i w razie potrzeby zmieni je, zanim przejdzie do okna, na które aplikacja na ciebie czeka. Drugie pytanie brzmi: skąd X wiedziałby, czy aplikacja zmieniła stan, i skąd wiedziałby, że zmiana nastąpiła bezpośrednio z powodu naciśnięcia klawisza? Byłbym skłonny wyjść na kończynę i powiedzieć, że nie masz w tym szczęścia.
HellionWisp,

Odpowiedzi:

2

Oświadczenie: Nie jest to dokładnie to, czego chcesz, ale spędziłem na tym zbyt wiele czasu, aby tego nie opublikować, a może ktoś inny może z niego skorzystać.

Dotarłem tak daleko, że Ctrl + F11 jest wszędzie na pełnym ekranie, ale Chromium tam, gdzie jest pełny ekran Chromium!

  1. TOK myślenia

Pomyślałem, że mogę oszukać menedżera okien, jeśli użyję xdotooli wyślę polecenie bezpośrednio do okna chrome - bezskutecznie.

Potem pomyślałem, że mogę zmienić skrót klawiaturowy w Google Chrome, ale wydaje się to zakodowane na stałe - kolejny ślepy zaułek.

  1. Co nas z tym pozostawia

Zainstaluj, xdotoolaby symulować naciśnięcia klawiatury

sudo apt-get install xdotool

zmienić konfigurację skrótów klawiaturowych Ubuntu na dowolną, której nigdy nie piszemy, ale można jej użyć w skrypcie

Ustawienia -> Urządzenia -> Klawiatura

Przewiń w dół i edytuj Przełącz tryb pełnoekranowy na, Ctrl + Alt + 1a następnie naciśnij +i dodaj niestandardowy skrót klawiaturowy

skróty klawiaturowe - pełny ekran

a następnie naciśnij +i dodaj niestandardowy skrót klawiaturowy

okno dialogowe niestandardowego skrótu

edytuj skrypt

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

sprawiają, że jest wykonywalny

chmod +x /home/user/fullscreen.sh

  1. Wniosek

Wydaje się niemożliwe, aby oszukać menedżera okien i przemycić naciśnięcie klawisza, ale z pewnością możliwe są obejścia tego problemu. W tym przypadku Google sprawił, że skrótu klawiaturowego pełnoekranowego nie można skonfigurować, więc jest on tuż poniżej znaku

Teraz z Ctrl + F11 menedżer okien kontroluje zachowanie na pełnym ekranie z wyjątkiem chromu.

Robert Riedl
źródło
1
Myślę, że masz rację, że jest to najlepsze, na co możemy liczyć - szkoda, że ​​Chrome / ium nie obsługuje niestandardowych skrótów klawiaturowych. Warto zauważyć: wybór skrótu klawiaturowego ma znaczenie dla tej sztuczki! Już miałem Ctrl + F11 związany z czymś innym. Próbowałem z Shift + Alt + F11, który nie działał. Alt + F11 działało jednak dobrze. (Chyba próbowałem zrobić Shift + Ctrl + Alt + F11)
Fred