Acabei de mudar de xf86-input-evdev para xf86-input-libinput e ele quebrou o layout do meu teclado – teclas de seta com alt direito, tecla de menu de contexto, tecla delete, enter do teclado numérico, etc., todas estranhamente trocadas. libinput debug-events
mostrou a chave correta, no entanto. Depois de checarXorg.conf
, notei a seguinte linha:
Option "XkbRules" "base"
Depois de alterá-lo para evdev
, o teclado funcionou corretamente.
Eu encontrei "O Guia de Configuração XKB”que menciona as diversas regras, mas não entra em detalhes sobre suas diferenças.
Qual é a diferença entre os dois layouts? Posso usar as regras do evdev mesmo com libinput?
Responder1
dr:No Linux, você deve usar as evdev
regras. Como diz no guia XKB, você vincula:
Em sistemas Linux, oevdevregras são mais comumente usadas, em outros sistemas obaseregras são usadas.
A diferença é em grande parte histórica. evdev
é o subsistema de entrada do kernel Linux moderno e não existia quando o XKB foi escrito pela primeira vez. Se você olhar o código-fonte paraxkeyboard-config, você descobrirá que as regras evdev
e base
são geradas (principalmente) a partir dos mesmos modelos. No entanto , compare os arquivos gerados no banco de dados XKB do seu sistema com diff
. Você verá muitas entradas onde as base
regras carregam inet
símbolos para modelos de teclado específicos, enquanto as evdev
regras eliminam a maioria dessas entradas específicas do modelo e carregam um conjunto mais generalizado:
/usr/share/X11/xkb/rules/base:
[...]
! model = symbols
a4techKB21 = +inet(media_nav_common)
asus_laptop = +inet(media_common)
acer_tm_800 = +inet(acer_laptop)
benqx730 = +inet(benqx)
btc9116u = +inet(btc9019u)
chromebook = +inet(chromebook)
dellsk8125 = +inet(dell)
// and about 50 more lines
// generated from xkeyboard-config/rules/base.m_s.part
/usr/share/X11/xkb/rules/evdev
[...]
! model = symbols
$evdevkbds = +inet(evdev)+inet(%m)
chromebook = +inet(evdev)+inet(chromebook)
applealu_jis = +inet(evdev)+macintosh_vndr/jp(alujiskeys)
* = +inet(evdev)
// ...that's all.
// generated from xkeyboard-config/rules/evdev.m_s.part
Não, na verdade, essa é toda a seção de modelo para símbolos das evdev
regras, enquanto a base
versão tem 60 linhas ímpares. O evdev.m_s.part
arquivo é o modelo de origem para aquela seção das regras; é um mapeamento de modelo para símbolo (a !model = symbol
linha no início dessa seção; daí o m_s
nome do arquivo). A única outra seção das regras específica do evdev vem do evdev.m_k.part
arquivo, que é um mapeamento de modelo para códigos-chave (a !model = keycodes
seção das regras), e as diferenças são semelhantes.
Para mais detalhes, consulte ocódigos-chaveesímbolosarquivos referenciados por essas regras (especialmente /usr/share/X11/xkb/keycodes/evdev
e /usr/share/X11/xkb/symbols/inet
). Você pode estar interessadoesta redação do formato de regras XKB.