Definiu permanentemente as opções de layout de teclado com o setxkbmap no gnome / unity

23

O Ubuntu 13.10 1 (e talvez o gnome upstream) introduziu o bug muito chato : pressionar o atalho do comutador de layout do teclado faz com que o foco desapareça em alguma janela do sistema e, em seguida, volte à janela onde o atalho foi pressionado. Alguns aplicativos têm algumas ações que mudam de foco, por exemplo o twitter (no navegador) fecha o campo de entrada de texto de resposta ao perder o foco, etc. Assim, o switcher de teclado nativo do ubuntu não é adequado para mim, até ser corrigido.

O X tem um mecanismo de comutação embutido, e é muito melhor, além de não envolver a troca de foco, ele muda imediatamente (o gnome switcher também às vezes fica atrasado).

Como posso configurar as opções do xkbmap para que as configurações permaneçam após a reinicialização e não sejam redefinidas pelo Gnome?

O que eu tentei:

Primeiro, apenas executando o setxkbmap:

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

Mas funciona apenas:

  1. Para a sessão atual
  2. Até que o Gnome o sobrescreva (por exemplo, tocar algo na reconfiguração dos acionadores do gconf org.gnome.desktop.input-sources ).

Segundo, adicionando opções do xkb na configuração do Xorg:

Outra opção é adicionar o seguinte à configuração do 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

O Xorg entende que durante a inicialização:

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

Mas a configuração de comutação ainda é redefinida posteriormente, provavelmente pelo gnome.

Terceiro, gconf

Eutenhoxkb-optionsesourcesdefinidoemorg.gnome.desktop.input-sources,masoGnomeaindadefinexkbparaumúnicolayouteminglês:

$setxkbmap-print-verbose10Settingverboselevelto10localeisCTryingtoloadrulesfile./rules/evdev...Tryingtoloadrulesfile/usr/share/X11/xkb/rules/evdev...Success.Appliedrulesfromevdev:rules:evdevmodel:pc105layout:usoptions:grp_led:scrollTryingtobuildkeymapusingthefollowingcomponents:keycodes:evdev+aliases(qwerty)types:completecompat: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)" };
};

Em quarto lugar, outra opção no gconf

Aconfiguraçãoorg.gnome.settings-daemon.peripherals.keyboardtambémnãofuncionaparamim.Nadamuda.

Atualização1: Há discussão a> recomendando remover /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so . Pelo menos isso corrige alguns resets do xkbmap (ou seja, após a tela de bloqueio).

1 eu uso o 14.04, mas o problema de perder o foco ainda não está corrigido. ( Relatório não confirmado no Gnome upstream )

    
por kolen 21.04.2014 / 11:36

5 respostas

15

Para evitar que o gnome redefina a configuração do teclado no X, use este comando:

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

Isso funciona para mim.

    
por Iasha102 06.02.2015 / 19:00
5

Eu tenho enlouquecido isso como você, mas com o Ubuntu 14.04 (LTS), o Xubuntu, o xfce 4.12 e o xkbd (do xfce goodies). Ctrl + Espaço para alterar o layout do teclado funcionou, mas o Alt + Shift não (teclas modificadoras somente).

Finalmente consegui fazer as coisas funcionarem -

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

Você terminou! Use Alt + Shift para alterar o layout do teclado.

    
por Oron Port 22.07.2015 / 15:49
2

Acabei de ler este artigo no screenlocking, que pode estar relacionado. De acordo com o artigo, o bloqueio de tela tem a consequência pretendida de bloquear dispositivos de entrada e manipular localidades. Parece que você tem algumas opções:

  1. Pare de bloquear a tela, provavelmente isso inclui também a tela de saudação, que serve uma função semelhante
  2. Use diferentes ferramentas de gerenciamento de energia
  3. Pare de usar o ibus para im-switching (talvez FCITX?)
  4. Crie um gancho para os eventos de desbloqueio de tela, conforme descrito aqui .

Existe uma discussão interessante sobre isso e sobre eventos relacionados que podem ser encontrados na lista de discussão do ubuntu-dev: link

    
por Hawk 17.09.2014 / 04:34
1

Solução alternativa pelo usuário wof no rastreador de bugs do Ubuntu, para o Ubuntu 14.10 usando gxkb :

link

% bl0ck_qu0te%     
por kolen 19.02.2015 / 17:04
0
% bl0ck_qu0te%

Bem, na medida em que o Gnome "redefinir", eu não sei. Eu sei como você pode ficar a cada reinicialização, como eu tive que fazer exatamente o mesmo tipo de coisa para o meu mouse Logitech. Tem vários botões que eu queria remapear de uma determinada maneira e eu tive que ter esse conjunto no reinício.

Então, o que você faz para isso é criar um arquivo de texto. Então, nesse tipo de arquivo de texto:

#!/bin/bash

e logo abaixo, coloque seus comandos. Por exemplo, meu mouse se parece com isso:

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

Em seguida, você salvaria isso como o nome que quiser e mova-o para algum lugar como seu diretório pessoal. tem que ficar lá "para sempre".

em seguida, basta abrir seus aplicativos de inicialização e adicionar o arquivo à sua inicialização e, em seguida, você não precisa se preocupar com isso com duração apenas para a sessão. não há problema em reinicializar seu computador porque suas configurações voltarão pelo arquivo que você acabou de adicionar.

    
por David 21.10.2014 / 19:24