¿Cómo hacer que Compose funcione en aplicaciones GTK y Qt?

15

Usé Gnome durante mucho tiempo, pero preferí el método de entrada vanilla X ( xim) sobre el comportamiento predeterminado de GTK. Acabo de establecer GTK_IM_MODULEy QT_IM_MODULEvariables de entorno para xim, y no tuve ningún problema con las configuraciones de configuración de múltiples diseños, Composeclaves, personalizadas ~/.XComposey misc:typotipografía.

El reciente Gnome 3.6 atornilló por completo la entrada del teclado al enviar un medio cocido y con errores ibus y forzándolo a los usuarios . Simplemente no podía hacer que el teclado funcionara tan bien como antes (incluso con ibusdeshabilitado), y tuve que abandonar a Gnome por completo.

Ahora uso un administrador de ventanas simple y configuro mi teclado con setxkbmap. Si bien el teclado funciona bien nuevamente, no pude hacer que la tecla Componer funcione en todas partes. Compose funciona en aplicaciones X11 simples ( xterm), pero no funciona en aplicaciones GTK2, ni GTK3, ni Qt.

Yo uso las versiones actuales de 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

y habilitar Composeclave como esta:

setxkbmap ... -option 'compose:menu'

y exportación GTK_IM_MODULE, QT_IM_MODULEvariables:

$ echo $GTK_IM_MODULE $QT_IM_MODULE 
xim xim

Compose la clave es reconocida correctamente por X11:

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

Funciona correctamente en xtermsecuencias de mi ~/.XComposeincluido. No funciona en aplicaciones GTK o Qt. Digamos que si entro Compose ', las aplicaciones hacen eco de 'inmediato, sin esperar la tercera clave en la secuencia.

Ahora supongo que algo ha cambiado en Xorg (porque Composetampoco funciona en aplicaciones Qt) o en GTK y Qt. *_IM_MODULELas variables no son suficientes ahora. ¿Qué más se requiere para que GTK y Qt modernos reconozcan ximy sus secuencias de composición?

PD: Hay una pregunta similar (y no respondida) sobre que la tecla Compose no funciona en GTK . A diferencia del autor de la pregunta, no tengo ibusinstalado.

sastanin
fuente

Respuestas:

7

Encontré una solución que funciona para aplicaciones GTK (pero no Qt). Uno necesita establecer

XMODIFIERS="@im=none"

dejar que X11 maneje las llaves muertas. Gracias a @PabloSaratxaga por su respuesta .

sastanin
fuente
2

Tuve un problema similar en openSUSE. ~/.XComposesería ignorado por las aplicaciones GTK +, por lo que mis propias secuencias de Compose no funcionaron en Firefox, Gimp y otras.

Descubrí que gtk-query-immodules-2.0enumeraba algunos métodos de entrada, pero no xim; entonces, independientemente de la GTK_IM_MODULEvariable,xim no estaba disponible. Instalar los paquetes gtk2-immodule-xim(y amigos) resolvió el problema.

Quizás esta observación sea útil para las personas que sufren la misma maldición.

lingüista
fuente
1

Esta es una forma de configuración persistente. Se describe, por ejemplo, aquí https://wiki.edubuntu.org/ComposeKey#line-66 . Configuré componer claves con ~ / .XCompose de esta manera. He comprobado esto tanto en ubuntu como en sistemas debian.

ASten
fuente
El problema es que incluso el método único ha dejado de funcionar. Las instrucciones para el cambio persistente son específicas de Debian / Ubuntu.
sastanin