Estou configurando o openbox no meu laptop executando o Linux Mint 13. Quero que minha tecla Caps Lock atue como uma tecla de controle adicional. Coloquei as configurações necessárias no meu ~/.Xmodmap
arquivo e verifiquei executando
xmodmap ~/.Xmodmap
Funciona corretamente.
No entanto, quando eu me conecto à minha sessão do openbox, essas alterações importantes não estão presentes. A execução do xmodmap
comando acima o faz funcionar novamente, mas quero que isso aconteça automaticamente na inicialização.
O interessante é que eu adicionei um zenity
comando de teste como segue ao meu ~/.config/openbox/autostart
arquivo
zenity --info --text=Hello
Isso produz uma pequena janela de diálogo e sai somente depois que a caixa de diálogo é fechada.
Agora, quando eu me conecto à minha sessão de caixa aberta, o Caps Lock atua como uma tecla Ctrl, até que a caixa de diálogo zenity seja fechada. Depois que essa caixa de diálogo é fechada, o Caps Lock retorna ao seu comportamento padrão.
Eu não encontrei nada sobre isso no google, então estou pedindo ajuda aqui. Vocês têm alguma idéia do que pode estar errado?
Atualizar:
Eu tenho tentado descobrir isso e, em meus experimentos, copiei meu /usr/bin/xmodmap
arquivo /usr/bin/xmodmap_
e o substitui /usr/bin/xmodmap
pelo seguinte script bash
#!/bin/bash
{
echo '-------'
date
echo xmodmap "$@"
} >> ~/xmodmap-calls
exec /usr/bin/xmodmap_ "$@"
Então, toda vez que qualquer script maldito no sistema é executado xmodmap
, eu o conheço.
Com isso, faço logon novamente e só encontro uma entrada no meu ~/xmodmap-calls
arquivo, que é a que está executando o meu ~/.Xmodmap
, o que é esperado. Então, achei que não xmodmap
é isso que está substituindo minhas alterações.
Em seguida, um pouco de pesquisa me apresentou o setxkbmap
comando, que aparentemente também pode fazer a mesma coisa. Também substituí o executável, semelhante ao xmodmap acima. E eu recebi o comando culpado!
setxkbmap -option terminate:ctrl_alt_bksp
Não tenho absolutamente nenhuma idéia do que isso faz, mas depois de executar xmodmap ~/.Xmodmap
(que aplicou minhas configurações corretamente), se eu executar o comando acima, minhas alterações serão redefinidas! Edit : Isso está ficando muito engraçado. Apenas um setxkbmap
comando sem argumentos, sobrescreve alegremente minhas alterações pelo xmodmap ~/.Xmodmap
comando.
Agora eu tenho duas coisas para descobrir, de onde isso está setxkbmap
sendo executado e por que e como consertar isso. Ainda estou investigando, mas poderia usar seriamente alguma ajuda :)
Atualização 2
Para o inferno com xmodmap
. Não consigo descobrir de onde setxkbmap
está sendo chamado, mas imaginei uma maneira de usar o setxkbmap
comando para fazer meu Caps Lock se comportar como Ctrl.
setxkbmap -option ctrl:nocaps
Antes de iniciar o openbox. Funciona brilhante. A tecla caps lock permanece atuando como uma tecla ctrl. xmodmap
nunca é executado.
Manterei essa pergunta aberta, para que alguém que saiba essas coisas possa fornecer algumas dicas. Além disso, para pessoas que enfrentam isso depois de mim :)
Atualização 3
Aqui está o conteúdo do meu .config/openbox/autostart
, conforme solicitado por pedrosaurio.
#!/bin/bash
# Set the wallpaper.
feh --bg-scale /wall.png
# Set default brightness.
xbacklight -time 1 '=40'
# Compositing.
xcompmgr &
# The panel.
tint2 &
# Start a terminal too.
roxterm &
Isso não tem nada a ver com o teclado, pelo que sei. Além disso, aqui está o script que inicia minha sessão: (Executar por lightdm)
#!/bin/bash
setxkbmap -option ctrl:nocaps
exec openbox-session
fonte
autostart
arquivo?Respostas:
Eu estava com um problema semelhante. Aconteceu que foi causado por ibus. Eu simplesmente o desinstalei porque não preciso de seus serviços.
Encontrei o culpado usando seu truque de substituir o setxkbmap por um script, no entanto, também adicionei
ps -AF --forest
para identificar o chamador do setxkbmap.fonte
Sem conhecer o script de inicialização automática, minha aposta é que você não está usando a sintaxe adequada, permitindo que seus comandos sejam executados em segundo plano usando oe comercial (
&
).Tente editar seu
.config/openbox/autostart
arquivo para que fique assim:Em caso de dúvida, dê uma olhada no wiki do openbox e veja como todos os exemplos têm
&
após cada entrada.http://openbox.org/wiki/Help:Autostart
fonte
xmodmap ~/.Xmodmap
nesse arquivo (sem um&
, não parecia necessário). Estou chamandoxmodmap
(e agorasetxkbmap
) no script que inicia minha sessão de caixa aberta. Antes de executarexec openbox-session
, eu executo osetxkbmap
comando.sleep 1
atraso paraxmodmap
aplicar suas alterações depois que todo o resto for carregado, embora funcione a maior parte do tempo, não me deixa muito confiante com a solução. Eu preferiria não fazer isso, se eu tiver alternativas.sleep
comando, no entanto,&
é necessário após cada entrada, caso contrário, todos os programas após a primeira entrada não serão executados.&
fará com que ele bloqueie. Eu usei esse comportamento com ozenity
comando para descobrir que minhasxmodmap
alterações estão sendo substituídas após aautostart
conclusão. Minha inicialização automática agora está crescendo em tamanho e a colará na pergunta em um momento. Mas não tem nada a ver com o teclado.xmodmap
são substituídas assim que o arquivo de inicialização automática é concluído.