Eu tenho um layout de teclado personalizado para o teclado padrão do meu laptop e outros teclados adicionados, que é definido /etc/X11/xorg.conf.d/00-keyboard.conf
assim:
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "dxkb"
Option "XkbVariant" "main"
EndSection
Mas, mais recentemente, fiz um teclado Lily58 e gostaria de fazer uma variante do meu mapa de teclado que se aplicasse automaticamente ao Lily58, mas não a outros teclados, como este:
Section "InputClass"
Identifier "Lily58"
MatchIsKeyboard "on"
Option "XkbLayout" "dxkb"
Option "XkbVariant" "lily58"
EndSection
o problema é como descobrir o identificador do Lily58. Todos os recursos que encontrei apenas mencionam o identificador system-keyboard
, mas não identificadores para teclados específicos, e usar Lily58
como acima não pareceu reconhecer o teclado. Como descubro o identificador correto para o teclado?
O identificador não tem sentido. Você pode configurá-lo
Identifier "Custom layout for my Lily58"
e ele fará a mesma coisa (ou seja, nada).As restrições específicas do modelo são especificadas usando várias
Match*
palavras-chave, como pode ser encontrado na página de manual xorg.conf(5) (e na nota no final da página de manual libinput(4) ). O próprio Xorg vem com algumas dessas configurações em seu 10-quirks.conf.O Xorg no Linux obtém informações do dispositivo do udev; Não sei se existe uma maneira fácil de obter todos os campos "Match" para um determinado dispositivo de entrada X, mas o ID USB é fácil - execute
lsusb
e obtenha o número VVVV:PPPP do seu dispositivo e coloque-o em MatchUSBID .Parece que o Xorg irá despejar as propriedades no xorg.log sempre que detectar um dispositivo, mas não sei como ativar esse registro.
A maneira mais difícil de obter campos de correspondência é:
Use
sudo libinput list-devices
para encontrar o caminho /dev/input/event* para o teclado.Execute
udevadm info /dev/input/eventXX
e observe a primeira linha para obter o caminho do sysfs. (Começa com/devices
– edite para/sys/devices
. Udevadm é exatamente assim.)Corte o
/event*
final do caminho sysfs para chegar ao dispositivo paiinput*
e executeudevadm info
-o. Por exemplo, meu receptor USB Logitech é/sys/devices/pci…/…/input/input16
.Procure estas propriedades:
NAME=
ID_VENDOR=
PRODUCT=
Na verdade, o Xorg também procurará por propriedades do udev chamadas
XkbRules
,XkbLayout
, etc. e as importará diretamente para as configurações do dispositivo de entrada, então também é possível escrever uma regra do udev: