Deshabilite todos los atajos de teclado de Unity usando la línea de comando

8

Me gustaría saber cómo puedo desactivar TODOS los atajos de teclado a través del terminal. Sé que puede deshabilitarlos yendo a:

configuración del sistema> teclado> accesos directos

pero quiero deshabilitarlos a través de la terminal. Alguien sabe cómo se puede hacer esto?

usuario278551
fuente
¿De qué atajos de teclado estás hablando? Hay muchos conjuntos diferentes. Tiene algunos que funcionan en la línea de comandos, algunos que activan cosas de la GUI, etc. Están completamente separados.
terdon
Si va a la configuración del sistema> teclado> accesos directos, hay todos los accesos directos en ubuntu y quiero deshabilitarlos todos.
user278551
OK, entonces te refieres solo a los atajos de la GUI. Supongo que está utilizando el Ubuntu predeterminado, por lo que su entorno de escritorio es Unity. ¿Es eso correcto?
terdon
si, eso es correcto.
user278551

Respuestas:

11

No tengo idea de por qué querrías hacer esto y debo advertirte que puede ser complicado recuperar los atajos. Si esto es realmente lo que quieres hacer, los siguientes comandos deshabilitarán todos los atajos de teclado. Tanto los configurados a través de la GUI de Unity como cualquiera que haya configurado utilizandoccsm

A. Deshabilitar los keyindings de Unity

  1. Primero haga una copia de seguridad de los enlaces actuales para que pueda volver a habilitarlos más tarde

    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
    

    Esto creará un archivo llamado old_settingsen el siguiente formato:

    schema key <TAB> value
    

    Por ejemplo:

    org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
    
  2. Ahora deshabilita los atajos

    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
    

    Explicación

    • gsettings list-recursively org.gnome.desktop.wm.keybindings : esto enumera todas las combinaciones de teclas y sus valores actuales
    • perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/': esto simplemente agrega un carácter TAB ( \t) que separa el valor de la clave. Este paso es necesario para poder leerlos correctamente en el siguiente.
    • while IFS=$'\t' read -r key val: revisa cada línea y lee la clave $ky su valor $val. $IFS=$'\t'significa dividir en pestañas para que la clave y el valor se lean correctamente.
    • gsettings set $key [''] : esto realmente establece el valor en blanco, deshabilitando efectivamente sus accesos directos.

    Tenga en cuenta que puede que tenga que cerrar sesión y volver a iniciarla para que esto surta efecto.

  3. Recupere (algunos de) sus atajos

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

    ADVERTENCIA : Esto probablemente no funcionará para todas las configuraciones ya que algunas de ellas parecen tener un parámetro adicional @asen el nombre de la clave y no sé cómo lidiar con eso. Como dije, todo esto no es una muy buena idea.

B. Deshabilite sus accesos directos personalizados establecidos en ccsm

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

Esta vez, recuperarlos es fácil. Todo lo que necesitas hacer es correr

gsettings set org.gnome.settings-daemon.plugins.media-keys active true
terdon
fuente
Gracias buen trabajo, creo que todavía faltan los atajos de Compiz?
user.dz
@Sneetsher parte B. debe tratar con los atajos de compiz definidos por el usuario. No estoy seguro acerca de los predeterminados. Dejame revisar.
terdon
Se agregó un script para ser un poco más útil para hacer lo anterior: github.com/fatso83/dotfiles/blob/master/utils/scripts/…
oligofren
Con respecto al "No tengo idea de por qué querrías hacer esto", el caso de uso para todos en mi equipo de desarrollo es que los accesos directos predeterminados se superponen con las combinaciones de teclas conocidas en los programas populares. En nuestro caso, la mayoría de los accesos directos de IntelliJ no funcionaron, y todos realmente solo necesitamos un puñado de los accesos directos de Gnome (como Alt-Tab y cambio de tamaño de ventana).
oligofren
@oligofren seguro, pero ¿por qué necesitaría deshabilitar todos los accesos directos desde la terminal? Eso es lo que me pareció extraño. Pero de todos modos, a cada uno lo suyo :)
terdon
3

Me basé en la respuesta de @terdon e hice un guión para hacer lo mismo , pero lo hago de una manera algo más fácil de usar.

Podrías usarlo así:

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

Como me gusta usar las combinaciones de teclas predeterminadas Alt-F4 y Alt-Tab (y su reversa usando shift), esto eliminaría todas las combinaciones de teclas excepto estas.

También tiene un buen menú de ayuda:

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"    

Para usarlo en tu propia máquina

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
fuente
0

Para gnome en Ubuntu 18.04, encontré que esto funciona:

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

No estoy seguro de si esas son todas las teclas de acceso directo, pero parece ser la mayor parte de ellas

theicfire
fuente