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.