Remapear permanentemente uma chave para outro xubuntu

2

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.shaos 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)?

edi9999
fonte
Mantenha o seu representante, a resposta é mais em UNIX e Linux
FOOSH
1
Você pode não querer o representante, mas tenho certeza de que não há como o edi9999 recuperá-lo.
Daniel H
@Foosh que não é toda a resposta à minha pergunta, o script será substituído na inicialização também
edi9999
@DanielH está certo, as recompensas não são reembolsáveis. Depois de terminar de definir a recompensa, não há como recuperar esse representante, mesmo que não resulte em nenhuma resposta.
um CVn 21/01
Ou, no caso de uma pergunta que eu abri, fiz mais pesquisas na semana restante e respondi à pergunta de uma maneira que ganharia minha recompensa se alguém a respondesse. Pena que não posso reivindicar minha própria recompensa.
Daniel H

Respostas:

1

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 startxpara 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.

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

um CVn
fonte
Obrigado por responder. Infelizmente isso não deu certo: aqui está meus resultados: ➜ ~ 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 coisa
edi9999
Ok, parece funcionar agora, tive um erro nos meus erros .xsession que provavelmente estavam causando a execução do .xsession. Funciona agora. Muito obrigado
edi9999
0

Você pode tentar colocar o código do shell no seu .profilearquivo, 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 .

NefariousOctopus
fonte
Colocar o shell script em .profile não muda nada (ainda não está funcionando após uma reinicialização). Eu já estou usando xkb, então eu não entendo por que você diz isso
edi9999
0

Aparentemente, isso é um bug.

"Eu uso o xfce no arch linux e o que faço é editar o ~ / .config / xfce4 / panel / xkb-plugin - ##. Rc e adicionar uma nova linha ou algo assim, e funciona em algumas sessões. Outra correção temporária pode ser o que # 31 sugere.

  1. Defina as opções desejadas no plug-in
  2. Copie o ~ / .config / xfce4 / panel / xkb-plugin - ##. Rc para outro arquivo, por exemplo, ~ / .config / xfce4 / panel / goodxkb.rc
  3. Adicione este comando a um trabalho de inicialização:

    sh -c "cp ~ / .config / xfce4 / panel / goodxkb.rc ~ / .config / xfce4 / panel / xkb-plugin - ##. rc && pkill xkb" (altere o ## para o seu número)

A parte do pkill é crucial para recarregar o plug-in e sua configuração. "

De https://askubuntu.com/questions/66096/how-to-set-up-xfce4-xkb-plugin-to-remember-settings-over-reboots

Meyekem
fonte
Eu não acho que eles tenham muito em comum com a minha pergunta. A resposta para sua pergunta é quando você usa as configurações do teclado do xubuntu para alterar o layout do teclado (por exemplo, EN, US, FR, ...). Essas opções não podem ser definidas nas configurações. Então eu não vejo como isso poderia ajudar
edi9999
-1

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.

especialista em raiz
fonte
Desculpe, isso também não funciona.
edi9999
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.
root-expert
setxkbmapafeta a sessão X11 em que é executada. A página de manual ainda fornece o nome da ferramenta como setxkbmap - 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.
um CVn 21/01