Após uma pequena pesquisa, encontrei uma solução, embora ainda esteja aberta a outras respostas (provavelmente melhores).
Aqui está um script de inicialização (que pode ser adicionado a Startup Applications ), que definirá a variável usbkbd_layout inserida pelo usuário usbkbd dispositivo id s encontrado no xinput -list :
#!/bin/bash
usbkbd='xinput -list | grep -c "USB Keyboard"'
if [[ "$usbkbd" -gt 0 ]]
then
usbkbd_ids='xinput -list | grep "USB Keyboard" | awk -F'=' '{print $2}' | cut -c 1-2'
usbkbd_layout="tr(f)"
for ID in $usbkbd_ids
do
setxkbmap -device "${ID}" -layout "${usbkbd_layout}"
done
fi
exit 0
Esse script é bastante útil (e mais estável) para cenários em que o usuário começa a usar o laptop em uma configuração de desktop (com teclado, mouse e monitor externos, etc.) e também pode ser executado manualmente sempre que o teclado USB externo está conectado ...
=============================================== ===========================
A MELHOR (quase perfeita) SOLUÇÃO - encontrada graças a MinimusHeximus e os respectivos contribuintes ao discussão ele mencionou em seu comentário abaixo:
Agora posso apenas plug-in meu teclado USB e ter seu layout de teclado diferente (TR-F) aplicado enquanto ainda mantém o layout de teclado padrão (TR-Q) no meu laptop!
Aqui estão os arquivos e seus conteúdos que tornam isso possível:
/etc/udev/rules.d/00-usb-keyboard.rules
ATTRS{idVendor}=="09da", ATTRS{idProduct}=="0260", OWNER="sadi"
ACTION=="add", RUN+="/home/sadi/.bin/usb-keyboard-in_udev"
ACTION=="remove", RUN+="/home/sadi/.bin/usb-keyboard-out_udev"
/home/sadi/.bin/usb-keyboard-in_udev
#!/bin/bash
/home/sadi/.bin/usb-keyboard-in &
/home/sadi/.bin/usb-keyboard-in
#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/sadi/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
usbkbd_id='xinput -list | grep "USB Keyboard" | awk -F'=' '{print $2}' | cut -c 1-2 | head -1'
usbkbd_layout="tr(f)"
if [ "${usbkbd_id}" ]; then
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
sleep 2
setxkbmap -device "${usbkbd_id}" -layout "${usbkbd_layout}"
fi
/home/sadi/.bin/usb-keyboard-out_udev
#!/bin/bash
/home/sadi/.bin/usb-keyboard-out &
/home/sadi/.bin/usb-keyboard-out
#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/sadi/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
gsettings set org.gnome.settings-daemon.plugins.keyboard active true
Notas:
-
É claro que todos os quatro arquivos em sua pasta "bin" devem ter permissões necessárias (legíveis e executáveis) que talvez
implementado por exemplo com um comando Terminal como
chmod - 755 /home/sadi/.bin/usb-keyboard-*
- Às vezes, depois que o teclado USB é conectado, ele ainda usa o mesmo layout de teclado (padrão) e alterna para o layout especificado na segunda tentativa (talvez exigindo um pouco mais de tempo de suspensão em algum lugar)
- O layout específico do teclado USB não é efetivo na tela de login (quando você faz o logout).
- Se você usar uma partição separada para / home , talvez seja melhor colocar os quatro scripts em algum lugar na partição raiz, por exemplo, / usr / local / bin e modifique o conteúdo de todos os arquivos correspondentes, pois às vezes o udev pode procurar por esses arquivos antes que sua partição / home seja montada e cause problemas.
PARA ADAPTAR ESTA CONFIGURAÇÃO AOS REQUISITOS DIFERENTES:
-
O fornecedor do teclado USB e os IDs do produto devem ser alterados de acordo com a saída do comando
- OWNER e todos os nomes de diretório de usuários devem ser alterados de "sadi" para outro nome
- O usbkbd_id pode exigir um pequeno ajuste para capturar o ID do dispositivo correto (por exemplo, a saída dos comandos
xinput -list | grep "USB Keyboard"
me fornece duas linhas;↳ USB Keyboard id=14 [slave keyboard (3)]
e↳ USB Keyboard id=16 [slave keyboard (3)]
; que são filtradas porawk
usando "="como delimitador de campo e capturando a segunda parte; em seguida, cortando apenas os dois primeiros dígitos e, em seguida, usando apenas o valor na primeira linha) - O valor para usbkbd_layout pode ser qualquer outra opção válida
lsusb
(Por exemplo, minha lsusb
output tem isso para meu teclado USB: Bus 001 Device 006: ID 09da:0260 A4 Tech Co., Ltd
)