Imposta in modo permanente le opzioni di layout della tastiera con setxkbmap in gnome / unity


28

Ubuntu 13.10 1 (e forse lo gnomo a monte) ha introdotto un bug molto fastidioso : premendo il layout della tastiera si passa alla finestra di sistema, quindi si torna alla finestra in cui è stato premuto il collegamento. Alcune applicazioni hanno alcune azioni legate al cambio di focus, ad esempio twitter (nel browser) chiude il campo di immissione del testo di risposta quando si perde lo stato attivo, ecc. Quindi il selettore di tastiera nativo di Ubuntu non è adatto a me, fino a quando non viene risolto.

X ha un meccanismo di commutazione incorporato, ed è molto meglio, oltre a non comportare la commutazione della messa a fuoco, cambia immediatamente (lo switcher gnome a volte anche in ritardo).

Come posso impostare le opzioni di xkbmap in modo che le impostazioni rimangano dopo il riavvio e non vengano ripristinate da Gnome?

Cosa ho provato:

Innanzitutto, eseguendo solo setxkbmap:

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

Ma funziona solo:

  1. Per la sessione corrente
  2. Fino a quando Gnome non lo sovrascriverà (ad esempio toccando qualcosa nel org.gnome.desktop.input-sourcesripristino dei trigger di gconf ).

In secondo luogo, aggiungendo opzioni xkb alla configurazione di Xorg:

Un'altra opzione è aggiungere quanto segue a xorg config:

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 comprende che durante l'avvio:

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

Ma il cambio di configurazione si ripristina ancora in seguito, probabilmente da gnome.

Terzo, gconf

inserisci qui la descrizione dell'immagine

Ho xkb-optionse sourcesimpostato org.gnome.desktop.input-sources, ma Gnome imposta ancora xkb sul layout singolo inglese:

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

In quarto luogo, un'altra opzione in gconf

inserisci qui la descrizione dell'immagine

Anche l'impostazione org.gnome.settings-daemon.peripherals.keyboardnon funziona per me. Niente cambia.

Aggiornamento 1 : c'è una discussione che consiglia di rimuovere /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so. Almeno questo risolve alcuni ripristini di xkbmap (cioè dopo la schermata di blocco).

1 Uso 14.04, ma il problema con la perdita della messa a fuoco non è ancora risolto. ( Rapporto non confermato in Gnome a monte )


Hai provato a impostare correttamente il layout in gnome e quindi ad aggiungere i due setxkbmapcomandi al tuo ~/.profile? In questo modo, verranno eseguiti ogni volta che accedi e poiché le stesse impostazioni sono presenti in Gnome, non dovrebbe cambiare nulla se si ripristina.
terdon,

1
@terdon si ripristina anche dopo il blocco dello schermo. E ripristina lo stato "solo noi, nessun interruttore", non alle impostazioni definite in org.gnome.desktop.input-sources.
Kolen,

Strano. Sei sicuro di utilizzare Gnome e non Unity? Hai provato a modificare le impostazioni tramite la normale GUI anziché dconf-editor?
terdon,

@terdon sì, è unità, ma usa perso le cose di gnome, come gnome-settings-daemon, che reimposta possibilmente keymap.
Kolen,

Quindi, hai provato a configurare le impostazioni corrette dalla GUI di Unity?
terdon,

Risposte:


19

Per impedire a gnome di ripristinare le impostazioni della tastiera in X, utilizzo questo comando:

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

Questo funziona per me.


4
Ho provato questo su Ubuntu 14.04 e non fa nulla. Hai qualche spiegazione riguardo: come dovrebbe funzionare?
Nickolai Leschov,

2
Funziona per me nel 14.04
ndemou il

2
Funziona per me nel 16.04, dopo aver provato tutto il resto.
Leonardo Castro,

1
L'unico metodo che ho trovato funzionante in 17.04.
Cnly,

1
Tieni presente che Ubuntu ha effettivamente creato un demone unità-impostazioni per un certo periodo di tempo, ma ora che stanno tornando a Gnome potrebbe continuare a funzionare.
Dragon788,

6

Sono andato pazzo proprio come te, ma con Ubuntu 14.04 (LTS), Xubuntu, xfce 4.12 e xkbd (dalle chicche di Xfce). Ctrl + Spazio per modificare il layout della tastiera ha funzionato, ma Alt + Maiusc non ha funzionato (tasti solo modificatore).

Finalmente sono riuscito a far funzionare le cose-

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

Hai finito! Usa Alt + Maiusc per cambiare il layout della tastiera.


1
Perché mi consiglia di utilizzare xfce4-keyboard-settingsnella domanda chiedendo aiuto con gnome / unity, in particolare?
Nickolai Leschov,

2

Ho appena letto questo articolo sul blocco dello schermo, che potrebbe essere correlato. Secondo l'articolo, il blocco dello schermo ha la conseguenza prevista del blocco dei dispositivi di input e della manipolazione dei locali. Sembra che tu abbia alcune opzioni:

  1. Smetti di bloccare lo schermo, probabilmente questo include anche lo schermo di saluto che ha una funzione simile
  2. Utilizzare diversi strumenti di gestione dell'alimentazione
  3. Smetti di usare ibus per l'im-switching (forse FCITX?)
  4. Crea un hook per gli eventi di sblocco dello schermo come descritto qui .

C'è una discussione interessante di questo e degli eventi correlati che possono essere trovati nella mailing list ubuntu-dev: https://lists.ubuntu.com/archives/ubuntu-devel/2013-November/037768.html


1

Soluzione alternativa dell'utente wof nel tracker dei bug di Ubuntu, per Ubuntu 14.10 usando gxkb :

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

questa soluzione ha funzionato per Ubuntu 14.10:

  • in Impostazioni-> Inserimento testo rimuovi tutte le fonti di input, lascia solo l'inglese
  • install gxkb (selettore di layout): sudo apt-get install gxkb
  • aggiungi gxkb alle applicazioni di avvio tramite gnome-tweak-tool
  • imposta i tasti di scelta rapida gxkb in ~ / .config / gxkb (il valore predefinito è alt_shift, ma in 14.10 non funziona. ctrl_shift funziona bene)

ps la nuova versione di gxkb ha l'appindicator per Ubuntu. può essere installato tramite ppa: zen-root / gxkb-stable


(Non ancora provato)
Kolen

E: Impossibile trovare il pacchetto gxkb
e18r

0

Innanzitutto, eseguendo solo setxkbmap:

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

Ma funziona solo:

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

Beh, per quanto riguarda Gnome "ripristinarlo", non lo so. So come è possibile interrompere ogni riavvio, poiché ho dovuto fare esattamente lo stesso tipo di cose per il mio mouse Logitech. Ha più pulsanti che volevo rimappare in un certo modo e ho dovuto averlo impostato al riavvio.

Quindi quello che fai è creare un file di testo. Quindi in quel file di testo digitare:

#!/bin/bash

e proprio sotto quello che inserisci i tuoi comandi. Ad esempio il mio mouse è simile al seguente:

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

poi lo salveresti come un nome qualsiasi e lo sposteresti in un posto come la tua home directory. deve rimanere lì "per sempre".

quindi apri le applicazioni di avvio e aggiungi il file all'avvio e non devi preoccuparti che duri solo per la sessione. andrà bene riavviare il computer perché le impostazioni torneranno attraverso il file appena aggiunto.

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.