Définissez de manière permanente les options de disposition du clavier avec setxkbmap dans gnome / unit

28

Ubuntu 13.10 1 (et peut-être gnome en amont) a introduit un bug très ennuyeux : en appuyant sur le raccourci du commutateur de disposition du clavier, le focus disparaît dans une fenêtre système, puis revient à la fenêtre où le raccourci a été enfoncé. Certaines applications ont certaines actions liées au changement de focus, par exemple Twitter (dans le navigateur) ferme le champ de saisie de texte de réponse en cas de perte de focus, etc. Donc, le sélecteur de clavier natif d'ubuntu ne me convient pas tant qu'il n'est pas corrigé.

X a un mécanisme de commutation intégré, et c'est beaucoup mieux, en plus de ne pas impliquer de commutation de focus, il change immédiatement (le commutateur gnome est également parfois en retard).

Comment puis-je configurer les options de xkbmap pour que les paramètres restent après le redémarrage et ne soient pas réinitialisés par Gnome?

Ce que j'ai essayé:

Tout d'abord, il suffit d'exécuter setxkbmap:

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

Mais cela ne fonctionne que:

  1. Pour la session en cours
  2. Jusqu'à ce que Gnome le remplace (par exemple, toucher quelque chose dans la org.gnome.desktop.input-sourcesréinitialisation des déclencheurs de gconf ).

Deuxièmement, ajouter des options xkb à la configuration Xorg:

Une autre option consiste à ajouter ce qui suit à la configuration 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 comprend que lors du démarrage:

[    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"

Mais la configuration de commutation est réinitialisée plus tard, probablement par gnome.

Troisièmement, gconf

entrez la description de l'image ici

J'ai installé xkb-optionset sourcesinstallé org.gnome.desktop.input-sources, mais Gnome définit toujours xkb sur une seule disposition en anglais:

$ 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)" };
};

Quatrièmement, une autre option dans gconf

entrez la description de l'image ici

Le réglage org.gnome.settings-daemon.peripherals.keyboardne fonctionne pas non plus pour moi. Rien ne change.

Upd 1 : Il y a une discussion recommandant de supprimer /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so. Au moins cela corrige quelques réinitialisations de xkbmap (c'est-à-dire après l'écran de verrouillage).

1 J'utilise 14.04, mais le problème de perte de focus n'est toujours pas résolu. ( Rapport non confirmé dans Gnome en amont )

volé
la source
Avez-vous essayé de définir correctement la mise en page dans gnome, puis d'ajouter les deux setxkbmapcommandes à votre ~/.profile? De cette façon, ils seront exécutés chaque fois que vous vous connecterez et puisque les mêmes paramètres sont là dans Gnome, cela ne devrait rien changer s'il se réinitialise.
terdon
1
@terdon, il se réinitialise même après le verrouillage de l'écran. Et il revient à l'état "us-only, no switch", pas aux paramètres définis dans org.gnome.desktop.input-sources.
kolen
Étrange. Êtes-vous sûr que vous utilisez Gnome et non Unity? Avez-vous essayé de modifier les paramètres via l'interface graphique normale au lieu de dconf-editor?
terdon
@terdon oui, c'est l'unité, mais il utilise les trucs perdus de gnome, comme gnome-settings-daemon, qui réinitialise éventuellement le clavier.
kolen
Alors, avez-vous essayé de définir les paramètres corrects depuis l'interface graphique Unity?
terdon

Réponses:

19

Pour empêcher gnome de réinitialiser les paramètres du clavier dans X, j'utilise cette commande:

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

Cela fonctionne pour moi.

Iasha102
la source
4
J'ai essayé cela sur Ubuntu 14.04 et cela ne fait rien. Avez-vous une explication concernant: comment cela est censé fonctionner?
Nickolai Leschov,
2
Travaille pour moi le 14.04
ndemou
2
Fonctionne pour moi en 16.04, après avoir essayé tout le reste.
Leonardo Castro
1
La seule méthode que j'ai trouvée fonctionnait en 17.04.
Cnly
1
Gardez à l'esprit qu'Ubuntu a également créé un démon d'unité de paramètres pour une période de temps, mais maintenant qu'ils reviennent à Gnome, cela pourrait continuer à fonctionner.
dragon788
6

Je suis devenu fou à ce sujet comme vous, mais avec Ubuntu 14.04 (LTS), Xubuntu, xfce 4.12 et xkbd (des goodies xfce). Ctrl + Espace pour changer la disposition du clavier a fonctionné, mais Alt + Maj n'a pas fonctionné (touches de modification uniquement).

Enfin réussi à faire fonctionner les choses-

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

Vous avez terminé! Utilisez Alt + Maj pour changer la disposition du clavier.

Port d'Oron
la source
1
Pourquoi recommandez-vous d'utiliser xfce4-keyboard-settingsdans la question demandant de l'aide avec gnome / unité, en particulier?
Nickolai Leschov,
2

Je viens de lire cet article sur le verrouillage d'écran, qui peut être lié. Selon l'article, le verrouillage d'écran a pour conséquence de bloquer les périphériques d'entrée et de manipuler les paramètres régionaux. On dirait que vous avez quelques options:

  1. Arrêtez de verrouiller l'écran, cela inclut probablement également l'écran d'accueil qui remplit une fonction similaire
  2. Utilisez différents outils de gestion de l'alimentation
  3. Arrêtez d'utiliser ibus pour la commutation im (peut-être FCITX?)
  4. Créez un crochet pour les événements de déverrouillage d'écran comme décrit ici .

Il y a une discussion intéressante à ce sujet et aux événements connexes qui peuvent être trouvés sur la liste de diffusion ubuntu-dev: https://lists.ubuntu.com/archives/ubuntu-devel/2013-November/037768.html

faucon
la source
1

Solution de contournement par l'utilisateur wof dans Ubuntu bug tracker, pour Ubuntu 14.10 en utilisant gxkb :

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

cette solution de contournement a fonctionné pour Ubuntu 14.10:

  • dans Paramètres-> Saisie de texte supprimer toutes les sources d'entrée, ne laisser que l'anglais
  • installer gxkb (sélecteur de disposition): sudo apt-get install gxkb
  • ajouter gxkb aux applications de démarrage via gnome-tweak-tool
  • configurer les raccourcis clavier gxkb dans ~ / .config / gxkb (la valeur par défaut est alt_shift, mais en 14.10 cela ne fonctionne pas. ctrl_shift fonctionne bien)

ps nouvelle version de gxkb a appindicator pour ubuntu. peut être installé via ppa: zen-root / gxkb-stable

volé
la source
(Pas encore essayé)
kolen
E: Impossible de localiser le package gxkb
e18r
0

Tout d'abord, il suffit d'exécuter setxkbmap:

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

Mais cela ne fonctionne que:

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

Eh bien jusqu'à ce que Gnome le "réinitialise", je ne sais pas. Je sais cependant comment vous pouvez rester à chaque redémarrage, car j'ai dû faire exactement le même type de chose pour ma souris Logitech. Il a plusieurs boutons que je voulais remapper d'une certaine manière et je devais le régler au redémarrage.

Donc, ce que vous faites pour cela, c'est de créer un fichier texte. Ensuite, dans ce type de fichier texte:

#!/bin/bash

et juste en dessous de celui mis dans vos commandes. À titre d'exemple, ma souris ressemble à ceci:

#!/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

ensuite, vous l'enregistrez sous le nom de votre choix et le déplacez à un endroit comme votre répertoire personnel. il doit y rester "pour toujours".

puis ouvrez simplement vos applications de démarrage et ajoutez le fichier à votre démarrage et vous n'avez pas à vous soucier de sa durée uniquement pour la session. vous pourrez redémarrer votre ordinateur, car vos paramètres reviendront via le fichier que vous venez d'ajouter.

David
la source