Eu já vi muitas perguntas sobre como remapear uma chave, mas, de alguma forma, meu problema é que ela nunca remapea permanentemente.
Aqui está o meu ~/bootstrap-custom.sh
#!/bin/sh
# remaps Caps Lock to Ctrl
/usr/bin/setxkbmap -option "ctrl:nocaps"
Eu adicionei source ~/boostrap-custom.sh
aos meus aplicativos de inicialização.
Os mapeamentos funcionam bem.
Contudo:
- O mapeamento não carrega na inicialização ou é pelo menos substituído por algo executado após os aplicativos de inicialização.
- toda vez que eu conecto meu teclado, os mapeamentos parecem esquecidos.
Alguma maneira de tornar o mapeamento permanente, mas mantendo o mesmo método (xkbmap)?
Respostas:
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.
.xsession
e coloque-o em seu diretório pessoal.#!/bin/bash
/usr/bin/setxkbmap -option "ctrl:nocaps"
chmod 755 ~/.xsession
)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"):
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).fonte
➜ ~ ll .xsession
-rwxr-xr-x 1 edgar edgar 53 Jan 22 08:03 .xsession
➜ ~ cat .xsession
#!/bin/bash
/usr/bin/setxkbmap -option "ctrl:nocaps"
No entanto, o teclado Caps Lock ainda estava fazendo a mesma coisaVocê pode tentar colocar o código do shell no seu
.profile
arquivo, OU a versão mais complicada é que você usa o XKB. Aqui está uma rápida visão geral.Para uma visão geral completa, tente este artigo da wiki do arch .
fonte
Aparentemente, isso é um bug.
De https://askubuntu.com/questions/66096/how-to-set-up-xfce4-xkb-plugin-to-remember-settings-over-reboots
fonte
Edite /etc/rc.local e adicione seu caminho ao seu script. Verifique se o arquivo é executável e se possui o #! / Bin / bash na parte superior. Não reinicie o computador, desligue-o e ligue-o novamente. Isso deve funcionar.
fonte
setxkbmap
afeta a sessão X11 em que é executada. A página de manual ainda fornece o nome da ferramenta comosetxkbmap - set the keyboard using the X Keyboard Extension
. Como o /etc/rc.local não roda dentro de uma sessão X em qualquer distribuição Linux que eu possa imaginar, nada executado dentro do /etc/rc.local afetará um X11 em execução.