Quero remapear o caps lock para escapar no X11 (ou seja, pressionar o botão físico do caps lock será interpretado como esc pelos aplicativos e o comportamento do esc não será alterado). A solução deve sobreviver a um restart X . xmodmap e setxkbmap são soluções aceitáveis (assim como programas similares). Não quero lidar com uma GUI, pois quero que a solução seja portátil e faça parte dos meus arquivos de ponto. Se estiver faltando uma solução melhor / mais fácil / mais óbvia, informe-me, embora observe que não estou usando um DE (testando o i3wm).
Até agora, tentei usar xmodmap e setxkbmap com pouco sucesso.
Aqui está minha tentativa de usar o xmodmap:
# ~/.xinitrc
xmodmap ~/.xmodmap
e
# ~/.xmodmap
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
Correr a $ xmodmap ~/.xmodmap
partir da linha de comando funciona e faz o que eu quero. O problema é que isso é redefinido toda vez que x é reiniciado. É aí que eu espero que o xinitrc entre - ele não deveria carregar toda vez que x inicia e executa o comando xmodmap? Se o comando funcionar, por que não faz nada quando lido de um arquivo?
Eu tentei algumas coisas com setxkbmap, nenhuma das quais funcionou. As duas tentativas abaixo estavam no arquivo em horários separados.
# ~/.xinitrc
setxkbmap -option caps:esc # attempt 1
setxkbmap -option esc:nocaps # attempt 2
Nenhum dos comandos fez nada perceptível na linha de comando, portanto, estou assumindo que entendi errado. Gosto da ideia desta solução, porque é uma linha e não requer nada em outro arquivo. Se ao menos funcionasse.
.Xinitrc é o arquivo errado para ser usado? Eu sei que o startx está carregando de ~ / .xinitrc.
Solicito que as soluções possíveis contenham o (s) arquivo (s) inteiro (s), não apenas uma linha (se mais de uma for necessária no arquivo), para não atrapalhar nenhuma etapa intermediária. Por exemplo, se eu precisar de algo em .xinitrc e algo em .xcapsrebind, mostre os arquivos e todo o conteúdo necessário (também posso receber instruções para anexar algo ao final, mas se um & ou similar for necessário, por favor, diga).
.xinitrc
:setxkbmap -option caps:escape
xmodmap
em.xinitrc
deve funcionar. É o que eu faço. Talvez mapeie algo incomum, para garantir que ele esteja em execução quando você iniciar o x? Além disso, qual gerenciador de janelas / ambiente de área de trabalho você usa? O KDE periodicamente "corrige" o mapeamento do meu teclado sem que eu precise. Talvez verifique as configurações da área de trabalho para garantir que não haja nada correndoxmodmap
pelas suas costas.~/.xinitrc
não está fugindo. Estou usando o i3wm e não o DE no momento, embora o mesmo acontecesse no Pantheon quando tentei. Até onde eu sei, o i3 não mexe com o xinitrc ou carrega o seu próprio (mas eu sou um noob, então o que eu sei?).Option "XkbOptions" "caps:escape"
em umX
arquivo de configuração do teclado, por exemplo/etc/X11/xorg.conf.d/10-keyboard.conf
Respostas:
EDIT: Como um usuário útil apontou, minha solução inicial não sobreviverá a uma atualização. Sua solução nos comentários deve funcionar. Se você preferir trocar Caps Lock e Escape, recomendo adicionar os seguintes comandos da sua configuração .xinitrc ou i3:
.xinitrc:
arquivo de configuração do i3 (normalmente localizado em .config / i3 / config ou em .i3 / config)
Sei que essa pergunta é bastante antiga, mas achei que poderia acrescentar uma resposta para aqueles que ainda tentam descobrir isso.
Depois de ter problemas semelhantes com alguns DEs não carregando
~/.xinitrc
, evitei o xmodmap por completo, fui/usr/share/X11/xkb/symbols
e modifiquei o mapeamento de chave => diretamente.Para fazer isso, editei o arquivo de configuração do meu teclado localizado em
/usr/share/X11/xkb/symbols
. Para a maioria dos teclados, esse deve ser opc
arquivo.Depois de abrir o arquivo, alternei manualmente entre Escape e Caps_Lock para as respectivas teclas, o resultado é mostrado abaixo). Como isso afeta a forma como o X mapeia o hardware para o símbolo-chave, ele deve funcionar independentemente de você estar no GNOME ou i3 ou algo assim.
Um trecho do meu arquivo resultante é o seguinte:
Isso funcionou como um encanto para mim.
Ao pesquisar os arquivos relacionados, encontrei menções repetidas e implementações parciais de algum tipo de sinalizador usado para alternar certas teclas, como trocar Escape e Caps Lock. Suponho que é isso que a Ferramenta Gnome Tweak e o setxkbmap usam; no entanto, não consegui descobrir como manter essas sinalizações no gerenciador de janelas i3. A solução acima deve funcionar bem.
Espero que isso resolva o problema!
fonte
exec --no-startup-id setxkbmap -layout whatever -variant whatever -option caps:escape
...xkb/symbols/pc
arquivo será substituído na próxima vezxkeyboard-config
ouxkb-data
pacotes são atualizados.Duas possibilidades:
1)
.xinitrc
não está sendo executado - é usado pelo xinit, startx e alguns outros métodos para iniciar sessões X, mas não é universalmente suportado - você pode estar usando um gerenciador de exibição que não o executa. Adicionar algo ao .xinitrc, comotouch /tmp/xinitrc-was-run
pode ajudar a determinar se é esse o caso.2) O Xorg redefine automaticamente as configurações padrão quando nenhum cliente está conectado - se o .xinitrc terminar antes que o gerenciador de janelas ou qualquer outra coisa comece a ser executada, as alterações xmodmap ou setxkbmap serão perdidas.
Se já houver uma opção XKB definida que você deseja usar, em vez de executar programas para alterar a configuração toda vez que o Xorg for iniciado, basta dizer ao Xorg para iniciar as configurações corretas. Por exemplo, para ativar as teclas Ctrl-Alt-Backspace para matar meu Xserver, instalei um arquivo chamado
/etc/X11/xorg.conf.d/90-zap.conf
que contém:Você pode ler mais sobre isso nos documentos X.Org em https://www.x.org/releases/X11R7.7/doc/xorg-docs/input/XKB-Config.html .
fonte