Defina o layout do teclado para de, variante us

3

Eu quero definir o layout do meu teclado como 'de' variante 'us'. No meu ubuntu 15.10 com a unidade isso funciona bem usando o comando setxkbmap de us .

O problema é que eu tenho que executar este comando após cada inicialização / após cada ativação do sono. Como posso configurar meu sistema para usar permanentemente o layout mencionado? Eu sei que posso usar alguma forma de autostart (unidade ou .xinitrc), no entanto, isso não funcionará após a suspensão. Eu também li sobre como configurar o layout em org.gnome.desktop.input-sources aqui , mas isso não dará os resultados desejados usando a string 'de + us'.

Alguma idéia?

    
por dassmann 07.01.2016 / 12:18

2 respostas

3

Observação para outros pesquisadores que acessem esta página: aparentemente, isso é peculiar ao layout de-us no ambiente Unity, porque, por algum motivo, falta uma entrada em um arquivo de configuração específico.

Como os dados do teclado são armazenados no Ubuntu

No Ubuntu, existe uma pasta chamada /usr/share/X11/xkb/symbols , que contém algumas subpastas, além de vários arquivos de texto, cada um representando um layout diferente. A maioria desses layouts, se não todos, tem várias variantes. O que nos interessa é a variante us do teclado de , então abrimos o arquivo de e rolamos até a seguinte entrada (estava na linha 686 para mim, mas eu não estou 15.10).

partial alphanumeric_keys
xkb_symbols "us" {
    include "us"

    name[Group1]="German (US keyboard with German letters)";

    key <AC01> { [           a,          A, adiaeresis, Adiaeresis ] };
    key <AC02> { [           s,          S,     ssharp,     ssharp ] };
    key <AC10> { [   semicolon,      colon, odiaeresis, Odiaeresis ] };
    key <AC11> { [  apostrophe,   quotedbl, adiaeresis, Adiaeresis ] };
    key <AD03> { [           e,          E,   EuroSign,   EuroSign ] };
    key <AD07> { [           u,          U, udiaeresis, Udiaeresis ] };
    key <AD09> { [           o,          O, odiaeresis, Odiaeresis ] };
    key <AD11> { [ bracketleft,  braceleft, udiaeresis, Udiaeresis ] };
    key <AE03> { [           3, numbersign,    section,    section ] };
    key <AE11> { [       minus, underscore,     ssharp,   question ] };

    include "level3(ralt_switch)"
};

Isso define o teclado como idêntico à variedade QWERTY padrão us , com alterações em

  • teclas 1 (A), 2 (S), 10 (;) e 11 (') na linha inicial
  • teclas 3 (E), 7 (U), 9 (O) e 11 ([) na linha superior
  • teclas 3 (3) e 11 (-) na linha de números
  • a tecla ALT usada para acessar os caracteres especiais

Verificamos se está formatado corretamente, sem perder os colchetes ou qualquer outra coisa, e é. É por isso que setxkbmap de us é bem-sucedido, mesmo que apenas temporariamente. Vamos copiar a descrição desta entrada mais tarde.

Como o Ubuntu acessa esses dados

O Ubuntu tem uma configuração de registro onde salva o nome do teclado ou dos teclados que o usuário deseja. No entanto, temos que consertar uma entrada em outro arquivo de configuração antes que o Ubuntu aceite nosso teclado preferido. O arquivo que precisa ser modificado é /usr/share/X11/xkb/rules/evdev.xml .

Este arquivo tem três seções principais:

  • uma lista de modelos de teclado conhecidos (descrevendo a organização física dos botões)
  • uma lista de layouts de teclado conhecidos (descrevendo a atribuição lógica de caracteres a chaves)
  • uma lista de opções (descrevendo possíveis modificações no layout)

Precisamos abrir isso como root para que possamos salvá-lo mais tarde. Como queremos usar a variante us do layout de , a parte relevante do arquivo será a segunda seção - especificamente, modificamos o layout alemão (na minha cópia, isso começa na linha 3176).

<layout>
  <configItem>
    <name>de</name>

    <shortDescription>de</shortDescription>
    <description>German</description>
    <languageList>
      <iso639Id>ger</iso639Id>
    </languageList>
  </configItem>
  <variantList>
    <variant>
      <configItem>
        <name>us</name>
        <description>German (US keyboard with German letters)</description>
      </configItem>
    </variant>

Observe a estrutura desta seção. Cada layout contém uma configuração e várias variantes. Eu adicionei uma nova entrada variant (as últimas seis linhas), imediatamente após a abertura da tag variantList , cujo conteúdo corresponde ao que eu encontrei no arquivo de dados do teclado acima.

Após salvar, altere a configuração do registro para selecionar a entrada recém-adicionada:

gsettings set org.gnome.desktop.input-sources sources [('xkb', 'de+us')]

Eu achei necessário fazer logout e voltar para que essa alteração tivesse efeito, mas depois disso, o layout funcionava como se esperaria, incluindo ciclos de suspensão / reinício restantes.

    
por Aoeuid 22.01.2016 / 00:03
1

Adicione um novo script em /etc/pm/sleep.d , denomine 20_my-layout

case "" in
    resume|thaw)
        DISPLAY=:0.0 ; export DISPLAY
        setxkbmap de us
;;
esac

Fonte: Como executar um comando após o reinício da suspensão?

    
por user.dz 19.01.2016 / 14:34