Disabilita tutte le scorciatoie da tastiera Unity usando la riga di comando


8

Vorrei sapere come posso disabilitare TUTTE le scorciatoie da tastiera tramite il terminale. So che puoi disabilitarli andando a:

impostazioni di sistema> tastiera> scorciatoie

ma voglio disabilitarli tramite terminale. qualcuno sa come si può fare?


Di quali scorciatoie da tastiera stai parlando? Ci sono molti set diversi. Ce ne sono alcuni che funzionano sulla riga di comando, altri che attivano elementi della GUI, ecc. Sono completamente separati.
terdon,

Se vai su Impostazioni di sistema> Tastiera> Scorciatoie ci sono tutte le scorciatoie in Ubuntu e voglio disabilitarle tutte.
user278551

OK, quindi intendi solo le scorciatoie della GUI. Presumo che tu stia utilizzando Ubuntu predefinito, quindi il tuo ambiente desktop è Unity. È corretto?
terdon,

si, è corretto.
user278551

Risposte:


11

Non ho idea del motivo per cui vorresti farlo e dovrei avvertirti che potrebbe essere complicato recuperare le scorciatoie. Se questo è davvero ciò che vuoi fare, i comandi seguenti disabiliteranno tutte le scorciatoie da tastiera. Entrambi quelli configurati tramite la GUI di Unity e quelli che potresti aver impostato utilizzandoccsm

A. Disabilita i keyindings Unity

  1. Prima fai un backup dei binding attuali in modo da poterli riattivare in seguito

    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
    

    Questo creerà un file chiamato old_settingsnel seguente formato:

    schema key <TAB> value
    

    Per esempio:

    org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
    
  2. Ora disabilita le scorciatoie

    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
    

    Spiegazione

    • gsettings list-recursively org.gnome.desktop.wm.keybindings : elenca tutte le combinazioni di tasti e i loro valori correnti
    • perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/': questo aggiunge semplicemente un carattere TAB ( \t) che separa il valore dalla chiave. Questo passaggio è necessario per poterli leggere correttamente nel prossimo.
    • while IFS=$'\t' read -r key val: passa attraverso ogni riga e leggi la chiave in $ke il suo valore in $val. $IFS=$'\t'significa dividere nelle schede in modo che la chiave e il valore siano letti correttamente.
    • gsettings set $key [''] : questo in realtà imposta il valore su vuoto, disabilitando efficacemente le scorciatoie.

    È possibile che sia necessario disconnettersi e riconnettersi per rendere effettiva questa operazione.

  3. Ottieni (alcune) delle tue scorciatoie

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

    ATTENZIONE : Questo probabilmente non funzionerà per tutte le impostazioni poiché alcune di esse sembrano avere un parametro aggiuntivo @asnel nome della chiave e non so come gestirlo. Come ho già detto, questa non è una buona idea.

B. Disabilita le scorciatoie personalizzate impostate ccsm

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

Questa volta, recuperarli è facile. Tutto quello che devi fare è correre

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

Grazie ottimo lavoro, penso che manchi ancora le scorciatoie Compiz?
user.dz,

@Sneetsher parte B. dovrebbe occuparsi dei collegamenti compiz definiti dall'utente. Non sono sicuro di quelli predefiniti. Fammi controllare.
terdon,

Aggiunto uno script per essere un po 'più un front-end utilizzabile per fare quanto sopra: github.com/fatso83/dotfiles/blob/master/utils/scripts/…
oligofren,

Per quanto riguarda "Non ho idea del motivo per cui vorresti farlo", il caso d'uso per tutti nel mio team di sviluppo è che le scorciatoie predefinite si sovrappongono alle combinazioni di tasti conosciute nei programmi popolari. Nel nostro caso, la maggior parte delle scorciatoie di IntelliJ non funzionava, e tutti abbiamo davvero bisogno solo di una manciata di scorciatoie di Gnome (come Alt-Tab e ridimensionamento delle finestre).
oligofren,

@oligofren certo, ma perché dovresti disabilitare tutte le scorciatoie dal terminale? Questo è quello che ho trovato strano. Ma comunque, a ciascuno il suo :)
Terdon,

3

Ho costruito la risposta di @ terdon e creato uno script per fare lo stesso , ma lo fa in un modo un po 'più user friendly.

Puoi usarlo in questo modo:

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

Siccome mi piace usare le combinazioni di tasti predefinite Alt-F4 e Alt-Tab (e il loro contrario usando shift), questo rimuove tutte le combinazioni di tasti tranne queste.

Ha anche un bel menu di aiuto:

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"    

Per usarlo sul tuo computer

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

Per gnome su Ubuntu 18.04, ho scoperto che funzionava:

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 ''

Non sono sicuro che siano tutti i tasti di scelta rapida, ma sembra essere la maggior parte di essi

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.