Teclas inativas (compor) não funcionam em aplicativos GTK desde a atualização

2

Estou executando o Kubuntu com o KDE como meu principal ambiente de área de trabalho.

Há algum tempo atrás eu configurei chaves mortas para que eu pudesse digitar chinês pinyin e outras letras acentuadas e caracteres especiais.

Como observação, uso o IBUS porque parece ser mais fácil configurar meus IMEs de caracteres chineses com.

Até a atualização, as teclas "dead / compose" funcionavam bem em todos os aplicativos.

Agora, eles trabalham em aplicativos QT, mas não em GTKs (como este navegador). Isso é lamentável, já que é onde faço a maior parte da minha digitação. Minha solução agora é digitar os sotaques no launcher do KDE e copiar passado (Alt + F2, digite usando teclas inativas, Ctrl + X, Esc, Ctrl + V), o que é meio chato.

Não tenho certeza de quais informações são úteis para depurar isso, já faz um tempo desde que eu configurei tudo isso.

Curiosamente, a variável de ambiente $ QT_IM_MODULE não tem valor. $ GTK_IM_MODULE tem xim.

Eu tenho o ibus-gtk3 instalado, posso postar qualquer informação que possa ser útil no diagnóstico.

Eu colei abaixo o script de configuração que está em vários lugares (por exemplo, en_US, /etc/X11/xinit/xinput.d/ibus, etc.). Não tenho certeza qual deles tem prioridade, e não tenho certeza se algum está sendo executado, já que QT_IM_MODULE não tem valor quando eu o echo, enquanto todos eles indicam que ele deve ser "xim" por padrão se não for ibus.

Eu devo mencionar também que as bibliotecas (im-ibus.so, etc) mencionadas abaixo eu não tenho, nem posso encontrar como obtê-las ou onde elas devem ligá-las. De fato, meus diretórios gtk-3.0.0 / e qt4 / nem sequer possuem um diretório inputmethod / ou plugin /. Isso pode ser parte do problema, mas, novamente, estava funcionando antes da atualização, então não sei.

# start IBus
# vim: set sts=4 expandtab:

# start IBus daemon
#/usr/bin/ibus-daemon --daemonize --xim
XIM=ibus
XIM_PROGRAM=/usr/bin/ibus-daemon
XIM_ARGS="--xim"

# set variables for the plain XIM
XMODIFIERS=@im=ibus

GTK_IM_MODULE=xim
# use immodule only when available for both GTK 2.0 and 3.0
IM_CONFIG_MARKER2=0
for IM_CONFIG_MARKER in /usr/lib/*/gtk-2.0/*/immodules/im-ibus.so \
                        /usr/lib/gtk-2.0/*/immodules/im-ibus.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        IM_CONFIG_MARKER2=1
        break
    fi
done

IM_CONFIG_MARKER3=0
for IM_CONFIG_MARKER in /usr/lib/*/gtk-3.0/*/immodules/im-ibus.so \
                        /usr/lib/gtk-3.0/*/immodules/im-ibus.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        IM_CONFIG_MARKER3=1
        break
    fi
done
if [ $IM_CONFIG_MARKER2 = 1 ] && [ $IM_CONFIG_MARKER3 = 1 ] ; then
    GTK_IM_MODULE=ibus
fi

QT_IM_MODULE=xim
# use immodule when available for Qt4 (Qt3 has been long dead)
for IM_CONFIG_MARKER in /usr/lib/*/qt4/plugins/inputmethods/libqtim-ibus.so\
                        /usr/lib/qt4/plugins/inputmethods/libqtim-ibus.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        QT_IM_MODULE=ibus
        break
    fi
done

CLUTTER_IM_MODULE=xim
# use immodule when available for clutter
for IM_CONFIG_MARKER in /usr/lib/*/clutter-imcontext/immodules/im-ibus.so \
                        /usr/lib/clutter-imcontext/immodules/im-ibus.so; do
    if [ -e $IM_CONFIG_MARKER ]; then
        CLUTTER_IM_MODULE=ibus
        break
    fi
done

DEPENDS="ibus, ibus-gtk|ibus-qt4|ibus-clutter"
    
por hsiu 28.05.2012 / 21:38

3 respostas

2

Isso pode estar relacionado - ou não. Desde vários meses, a tecla de composição para de funcionar, depois de um tempo. Eu defini um .Xmodmap que define as chaves, e depois de executar o xmodmap ele funciona, pelo menos para terminar um documento ou algo assim. Mas depois de algumas horas (?) Simplesmente desaparece.

Sem logout, sem aplicativos de abertura. Eu não fui capaz de identificar qualquer evento que poderia causar isso. Talvez, talvez seja relacionado à ação do teclado. Eu troquei de teclado e parece acontecer menos que antes.

    
por 21.08.2012 / 14:36
2

Se você usar um módulo de entrada no nível X11 (por exemplo, um definido por XMODIFIERS=… ), então o X11 não manipula chaves mortas nem compõe mais, cabe ao módulo de entrada fazê-lo.

O que você precisaria seria uma maneira de alternar entre XMODIFIERS="@im=ibus" e XMODIFIERS="@im=none" (para permitir que o X11 faça o trabalho). Talvez já exista uma configuração do Gtk para fazer isso e fazer com que apareça no menu do botão direito dos métodos de entrada; se não, seria uma boa sugestão para a equipe do Gtk / Gnome:)

    
por 22.02.2013 / 15:03
1

O modelo de entrada X é muito complexo (alguns até dizem que apenas 5 pessoas na Terra o compreendem completamente :) Eu não sou um deles entre)

a) Então, no começo, você tinha apenas uma função X11 que lia o teclado, um símbolo de uma tecla.

b) Mas algumas pessoas queriam chaves mortas, então outra função permite, várias chaves, uma string. Isso também precisa de um ou vários arquivos para descrever quais sequências de chaves produzem quais sequências de caracteres.

c) Depois, há também métodos de entrada mais complexos, que interagem com outro programa semelhante a um servidor. Isso geralmente é feito para digitar em japonês ou chinês.

Para b) ec) para trabalhar você precisa de um XMODIFICADORES variável corretamente definido "@ im = none" para b) (para c) o valor de @ im = xxxxx depende do programa 3d usado); e configuração correta de tudo, e que o aplicativo usa as funções de entrada certas (alguns programas X11 ainda estão por aí que usam apenas a função raw em a), sem sorte então: ()

d) Então, como tudo isso era muito complexo, e particularmente c) tinha uma interação muito feia; Toolkits modernos como Qt e Gtk, começaram a fornecer seu próprio suporte de nível de entrada, ignorando b) / c)

Portanto, você tem a opção de usar o método de entrada do kit de ferramentas (mas será diferente entre Gtk / Qt / other); ou use b) / c) (b ou c depende principalmente do idioma que você deseja digitar). Mas para usar b / c, você precisa dizer ao seu kit de ferramentas de alto nível para não fazer isso sozinho, mas deixar o X11 fazer isso. No Gtk existe uma entrada chamada "entrada do servidor XIM" ou algo parecido; ao escolhê-lo, você usa o método b / c.

O Qt deve ter algo parecido. Com o KDE3 (Qt3) tendo uma variável de shell QT_IM_MODULE=xim foi suficiente. Agora, é possível que uma configuração dinâmica (por exemplo, através da GUI e do dbus) tenha prioridade sobre a variável shell.

    
por 29.05.2013 / 16:21