Faça um teclado sem fio sempre usar o layout especificado

Faça um teclado sem fio sempre usar o layout especificado

Isso realmente deveria ser um comentário sobre uma resposta à perguntaComo atribuir permanentemente um layout de teclado diferente a um teclado USB?Como não é possível comentar, aqui está a nova pergunta, espero que @Sadi esteja lendo:

Meu teclado e mouse sem fio pararam de funcionar depois disso. Pode estar relacionado ao fato de a string "USB Keyboard" não estar contida no nome do meu dispositivo.

lsusb
Bus 003 Device 088: ID 046a:010b Cherry GmbH

xinput -list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ MLK Wireless Desktop                  id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
 ↳ MLK Wireless Desktop                     id=14   [slave  keyboard (3)]

portanto, minha linha GREP fica assim:

xinput -list | grep 'Wireless Desktop.*keyboard' "$@"

Para alterar o layout basta anotar o ID e digitar

setxkbmap -device 14 {language code}

Alguma idéia de como consertá-lo permanentemente para que o computador reconheça este dispositivo e o tenha com o idioma correto pronto depois de conectado?


Possíveis pistas aqui:

Responder1

Pelo que sei (o que não é muito) todas as soluções que envolvemudev.rulesparou de funcionar recentemente e, no momento, a única solução que parece funcionar é um script de inicialização simples que pressupõe que o segundo teclado esteja conectado antes do usuário fazer login ou então o usuário deve executar manualmente esse script mais tarde.

O script testado para funcionar com teclados USB (aqui:https://askubuntu.com/a/337431/47343) deve, obviamente, ser modificado parateclados sem fio, que pode ser algo como o abaixo.

Nota 1: Além de inserir o código de layout de teclado desejado, também pode ser necessária alguma tentativa e erro (por exemplo, primeiro inserir cada linha em uma janela de terminal), pois o autor é um "amador" (e quase iniciante) " roteirista" ;-)

#!/bin/bash
extkbd=`xinput -list | grep -c "Wireless.*keyboard"`
if [[ "$extkbd" -gt 0 ]]
then
    extkbd_id1=`xinput -list | grep "Virtual core keyboard" | awk -F'=' '{print $2}' | cut -c 1-2`
    extkbd_id2=`xinput -list | grep "Wireless.*keyboard" | awk -F'=' '{print $2}' | cut -c 1-2`
    extkbd_layout="<kbdlayoutcode>"
    setxkbmap -device "${extkbd_id1}" -layout "${extkbd_layout}"
    setxkbmap -device "${extkbd_id2}" -layout "${extkbd_layout}"
    notify-send -i input-keyboard "Wireless Keyboard" "is ready and set for use..."
fi
exit 0

Nota 2: Como o sistema parece atribuir 2 IDs de dispositivos a um hardware, descobri que é mais seguro atribuir o mesmo código de layout de teclado a ambos os IDs de dispositivos.

informação relacionada