Faça um teclado sem fio sempre usar layout especificado

1

Isso realmente deve ser um comentário sobre uma resposta à pergunta Como atribuir permanentemente um layout de teclado diferente a um teclado USB? Como os comentários não são possíveis, aqui está a nova pergunta, espero que o @Sadi esteja lendo:

Meu teclado e mouse sem fio pararam de funcionar depois disso. Pode estar relacionado ao fato de que a string "Teclado USB" não está 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)]

assim, minha linha GREP se parece com isso: xinput -list | grep 'Wireless Desktop.*keyboard' "$@"

Para alterar o layout, simplesmente observe o ID e digite

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:

link

link .

Como posso alterar automaticamente o layout do teclado do sistema ao conectar um teclado externo?

    
por Max N 14.06.2014 / 19:01

1 resposta

1

Tanto quanto eu sei (o que não é muito) todas as soluções envolvendo udev.rules pararam de funcionar recentemente, e no momento a única solução que parece funcionar é um script de inicialização simples que assume o o segundo teclado é conectado antes que o usuário faça o login ou então o usuário deve executar manualmente esse script mais tarde.

O script testado para funcionar com teclados USB (aqui: link ) deve ser modificado para wireless teclados , o que pode ser algo como o abaixo.

Nota 1: Além de inserir o código de layout do teclado desejado, ele também pode exigir alguns testes e erros (por exemplo, inserir primeiro cada linha em uma janela de terminal), pois o autor é um "amador" (e quase iniciante de nível) "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 }' | cut -c 1-2'
    extkbd_id2='xinput -list | grep "Wireless.*keyboard" | awk -F'=' '{print }' | 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

Observação 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 dispositivo.

    
por Sadi 10.10.2017 / 22:43