Talvez adicionar uma regra udev para executar o mesmo comando quando os comandos do teclado puderem resolver o problema.
-
Primeiro, conecte seu teclado externo e execute
lsusb
para encontrar o ID do hardware. Seria algo parecido comBus 002 Device 002: ID 04f2:0402 Chicony Electronics Co., Ltd Genius LuxeMate i200 Keyboar
. O id é 04f2: 0402 . -
Em seguida, adicionamos uma regra UDEV. Para editar o arquivo, faça
sudo nano /etc/udev/rules.d/00-usb-keyboards.rules
, preencha o arquivo de texto com algo comoACTION=="add", ATTRS{idVendor}=="YOUR_VENDOR(04f2 for me)", ATTRS{idProduct}=="YOUR_PRODUCT(0402 for me)", RUN+="/usr/local/bin/kbd_udev", OWNER="USERNAME"
Observe que você deve alterar o campo USERNAME . E com isso, informamos ao udev para executar o script sempre que o dispositivo com o fornecedor correspondente e a ID do produto estiver conectado.
-
Agora chegamos ao arquivo de script
/usr/local/bin/kbd_udev
, dosudo nano /usr/local/bin/kbd_udev
e preenchemos com o script abaixo#!/bin/bash export DISPLAY=:0 su YOURUSERNAME -c "setxkbmap -layout us -variant altgr-intl -option '' -option caps:escape -option altwin:swap_alt_win lv3:rwin_switch" &> /tmp/kbd_temp
Novamente, lembre-se de alterar YOURUSERNAME com seu nome de usuário.
-
Depois de escrever o script, você precisa torná-lo executável. Para fazer isso ..
sudo chmod 755 /usr/local/bin/kbd_udev
-
Finalmente, diga ao udev para recarregar suas regras, execute
udevadm control --reload-rules
-
Opcional, mas você pode testar para ver se o comando funcionou, procurando no diretório
/tmp/
. Docat /tmp/kbd_temp
, se houver algum erro, você poderá vê-lo.