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ć?
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ć?
Odpowiedzi:
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
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_settings
następującym formacie:
schema key <TAB> value
Na przykład:
org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
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
gsettings list-recursively org.gnome.desktop.wm.keybindings
: zawiera listę wszystkich skrótów klawiszowych i ich bieżących wartościperl -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 $k
i 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.
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 @as
w nazwie klucza i nie wiem, jak sobie z tym poradzić. Jak powiedziałem, nie jest to wcale dobry pomysł.
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
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/
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ść