Wie funktioniert Compose in GTK- und Qt-Apps?

15

Ich habe Gnome für eine lange Zeit benutzt, aber die Vanilla X-Eingabemethode ( xim) dem Standard-GTK-Verhalten vorgezogen . Ich habe gerade festgelegt GTK_IM_MODULEund QT_IM_MODULEUmgebungsvariablen xim, und habe kein Problem mit mehrere Layout Konfiguration, ComposeSchlüssel, kundenspezifische ~/.XComposeund misc:typoTypographie - Erweiterungen.

Die neueste Version von Gnome 3.6 hat die Tastatureingabe komplett verschraubt, indem ein halbgebackener und fehlerhafter Computer ausgeliefert ibus und den Benutzern aufgezwungen wurde . Ich konnte die Tastatur einfach nicht mehr so ​​gut zum Laufen bringen (auch nicht mit ibusdeaktivierten) und musste Gnome komplett verlassen.

Jetzt benutze ich einen einfachen Fenstermanager und konfiguriere meine Tastatur mit setxkbmap. Während die Tastatur wieder gut funktioniert, konnte ich die Compose-Taste nicht überall zum Laufen bringen. Compose funktioniert in einfachen X11-Apps ( xterm), aber weder in GTK2- noch in GTK3- oder Qt-Apps.

Ich verwende aktuelle Archlinux-Versionen:

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

und aktiviere den ComposeSchlüssel wie folgt:

setxkbmap ... -option 'compose:menu'

und Export GTK_IM_MODULE, QT_IM_MODULEVariablen:

$ echo $GTK_IM_MODULE $QT_IM_MODULE 
xim xim

Compose Schlüssel wird von X11 richtig erkannt:

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

Es funktioniert einwandfrei in xterm, Sequenzen von mir ~/.XComposeeingeschlossen. Es funktioniert weder in GTK- noch in Qt-Apps. Angenommen, wenn ich eingebe Compose ', werden Apps 'sofort wiedergegeben, ohne auf die dritte Taste in der Sequenz zu warten.

Jetzt hat sich wohl etwas geändert, entweder in Xorg (weil Composees auch in Qt-Apps nicht funktioniert) oder in GTK und Qt. *_IM_MODULEVariablen sind jetzt nicht genug. Was ist noch erforderlich, um moderne GTK- und Qt-Erkennungssequenzen ximund Compose-Sequenzen zu erstellen?

PS Es gibt eine ähnliche (und unbeantwortete) Frage zu Compose Key, die in GTK nicht funktioniert . Im Gegensatz zum Fragesteller habe ich nicht ibusinstalliert.

Sastanin
quelle

Antworten:

7

Es wurde eine Lösung gefunden, die für GTK-Apps (aber nicht für Qt) funktioniert. Man muss einstellen

XMODIFIERS="@im=none"

X11 mit toten Schlüsseln umgehen zu lassen. Vielen Dank an @PabloSaratxaga für die Antwort .

Sastanin
quelle
2

Ich hatte ein ähnliches Problem in openSUSE. ~/.XComposewürden von GTK + -Anwendungen ignoriert, sodass meine eigenen Compose-Sequenzen in Firefox, Gimp und anderen nicht funktionieren.

Ich fand heraus, dass gtk-query-immodules-2.0einige Eingabemethoden aufgelistet waren, aber nicht xim; war also unabhängig von der GTK_IM_MODULEVariablen ximnicht verfügbar. Das Installieren der Pakete gtk2-immodule-xim(und Freunde) löste das Problem.

Vielleicht erweist sich diese Bemerkung für Menschen, die unter demselben Fluch leiden, als nützlich.

Linguist
quelle
1

Dies ist eine Methode zur dauerhaften Konfiguration. Es wird zum Beispiel hier https://wiki.edubuntu.org/ComposeKey#line-66 beschrieben . Ich habe Compose-Keys mit ~ / .XCompose auf diese Weise konfiguriert. Ich habe dies sowohl auf Ubuntu- als auch auf Debian-Systemen überprüft.

ASten
quelle
Das Problem ist, dass sogar die einmalige Methode nicht mehr funktioniert. Anweisungen für dauerhafte Änderungen sind Debian / Ubuntu-spezifisch.
Sastanin