Tarde da festa, mas isso me deixou louco também; e, teimoso como sou, desistir não era uma opção.
Basicamente isso é o que eu tentei (como meu usuário ou root, se necessário)
Apenas - ~ / .Xmodmap
- ~ / .xsession, ~ / .xsessionrc
- ~ / .gnomerc
- ~ / .xprofile
- ~ / .xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( arquivos de configuração, não tocou em )
(Na verdade, adicionar o comando xmodmap
a ~/.bashrc
funcionou, mas é necessário iniciar um terminal sempre após o login)
Alguns anos atrás (?), xkb
foi escolhido para lidar com mapeamento e configuração de chaves (interface com X), mas xmodmap
também pode solicitar alterações relacionadas a chave em X, após xkb
fazer seu trabalho durante a inicialização da sessão X.
O problema é quando essas configurações do xmodmap devem acontecer?
parece que os arquivos acima são processados cedo demais no processo, e X não estava pronto para aceitar mudanças no xmodmap, ou o xkb iria sobrescrevê-los.
Observação: eu adicionei alguns "rastreamento" para esses arquivos para garantir que eles estivessem sendo executados em algum momento!
Uma solução que parece funcionar
Eu não queria adicionar um arquivo .desktop
inicialmente (um simples script de uma linha tinha que ser o suficiente), mas isso funciona, então aqui está.
A solução vem de Como remapear ou trocar teclas de teclado especiais no Linux? "solução 1"
Basicamente, crie o arquivo ~/.config/autostart/my-xmodmap.desktop
e coloque nele:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
substitua me
pelo seu nome de usuário (note que eu não me incomodei em tentar ~/
ou $HOME
que podem funcionar igualmente bem no lugar de /home/me
, e o caminho completo do xmodmap provavelmente não é necessário. ..), e adicione o bit exec
chmod +x ~/.config/autostart/my-xmodmap.desktop
Os comandos xmodmap devem estar em um arquivo ~/.Xmodmap
neste caso (ou usar a opção -e
, ou escolher outro nome de arquivo!). Sair e voltar.
Observe que você pode criar o programa inicial a partir de "Aplicativos de inicialização".
Outra solução seria esquecer o xmodmap e aprender como configurar xkb
!
Editar (novamente)
Às vezes, talvez 25% dos logons, o xmodmap
ainda parece não estar funcionando - enquanto o comando é realmente executado (um rastreador prova isso). A única conclusão a que chego neste momento é que o processo xkb
é executado com atraso no processo de logon e pode terminar após a execução do xmodmap
. Parece uma condição de corrida ... Então, finalmente, eu mudei o arquivo de área de trabalho de início automático exec
line para
Exec=$HOME/bin/mystart &
(observe o &
)
mystart
é um script em um novo diretório bin
criado que contém
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
e
chmod u+x ~/bin/mystart
O script demora 5 segundos antes para executar o xmodmap e rastreia quando foi executado (no arquivo /tmp/xmodmap-has-run
).
Espero que isso seja tudo!