Wyłącz wszystkie skróty klawiaturowe Unity za pomocą wiersza polecenia

8

Chciałbym wiedzieć, jak mogę wyłączyć WSZYSTKIE skróty klawiaturowe za pośrednictwem terminala. Wiem, że możesz je wyłączyć, przechodząc do:

ustawienia systemowe> klawiatura> skróty

ale chcę je wyłączyć za pomocą terminala. ktoś wie jak to zrobić?

użytkownik278551
źródło
O jakich skrótach klawiaturowych mówisz? Istnieje bardzo wiele różnych zestawów. Niektóre z nich działają w wierszu poleceń, niektóre aktywują GUI itp. Są one całkowicie oddzielne.
terdon
Jeśli przejdziesz do ustawień systemowych> klawiatura> skróty, w Ubuntu są wszystkie skróty i chcę je wszystkie wyłączyć.
user278551
OK, masz na myśli tylko skróty GUI. Zakładam, że używasz domyślnego systemu Ubuntu, więc środowisko pulpitu to Unity. Czy to jest poprawne?
terdon
tak to jest poprawne.
user278551

Odpowiedzi:

11

Nie mam pojęcia, dlaczego chcesz to zrobić, i ostrzegam cię, że odzyskanie skrótów może być skomplikowane. Jeśli tak naprawdę chcesz to zrobić, poniższe polecenia wyłączą wszystkie skróty klawiaturowe. Zarówno te skonfigurowane za pomocą GUI Unity, jak i te, które mogłeś skonfigurowaćccsm

A. Wyłącz klawisze jedności

  1. Najpierw wykonaj kopię zapasową bieżących powiązań, aby móc je później ponownie włączyć

    gsettings list-recursively org.gnome.desktop.wm.keybindings | 
       perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/' | 
        while IFS=$'\t' read -r key val; do echo -e "$key\t$val"; done > old_settings
    

    Spowoduje to utworzenie pliku o old_settingsnastępującym formacie:

    schema key <TAB> value
    

    Na przykład:

    org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
    
  2. Teraz wyłącz skróty

    gsettings list-recursively org.gnome.desktop.wm.keybindings | 
        perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/' | 
            while IFS=$'\t' read -r key val; do gsettings set $key ['']; done
    

    Wyjaśnienie

    • gsettings list-recursively org.gnome.desktop.wm.keybindings : zawiera listę wszystkich skrótów klawiszowych i ich bieżących wartości
    • perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/': dodaje to znak TAB ( \t) oddzielający wartość od klucza. Ten krok jest potrzebny, aby móc poprawnie odczytać je w następnym.
    • while IFS=$'\t' read -r key val: przejdź przez każdą linię i wczytaj klucz do $ki jego wartość do $val. $IFS=$'\t'oznacza podział na kartach, dzięki czemu klucz i wartość są odczytywane poprawnie.
    • gsettings set $key [''] : faktycznie ustawia wartość na pustą, skutecznie wyłączając skróty.

    Pamiętaj, że może być konieczne wylogowanie się i ponowne zalogowanie, aby to zadziałało.

  3. Odzyskaj (niektóre) skróty

    while IFS=$'\t' read -r key val; do 
        gsettings set "$key" "$val"
    done < old_settings 
    

    OSTRZEŻENIE : Prawdopodobnie nie zadziała to dla wszystkich ustawień, ponieważ niektóre z nich wydają się mieć dodatkowy parametr @asw nazwie klucza i nie wiem, jak sobie z tym poradzić. Jak powiedziałem, nie jest to wcale dobry pomysł.

B. Wyłącz niestandardowe skróty ustawione w ccsm

gsettings set org.gnome.settings-daemon.plugins.media-keys active false

Tym razem odzyskanie ich jest łatwe. Wszystko, co musisz zrobić, to uruchomić

gsettings set org.gnome.settings-daemon.plugins.media-keys active true
terdon
źródło
Dziękuję, świetna robota, myślę, że wciąż brakuje skrótów Compiz?
user.dz
@Sneetsher część B. powinna zajmować się zdefiniowanymi przez użytkownika skrótami compiz. Nie jestem pewien co do domyślnych. Niech sprawdzę.
terdon
Dodano skrypt, który ma być nieco bardziej użytecznym front- endem,
oligofren
Jeśli chodzi o „nie mam pojęcia, dlaczego miałbyś to robić”, przypadkiem użycia dla wszystkich członków mojego zespołu programistów jest to, że domyślne skróty pokrywają się ze znanymi skrótami klawiszy w popularnych programach. W naszym przypadku większość skrótów IntelliJ nie działała i wszyscy naprawdę potrzebujemy tylko kilku skrótów Gnome (takich jak Alt-Tab i zmiana rozmiaru okna).
oligofren
@oligofren na pewno, ale dlaczego miałbyś wtedy wyłączać wszystkie skróty z terminala? To wydało mi się dziwne. Ale w każdym razie do każdego własnego :)
terdon
3

Zbudowałem na podstawie odpowiedzi @ terdon i stworzyłem skrypt, aby zrobić to samo , ale robi to w nieco bardziej przyjazny sposób.

Możesz użyć tego w następujący sposób:

gnome-key-bindings --unset-all --except 'close|switch-applications'

Ponieważ lubię używać domyślnych skrótów klawiszowych Alt-F4 i Alt-Tab (i ich odwrócenie za pomocą shift), to usunie wszystkie skróty klawiszowe oprócz tych.

Ma również ładne menu pomocy:

List/disable/enable/set gnome-key-bindings

gnome-key-bindings [-h | option] [value]

Options
   --list              Lists all the current keybindings
   --set=key           Set a specific keybinding
   --unset=key         Unsets a specific keybinding
   --unset-all         Unsets all keybindings
   --except=REGEX      Filter out keys matching REGEX from being unset
   --print-default     Prints the default shortcuts per Ubuntu 18.04

Examples:

     Clearing all keys except a few:
       gnome-key-bindings --unset-all --except "close|switch-applications|switch-input-source|show-desktop"

     Setting a shortcut
       gnome-key-bindings --set=maximize "<Super>Up"    

Aby użyć go na własnym komputerze

curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/gnome-key-bindings -o gnome-key-bindings
curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/easyoptions.sh -o easyoptions.sh
curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/easyoptions.rb -o easyoptions.rb
chmod +x ./gnome-key-bindings
sudo mv ./gnome-key-bindings easyoptions.* /usr/local/bin/
oligofren
źródło
0

W przypadku gnome na Ubuntu 18.04 znalazłem, że działa:

gsettings list-keys org.gnome.shell.keybindings | xargs -I@ gsettings set org.gnome.shell.keybindings @ ['']
gsettings list-keys org.gnome.mutter.keybindings | xargs -I@ gsettings set org.gnome.mutter.keybindings @ ['']
gsettings list-keys org.gnome.settings-daemon.plugins.media-keys | xargs -I@ gsettings set org.gnome.settings-daemon.plugins.media-keys @ ['']
gsettings set org.gnome.mutter overlay-key ''

Nie jestem pewien, czy to wszystkie klawisze skrótów, ale wydaje się, że jest ich większość

pożar
źródło