Então, algumas semanas atrás, consegui fazer meu layout de teclado XKB personalizado funcionar com o Ubuntu. Segui as instruções aqui: https://who-t.blogspot.com/2020/09/user-specific-xkb-configuration-putting.html e baixei o script ao qual ele se vincula, aqui: https://gitlab.freedesktop.org/whot/xkblayout Depois de executar o script (esqueci os detalhes das opções que usei e o quanto foi gerado automaticamente, mas mostrarei os resultados em breve) e editar o ~/.config/xkb/symbols/us
arquivo resultante (e possivelmente o ~/.config/xkb/rules/evdev.xml
arquivo resultante, não me lembro se tive que editar manualmente ou se foi tudo feito pelo script), de repente meu layout de teclado personalizado, "Inglês - Interna-Tina-l (teclas mortas AltGr)", estava aparecendo no aplicativo Configurações (ao selecionar um novo layout de teclado, usando Configurações -> Teclado -> seção "Fontes de entrada" -> botão "Adicionar fonte de entrada"; meu novo layout foi listado entre as variantes mostradas ao selecionar "Inglês (Estados Unidos)"). Selecionei o layout e, de repente, ele funcionou, e eu estava digitando alegremente com minhas teclas personalizadas. (Também configurei a opção "Tecla de caracteres alternativos", nas configurações do teclado, para "Super esquerda". Imaginei que isso faria mais sentido do que defini-la no meu layout.)
Então, dois dias atrás, meu sistema travou. Não sei por que e não acho que seja relevante para isso (só direi que estava tentando copiar e colar algo no Emacs, esperando um comportamento normal, e em vez disso meu computador inteiro travou, e como parecia estar um pouco quente, imaginei que minha única opção era Alt+PrtSc+REISUO e desligar a coisa para que pudesse esfriar um pouco), mas o ponto é que tive que desligar e ligar novamente mais tarde. Então, para meu horror, depois de fazer login no Ubuntu, descobri que meu layout de teclado personalizado não funcionava mais! De repente, ele estava usando o layout "Inglês (intl., com teclas mortas AltGr)", do qual meu layout herda (mas faz mudanças significativas, o suficiente para que tentar digitar neste layout, ou em qualquer outro que não seja meu, seja enlouquecedor).
O que era mais desconcertante, no entanto, era que, se eu entrasse nas configurações do teclado, ele ainda dizia que eu estava usando meu layout personalizado! Tentei adicionar explicitamente o layout "Inglês (intl., com teclas mortas AltGr)" como uma segunda fonte de entrada, para poder alternar entre os dois layouts (com Super+Espaço) e, esperançosamente, atualizar a ideia do meu sistema sobre qual layout estou digitando. Mas, se eu alternar para esse layout e depois voltar para o meu, ainda estarei digitando como se estivesse usando aquele outro layout!
O que também pode ser relevante é que se eu tentar usar setxkbmap -query
para ver qual mapa de teclas estou usando no momento de acordo com setxkbmap
, ele diz isso, mesmo que eu esteja definitivamente usando meu layout personalizado de acordo com as configurações do teclado e o indicador da barra de tarefas:
rules: evdev
model: pc105
layout: us
variant: altgr-intl
("altgr-intl" refere-se ao layout "Inglês (intl., com teclas AltGr mortas)", como você deve ter adivinhado.)
(O que provavelmente também é relevante é que a opção "Tecla de caracteres alternativos" ainda está definida como "Super esquerda" nas configurações do teclado, mas a Super esquerda não funciona mais como uma "Tecla de caracteres alternativos"; em vez disso, Alt direito (AltGr) funciona para isso, que é o padrão para o layout "Inglês (intl., com teclas mortas AltGr)"/"altgr-intl".)
Além disso, se eu tentar usar setxkbmap -variant tina
, que eu acho que é como eu deveria direcionar setxkbmap
para escolher minha variante personalizada, ele simplesmente diz Error loading new keyboard description
e sai. Hrmph.
De qualquer forma, aqui eu vou mostrar meus arquivos de layout personalizados, para que você possa decidir por si mesmo se há algo errado com eles, mas tenha em mente que tudo isso funcionou perfeitamente antes de eu reiniciar meu computador . Eu realmente não tenho ideia do que está errado.
(Tenha em mente que as linhas comentadas no meio são partes que costumavam estar no layout do meu teclado, mas por algum motivo não estão mais; estou incluindo-as apenas para completar, porque embora eu não consiga imaginar por que as linhas comentadas causariam problemas, não tenho ideia do que realmente está causando problemas.)
~/.config/xkb/symbols/us
:
// $XKeyboardConfig$
partial alphanumeric_keys modifier_keys
xkb_symbols "tina" {
name[Group1]= "English - Interna-Tina-l (AltGr dead keys)";
include "us(altgr-intl)"
// include "level3(ralt_alt)"
// include "level3(win_switch)"
// key <CAPS> {
// type[Group1]="ONE_LEVEL",
// symbols[Group1] = [ ISO_Level5_Shift ]
// };
// modifier_map Mod3 { ISO_Level5_Shift };
// key.type[Group1]="EIGHT_LEVEL"
key <TLDE> { [ grave, asciitilde, dead_abovedot, dead_tilde ] };
key <CAPS> { [ parenleft, ISO_Next_Group, Greek_lambda, Greek_phi ] };
key <BKSL> { [ parenright, bar, backslash, brokenbar ] };
key <TAB> { [ Tab, ISO_Left_Tab, XF86BackForward, notsign ] };
key <AE01> { [ 1, exclam, onesuperior, U203C ] };
key <AE04> { [ 4, dollar, cent, sterling ] };
key <AE05> { [ 5, percent, EuroSign, yen ] };
key <AE06> { [ 6, asciicircum, onequarter,dead_circumflex ] };
key <AE07> { [ 7, ampersand, onehalf, dead_horn ] };
key <AE08> { [ 8, asterisk, threequarters, dead_ogonek ] };
key <AE09> { [ 9, parenleft, bracketleft, braceleft ] };
key <AE10> { [ 0, parenright, bracketright, braceright ] };
key <AE11> { [ minus, underscore, emdash, endash ] };
key <AB03> { [ c, C, ccedilla, Ccedilla ] };
key <AB04> { [ v, V, copyright, registered ] };
key <AC04> { [ f, F, U017f, U2122 ] };
key <AC10> { [ leftsinglequotemark, leftdoublequotemark, dead_grave, degree ] };
key <AC11> { [rightsinglequotemark, rightdoublequotemark, dead_acute, dead_diaeresis ] };
key <AB08> { [ comma, less, dead_ogonek, dead_caron ] };
key <AB09> { [ period, greater, ellipsis, dead_abovedot ] };
key <AD11> { [ semicolon, colon, enfilledcircbullet, guillemotright ] };
key <AD12> { [ apostrophe, quotedbl, enopencircbullet, guillemotleft ] };
key <I151> { [ Menu ] };
};
~/.config/rules/evdev
:
// generated by xkblayout templates
// Note: no rules file entries are required for for a custom layout
// Include the system 'evdev' file
! include %S/evdev
~/.config/rules/evdev.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
<!-- generated by xkblayout -->
<xkbConfigRegistry version="1.1">
<layoutList>
<layout>
<configItem>
<name>us</name>
<!-- Keyboard indicator for English layouts -->
<shortDescription>en</shortDescription>
<description>English (US)</description>
<countryList>
<iso3166Id>US</iso3166Id>
</countryList>
<languageList>
<iso639Id>eng</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
<name>tina</name>
<shortDescription>tina</shortDescription>
<description>English - Interna-Tina-l (AltGr dead keys)</description>
</configItem>
</variant>
</variantList>
</layout>
</layoutList>
</xkbConfigRegistry>
Além disso, o script xkblayout gerou alguns diretórios vazios: ~/.config/xkb/compat
, ~/.config/xkb/keycodes/
e ~/.config/xkb/types
.
Estou usando o Ubuntu 24.04 em um Thinkpad P53 Workstation. Não acho que nenhuma atualização de pacote tenha causado isso; na verdade, nem o Software Updater nem o gerenciador de pacotes Synaptic (depois de escolher "Reload" e "Mark All Upgrades") mostraram nenhum pacote atualizável para mim em semanas, o que parece estranho para mim, mas essa é uma outra discussão. (Talvez o 24.04 tenha se tornado estável o suficiente para não precisar de atualizações constantes?)