Remapear permanentemente uma chave para outro xubuntu

2

Eu tenho visto muitas perguntas sobre como remapear uma chave, mas de alguma forma, meu problema é que ela nunca faz o remapeamento permanentemente.

Aqui está 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.

No entanto:

  • O mapeamento não é carregado na inicialização ou é pelo menos substituído por algo que é executado após os aplicativos de inicialização.
  • toda vez que eu conecto meu teclado, os mapeamentos parecem esquecidos.

Qualquer forma de tornar o mapeamento permanente, mas mantendo o mesmo método (xkbmap)?

    
por edi9999 08.01.2015 / 16:49

4 respostas

1

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.

  1. Crie um arquivo chamado .xsession e coloque-o em seu diretório pessoal.
  2. Adicione o seguinte a ele:
    #!/bin/bash e /usr/bin/setxkbmap -option "ctrl:nocaps"
  3. Salvar e defina o arquivo para o modo 755 ( chmod 755 ~/.xsession )
  4. 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.)

    
por 21.01.2015 / 18:53
0

Você pode tentar colocar o código do shell no seu arquivo .profile OU a versão mais complicada é que você usa o XKB. Aqui é uma visão geral rápida.

Para uma visão geral completa, tente este artigo do wiki do Arch .

    
por 18.01.2015 / 17:21
0

Aparentemente isso é um bug.

"I use xfce in arch linux and what I do is edit the ~/.config/xfce4/panel/xkb-plugin-##.rc and add a new line or something and it works for some sessions. Another temporary fix may be what #31 suggests.

  1. Set the desired options in the plugin
  2. Copy the ~/.config/xfce4/panel/xkb-plugin-##.rc to some other file e.g. ~/.config/xfce4/panel/goodxkb.rc
  3. Add this command to a startup job:

    sh -c "cp ~/.config/xfce4/panel/goodxkb.rc ~/.config/xfce4/panel/xkb-plugin-##.rc && pkill xkb" (change the ## to your number)

The pkill part is crucial to reload the plugin and its config."

De link

    
por 18.01.2015 / 19:19
-1

Edite o /etc/rc.local e adicione o caminho do seu script. Certifique-se de que é executável e tem o #! / Bin / bash no topo. Não reinicie o computador e desligue-o novamente. Isso deve funcionar.

    
por 21.01.2015 / 15:14