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ć?


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

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/

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ść

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.