O Openbox substitui 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 tecla de controle adicional. Coloquei as configurações necessárias no meu ~/.Xmodmaparquivo 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 xmodmapcomando acima o faz funcionar novamente, mas quero que isso aconteça automaticamente na inicialização.

O interessante é que eu adicionei um zenitycomando de teste como segue ao meu ~/.config/openbox/autostartarquivo

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/xmodmaparquivo /usr/bin/xmodmap_e o substitui /usr/bin/xmodmappelo 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-callsarquivo, 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 setxkbmapcomando, 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 setxkbmapcomando sem argumentos, sobrescreve alegremente minhas alterações pelo xmodmap ~/.Xmodmapcomando.

Agora eu tenho duas coisas para descobrir, de onde isso está setxkbmapsendo 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 setxkbmapestá sendo chamado, mas imaginei uma maneira de usar o setxkbmapcomando 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. xmodmapnunca é 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
Shrikant Sharat
fonte
você provavelmente está usando algum tipo de configuração do teclado, por exemplo, escolher o layout do teclado ou algo semelhante que reverte as alterações aplicadas
Ulrich Dangel
O único outro lugar em que eu brinquei com a configuração do teclado é a janela de preferências de layout do teclado da GUI, onde alterei a tecla caps lock para se comportar como uma ctrl adicional. Isso funciona bem, na canela DE, meu caps lock funciona como um ctrl, mesmo após um novo login. Eu acho que essa configuração era apenas para canela, mas não tenho certeza.
Shrikant Sharat
como você está adicionando o comando no script de inicialização automática?
pedrosaurio
Você pode postar seu autostartarquivo?
23412 pedrosaurio

Respostas:

1

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 --forestpara identificar o chamador do setxkbmap.

gobenji
fonte
0

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/autostartarquivo 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 do openbox e veja como todos os exemplos têm &após cada entrada.

http://openbox.org/wiki/Help:Autostart

pedrosaurio
fonte
Meu arquivo de inicialização automática está vazio. Em um ponto que eu tinha xmodmap ~/.Xmodmapnesse arquivo (sem um &, não parecia necessário). Estou chamando xmodmap(e agora setxkbmap) no script que inicia minha sessão de caixa aberta. Antes de executar exec openbox-session, eu executo o setxkbmapcomando.
Shrikant Sharat
Além disso, adicionar um sleep 1atraso para xmodmapaplicar 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.
Shrikant Sharat
Você pode evitar obviamente todos os comentários e o sleepcomando, no entanto, &é necessário após cada entrada, caso contrário, todos os programas após a primeira entrada não serão executados.
31812 pedrosaurio
Sim, se for um aplicativo / processo de longa execução, não adicionar um &fará com que ele bloqueie. Eu usei esse comportamento com o zenitycomando para descobrir que minhas xmodmapalterações estão sendo substituídas após a autostart 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.
Shrikant Sharat
E, sem o comando sleep, as alterações feitas por xmodmapsão substituídas assim que o arquivo de inicialização automática é concluído.
Shrikant Sharat