Isso pode ser apenas uma solução parcial (honestamente, não sei como ele reage à desconexão / religação do teclado), mas como você já possui um script que faz o que deseja, isso pode ser bem próximo.
Na inicialização, o X11 executa vários programas especiais, se estiverem presentes no sistema. Para nossos propósitos, o mais interessante é provavelmente ~ / .xsession , que é executado após o logon em um gerenciador de exibição, que é a configuração normal para um ambiente gráfico atualmente. (Costumava-se fazer login normalmente em um shell e, em seguida, executar o comando startx
para iniciar o X; nesse caso, você usava ~ / .xinitrc para a mesma finalidade.)
Podemos aproveitar isso para executar comandos virtualmente, independentemente do gerenciador de exibição (gdm, gdm3, kdm, ...) e ambiente de desktop (GNOME, Xfce, KDE, ...) que você está usando.
- Crie um arquivo nomeado
.xsession
e coloque-o em seu diretório pessoal.
- Adicione o seguinte a ele:
#!/bin/bash
/usr/bin/setxkbmap -option "ctrl:nocaps"
- Salvar e defina o arquivo no modo 755 (
chmod 755 ~/.xsession
)
- Efetue logout e logon novamente ou reinicie
Isso deve definir o mapeamento do teclado no login. Também deve ser executado com atraso suficiente para que o setxkbmap realmente funcione.
Se por qualquer razão isso não funcionar, faça o login para um terminal de texto ( Ctrl+ Alt+ F2para qualquer F2 em [F1..F6] deve ser seu amigo) e apagar o arquivo usando o comando rm ~/.xsession
.
Para referência, aqui está minha ~ / .xsession, que no modo 755 me coloca em uma sessão do Xfce4 (isso pode servir como um exemplo de "bem conhecido"):
#!/bin/sh
xscreensaver &
exec xfce4-session
A exec
diretiva no final substitui o próprio script pelo comando fornecido. Qualquer coisa que não saia mais ou menos imediatamente precisará ser embasada, daí o &
. (Espero que o setxkbmap saia quase imediatamente, portanto, não é necessário ter nenhum plano de fundo).