Establezca permanentemente las opciones de diseño del teclado con setxkbmap en gnome / unity

28

Ubuntu 13.10 1 (y tal vez gnome en sentido ascendente) introdujo un error muy molesto : al presionar el atajo del interruptor de diseño del teclado, el foco desaparece en alguna ventana del sistema y luego vuelve a la ventana donde se presionó el atajo. Algunas aplicaciones tienen algunas acciones destinadas a cambiar de enfoque, por ejemplo, twitter (en el navegador) cierra el campo de entrada de texto de respuesta al perder el foco, etc. Por lo tanto, el conmutador de teclado nativo de ubuntu no es adecuado para mí, hasta que se solucione.

X tiene un mecanismo de conmutación incorporado, y es mucho mejor, además de que no implica conmutación de enfoque, cambia inmediatamente (el conmutador gnome también a veces se retrasa).

¿Cómo puedo configurar las opciones de xkbmap para que la configuración permanezca después del reinicio y Gnome no la restablezca?

Lo que he intentado:

Primero, solo ejecutando setxkbmap:

setxkbmap -layout "us,ru"
setxkbmap -option "grp:caps_toggle,grp_led:scroll,compose:ralt"

Pero solo funciona:

  1. Para la sesión actual
  2. Hasta que Gnome lo sobrescriba (por ejemplo, tocar algo en el org.gnome.desktop.input-sourcesreinicio de los activadores de gconf ).

En segundo lugar, agregar opciones xkb a la configuración de Xorg:

Otra opción es agregar lo siguiente a la configuración de xorg:

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,ru"
        Option "XkbModel" "pc105"
        Option "XkbVariant" "pc105"
        Option "XkbOptions" "grp:rctrl_toggle,grp_led:scroll"
EndSection

Xorg entiende que durante el inicio:

[    33.791] (**) Option "xkb_rules" "evdev"
[    33.791] (**) Option "xkb_model" "pc105"
[    33.791] (**) Option "xkb_layout" "us,ru"
[    33.791] (**) Option "xkb_variant" "pc105"
[    33.791] (**) Option "xkb_options" "grp:rctrl_toggle,grp_led:scroll"

Pero la configuración de cambio aún se restablece más tarde, probablemente por gnome.

Tercero, gconf

ingrese la descripción de la imagen aquí

Tengo xkb-optionsy sourcesconfiguré org.gnome.desktop.input-sources, pero Gnome todavía establece xkb en un solo diseño en inglés:

$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     us
options:    grp_led:scroll
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete+ledscroll(group_lock)
symbols:    pc+us+inet(evdev)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete+ledscroll(group_lock)"    };
    xkb_symbols   { include "pc+us+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
};

Cuarto, otra opción en gconf

ingrese la descripción de la imagen aquí

La configuración org.gnome.settings-daemon.peripherals.keyboardtampoco me funciona. Nada cambia.

Upd 1 : Hay discusión recomendando eliminar /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so. Al menos esto corrige algunos restablecimientos de xkbmap (es decir, después de la pantalla de bloqueo).

1 Uso 14.04, pero el problema con la pérdida de enfoque aún no está solucionado. ( Informe no confirmado en el upstream Gnome )

kolen
fuente
¿Has intentado configurar el diseño correctamente en gnome y luego agregar los dos setxkbmapcomandos a tu ~/.profile? De esa manera, se ejecutarán cada vez que inicie sesión y, dado que la misma configuración está allí en Gnome, no debería cambiar nada si se restablece.
terdon
1
@terdon se restablece incluso después del bloqueo de pantalla. Y se restablece al estado "solo para nosotros, sin cambio", no a la configuración definida en org.gnome.desktop.input-sources.
kolen
Extraño. ¿Estás seguro de que estás usando Gnome y no Unity? ¿Has intentado cambiar la configuración a través de la GUI normal en lugar de dconf-editor?
terdon
@terdon sí, es la unidad, pero usa cosas perdidas de gnome, como gnome-settings-daemon, que posiblemente restablece el mapa de teclas.
kolen
Entonces, ¿ha intentado establecer la configuración correcta desde la GUI de Unity?
terdon

Respuestas:

19

Para evitar que gnome restablezca la configuración del teclado en X, uso este comando:

gsettings set org.gnome.settings-daemon.plugins.keyboard active false

Esto funciona para mi.

Iasha102
fuente
44
Intenté esto en Ubuntu 14.04 y no hace nada. ¿Tiene alguna explicación sobre cómo se supone que esto funciona?
Nickolai Leschov
2
Funciona para mí en 14.04
ndemou
2
Funciona para mí en 16.04, después de probar todo lo demás.
Leonardo Castro
1
El único método que encontré trabajando en 17.04.
Cnly
1
Tenga en cuenta que Ubuntu también había creado un demonio de configuración de la unidad por un período de tiempo también, pero ahora que van a volver a Gnome nuevamente, esto podría seguir funcionando.
dragon788
6

Me he vuelto loco con esto al igual que tú, pero con Ubuntu 14.04 (LTS), Xubuntu, xfce 4.12 y xkbd (de xfce goodies). Ctrl + Espacio para cambiar la distribución del teclado funcionó, pero Alt + Shift no (teclas de solo modificador).

Finalmente pude hacer que las cosas funcionen

1. Run ibus-setup (Keyboard Input Methods application).
2. Goto Advanced tab.
3. Check 'Use system keyboard layout'.
4. Click 'Close'

5. Run xfce4-keyboard-settings (Keyboard application).
6. Goto Layout tab.
7. Uncheck 'Use system defaults'
8. Select 'Keyboard model' (typically 'Generic 105-key (Intl) PC' will do)
9. Set 'Change layout option' to your required switching keys combination (typically Alt+Shift will do).
10. Add languages to 'Keyboard layout'.
11. Click 'Close'.
12. Restart the computer

Ya terminaste! Use Alt + Mayús para cambiar la distribución del teclado.

Puerto de Oron
fuente
1
¿Por qué recomienda usar xfce4-keyboard-settingsespecíficamente en la pregunta para pedir ayuda con gnome / unity?
Nickolai Leschov
2

Acabo de leer este artículo sobre bloqueo de pantalla, que puede estar relacionado. Según el artículo, el bloqueo de pantalla tiene la consecuencia prevista de bloquear dispositivos de entrada y manipular configuraciones regionales. Parece que tienes algunas opciones:

  1. Deje de bloquear la pantalla, probablemente esto también incluye la pantalla de saludo que cumple una función similar
  2. Use diferentes herramientas de administración de energía
  3. Deje de usar ibus para el cambio de imagen (¿Quizás FCITX?)
  4. Cree un enlace para eventos de desbloqueo de pantalla como se describe aquí .

Hay una discusión interesante sobre este y los eventos relacionados que se pueden encontrar en la lista de correo ubuntu-dev: https://lists.ubuntu.com/archives/ubuntu-devel/2013-November/037768.html

Halcón
fuente
1

Solución alternativa por el usuario wof en Ubuntu bug tracker, para Ubuntu 14.10 usando gxkb :

https://bugs.launchpad.net/gnome-settings-daemon/+bug/1244090/comments/39

esta solución funcionó para ubuntu 14.10:

  • en Configuración-> Entrada de texto, elimine todas las fuentes de entrada, deje solo inglés
  • instalar gxkb (selector de diseño): sudo apt-get install gxkb
  • agregue gxkb a las aplicaciones de inicio a través de gnome-tweak-tool
  • configure las teclas de acceso rápido gxkb en ~ / .config / gxkb (el valor predeterminado es alt_shift, pero en 14.10 no funciona. ctrl_shift funciona bien)

ps nueva versión de gxkb tiene appindicator para ubuntu. se puede instalar a través de ppa: zen-root / gxkb-stable

kolen
fuente
(No lo he probado todavía)
kolen
E: No se puede encontrar el paquete gxkb
e18r
0

Primero, solo ejecutando setxkbmap:

setxkbmap -layout "us, ru" setxkbmap -option "grp: caps_toggle, grp_led: scroll, compose: ralt"

Pero solo funciona:

For current session
Until Gnome will overwrite it (for example touching something in gconf's org.gnome.desktop.input-sources triggers reset).

Bueno, en cuanto a Gnome "reiniciando" no lo sé. Sin embargo, sé cómo puedes mantener cada reinicio, ya que tuve que hacer exactamente el mismo tipo de cosas para mi mouse Logitech. Tiene varios botones que quería reasignar de cierta manera y tuve que configurarlo al reiniciar.

Entonces, lo que haces para eso es crear un archivo de texto. Luego, en ese tipo de archivo de texto:

#!/bin/bash

y justo debajo de eso poner en sus comandos. Como ejemplo, mi mouse se ve así:

#!/bin/bash
xinput set-button-map "Logitech USB-PS/2 Optical Mouse" 1 2 3 4 5 8 9 6 7 10 11 12 13 14 15 16

a continuación, lo guardará como el nombre que desee y lo moverá a un lugar como su directorio de inicio. tiene que quedarse allí "para siempre".

luego abra sus aplicaciones de inicio y agregue el archivo a su inicio y luego no tendrá que preocuparse de que dure solo la sesión. estará bien reiniciar su computadora porque su configuración volverá a través del archivo que acaba de agregar.

David
fuente