Openbox sobrescreve a configuração do xmodmap

9

Estou configurando o openbox no meu laptop executando o Linux Mint 13. Quero que minha tecla Caps Lock atue como uma chave de controle adicional. Coloquei as configurações necessárias no meu arquivo ~/.Xmodmap e verifiquei executando

xmodmap ~/.Xmodmap

Funciona corretamente.

No entanto, quando relogino para minha sessão de caixa aberta, essas alterações de chave não estão presentes. Executar o comando xmodmap acima faz com que ele funcione novamente, mas quero que isso aconteça automaticamente na inicialização.

O que é interessante é que eu adicionei um comando zenity do teste como segue ao meu arquivo ~/.config/openbox/autostart

zenity --info --text=Hello

Isso produz uma pequena janela de diálogo e sai somente após o fechamento da caixa de diálogo.

Agora, quando eu relogino para a minha sessão de caixa aberta, o Caps Lock age como uma tecla Ctrl, até que a caixa de diálogo zenity seja fechada. Quando esse diálogo é fechado, o Caps Lock retorna ao seu comportamento padrão.

Eu não encontrei nada sobre isso com o Google, então estou pedindo ajuda aqui. Vocês têm alguma ideia sobre o que pode estar errado?

Atualização:

Eu tenho tentado descobrir isso e, em meus experimentos, copiei meu arquivo /usr/bin/xmodmap para /usr/bin/xmodmap_ e substituí o arquivo /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 executa xmodmap , eu fico sabendo.

Com isso, eu relogio e localizo apenas uma entrada no meu arquivo ~/xmodmap-calls , que é o que executa meu ~/.Xmodmap , o que é esperado. Então, percebi que não é um xmodmap que está sobrescrevendo minhas alterações.

Em seguida, um pouco de googling me apresentou o comando setxkbmap , que aparentemente também pode fazer a mesma coisa. Eu substituí esse executável também, semelhante ao xmodmap acima. E eu tenho o comando culpado!

setxkbmap -option terminate:ctrl_alt_bksp

Eu não tenho absolutamente nenhuma idéia do que isso faz, mas depois de executar xmodmap ~/.Xmodmap (que aplicava minhas configurações corretamente), se eu executar o comando acima, minhas alterações serão redefinidas! Editar : Isso está ficando muito engraçado. Apenas um comando setxkbmap sem nenhum argumento, felizmente substitui minhas alterações pelo comando xmodmap ~/.Xmodmap .

Agora eu tenho duas coisas para descobrir, onde está esse setxkbmap sendo executado em & por que e como consertar isso? Eu ainda sou investigação, mas poderia usar seriamente alguma ajuda:)

Atualização 2

Para o inferno com xmodmap . Não consigo descobrir de onde o setxkbmap está sendo chamado, mas imaginei uma maneira de usar o comando setxkbmap para fazer meu Caps Lock se comportar como Ctrl.

setxkbmap -option ctrl:nocaps

Pouco antes de iniciar o openbox. Funciona brilhante. A tecla caps lock permanece atuando como uma tecla ctrl. xmodmap nunca é executado.

Vou manter esta questão aberta para que alguém que conheça essas coisas possa fornecer algumas dicas. Além disso, para as pessoas que enfrentam isso depois de mim:)

Atualização 3

Aqui está o conteúdo do meu .config/openbox/autostart , conforme solicitado pelo 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, tanto quanto eu posso dizer. Além disso, aqui está o script que inicia minha sessão: (Run by lightdm)

#!/bin/bash

setxkbmap -option ctrl:nocaps

exec openbox-session
    
por Shrikant Sharat 21.07.2012 / 20:23

2 respostas

1

Eu estava passando por um problema semelhante. Acontece que foi causado pelo ibus. Eu simplesmente o desinstalei porque não preciso de seus serviços.

Eu encontrei o culpado usando o truque de substituir o setxkbmap por um script, mas também adicionei ps -AF --forest para identificar o chamador do setxkbmap.

    
por 25.06.2014 / 23:53
0

Sem saber seu script de início automático, minha aposta é que você não está usando a sintaxe adequada, deixando seus comandos executados em segundo plano usando oe comercial ( & ).

Tente editar seu arquivo .config/openbox/autostart para que fique assim:

# Run the system-wide support stuff
#. $GLOBALAUTOSTART
# Programs to launch at startup
# Programs that will run after Openbox has started
(sleep 1 && xmodmap ~/.Xmodmap ) &

Em caso de dúvida, dê uma olhada no wiki openbox e veja como todos os exemplos têm & após cada entrada.

link

    
por 23.07.2012 / 13:03