Como fazer o Compose funcionar em aplicativos GTK e Qt?

15

Usei o Gnome por um longo tempo, mas preferi o método de entrada vanilla X ( xim) sobre o comportamento padrão do GTK. Eu apenas definir GTK_IM_MODULEe QT_IM_MODULEvariáveis de ambiente para xim, e não tinha nenhum problema com a configuração de múltiplas layout, Compose-chave, personalizados ~/.XComposee misc:typoextensões tipografia.

O Gnome 3.6 recente estragou completamente a entrada do teclado enviando um bocado e meio cozido ibus e forçando-o sobre os usuários . Eu simplesmente não conseguia fazer o teclado funcionar tão bem quanto antes (mesmo com ibusdesativado) e tive que abandonar o Gnome completamente.

Agora eu uso um gerenciador de janelas simples e configuro meu teclado com setxkbmap. Enquanto o teclado funciona bem novamente, não consegui colocar a tecla de composição em qualquer lugar. A composição funciona em aplicativos X11 simples ( xterm), mas não funciona nos aplicativos GTK2, GTK3 ou Qt.

Eu uso as versões atuais do Archlinux:

xorg-xinput 1.6.0
xorg-server 1.13.1
xf86-input-keyboard 1.6.2
gtk2 2.24.14
gtk3 3.6.4
qt 4.8.4

e habilite a Composechave assim:

setxkbmap ... -option 'compose:menu'

e exportação GTK_IM_MODULE, QT_IM_MODULEvariáveis:

$ echo $GTK_IM_MODULE $QT_IM_MODULE 
xim xim

Compose chave é reconhecida corretamente pelo X11:

$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
135 Multi_key

Funciona corretamente xterm, seqüências do meu ~/.XComposeincluído. Não funciona em aplicativos GTK ou Qt. Digamos que, se eu entrar Compose ', os aplicativos ecoarão 'imediatamente, sem aguardar a terceira tecla na sequência.

Agora, suponho que algo tenha mudado no Xorg (porque Composetambém não funciona nos aplicativos Qt) ou no GTK e Qt. *_IM_MODULEvariáveis ​​não são suficientes agora. O que mais é necessário para fazer o GTK e Qt moderno reconhecerem xime suas seqüências de composição?

PS: Existe uma pergunta semelhante (e sem resposta) sobre a chave Compose que não funciona no GTK . Ao contrário do solicitante, eu não tenho ibusinstalado.

sastanina
fonte

Respostas:

7

Foi encontrada uma solução que funciona para aplicativos GTK (mas não Qt). É preciso definir

XMODIFIERS="@im=none"

para deixar o X11 lidar com chaves mortas. Obrigado a @PabloSaratxaga por sua resposta .

sastanina
fonte
2

Eu tive um problema semelhante no openSUSE. ~/.XComposeseria ignorado pelos aplicativos GTK +, portanto, minhas próprias seqüências de composição não funcionavam no Firefox, Gimp e outras.

Eu descobri que gtk-query-immodules-2.0listava alguns métodos de entrada, mas não xim; portanto, independentemente da GTK_IM_MODULEvariável, ximnão estava disponível. A instalação dos pacotes gtk2-immodule-xim(e amigos) resolveu o problema.

Talvez esse comentário seja útil para pessoas que sofrem da mesma maldição.

linguista
fonte
1

Esta é uma maneira de configuração persistente. É descrito, por exemplo, aqui https://wiki.edubuntu.org/ComposeKey#line-66 . Eu configurei as teclas de composição com ~ / .XCompose dessa maneira. Eu verifiquei isso nos sistemas ubuntu e debian.

ASten
fonte
O problema é que mesmo o método único parou de funcionar. As instruções para mudanças persistentes são específicas do Debian / Ubuntu.
sastanin