Isso pode ser apenas uma solução parcial (eu sinceramente não sei como ele reage ao desligamento / reconfiguração do teclado), mas como você já tem um script que faz o que você quer, isso pode estar perto o suficiente.
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 você ter efetuado login através de um gerenciador de exibição, que é a configuração normal para um ambiente gráfico atualmente. (Costumava ser que você normalmente logado em um shell e, em seguida, executou o comando startx
para iniciar o X; em caso afirmativo, você usou ~ / .xinitrc para o mesmo propósito.)
Podemos aproveitar isso para executar comandos virtualmente, independentemente do que o gerenciador de exibição (gdm, gdm3, kdm, ...) e ambiente de área de trabalho (GNOME, Xfce, KDE, ...) você está usando.
- Crie um arquivo chamado
.xsession
e coloque-o em seu diretório pessoal. - Adicione o seguinte a ele:
#!/bin/bash
e/usr/bin/setxkbmap -option "ctrl:nocaps"
- Salvar e defina o arquivo para o modo 755 (
chmod 755 ~/.xsession
) - Fazer logout e voltar ou reinicializar
Isso deve definir o mapeamento do seu teclado no login. Ele também deve executar tarde o suficiente para que o setxkbmap realmente funcione.
Se por algum motivo isso não funcionar, efetue login em um terminal de texto ( Ctrl + Alt + F2 para qualquer F2 em [F1..F6] deve ser seu amigo) e apague o arquivo emitindo o comando rm ~/.xsession
.
Para referência, aqui está meu ~ / .xsession, que com o modo 755 me coloca em uma sessão do Xfce4 (isso pode servir como um exemplo "conhecido"):
#!/bin/sh
xscreensaver &
exec xfce4-session
A diretiva exec
no final substitui o próprio script pelo comando especificado. Qualquer coisa que não saia mais ou menos imediatamente precisará ser usada em background, daí o &
. (Espero que o setxkbmap seja encerrado quase que imediatamente, portanto, não é necessário usar o segundo plano.)