Das Tastaturlayout kann in einigen Qt-Programmen nicht geändert werden

7

Das Problem nach einem kürzlich durchgeführten Update in meinem Ubuntu 13.10 mit Unity.

Wenn Sie etwas in Qt Creator 3.0.1 oder in meinem eigenen Programm eingeben, das mit Qt 5.2.1 (von qt-project.org) kompiliert wurde, kann ich das Tastaturlayout nicht ändern. Wenn zum Beispiel das aktuelle Layout Enbeim Starten des Programms war, werden nur englische Buchstaben eingegeben, selbst wenn ich in die russische Sprache wechsle. Wenn ich Alt+ drücke Shift, ändert sich das Tray-Symbol von Enzu Ruund gilt für die meisten Programme, jedoch nicht für einige Qt-Programme. Um das Layout zu ändern, muss ich das Programm neu starten oder Copy-Paste aus einem Eingabefeld in einem anderen Programm verwenden!

Nicht alle Qt-Programme haben dieses Problem - KDevelop beispielsweise nicht.

Ein Upgrade von Ubuntu von 13.10 auf 14.04 Beta hat dieses Problem nicht gelöst (während ein weiterer Fehler behoben wurde, der die Verknüpfungen im russischen Layout in LibreOffice beeinflusste).

Was kann dieses seltsame Verhalten verursachen?

Max Alibaev
quelle
Könnten Sie mehr qt App auflisten, welche funktioniert und welche das gleiche Problem haben? Vielleicht haben sie etwas gemeinsam. (KDevelop-Build mit KDE-Entwicklungsbibliotheken, die höher als Qt-Bibliotheken sind). Alse könnte Ausgabe vonenv | grep -i im
user.dz

Antworten:

2

Es sieht so aus, als wäre es ein Fehler in Qts Event-Handling-System zum Ändern des Keynoard-Layouts: Bugzilla-Link .

Gatis Paeglis hat einen Kommentar hinzugefügt - 03 / Dec / 13 1:47 PM Dies ist kein Fehler in Qt, wie von einem Entwickler in https://mail.gnome.org/archives/desktop-devel-list/2013-September/ vorgeschlagen. msg00046.html Dieselbe Ressource weist darauf hin, dass die Ursache des Problems darin besteht, dass Qt nicht auf XkbNewKeyboardNotify-Ereignisse wartet - dies ist falsch. XkbNewKeyboardNotify hat nichts mit Änderungen des Tastaturlayouts zu tun. Das Ereignis XkbNewKeyboardNotify wird ausgelöst, wenn die eigentliche Hardware verbunden oder getrennt wird, nicht wenn sich das Tastaturlayout ändert. Das eigentliche Problem liegt in Xlib, wie unter https://bugs.freedesktop.org/show_bug.cgi?id=23202 und unter https://bugreports.qt-project.org/browse/QTBUG-30911 vorgeschlagen. Wir können hoffen, dass eines Tages das xcb-Plattform-Plugin keine Abhängigkeiten mehr von Xlib benötigt, wodurch wir die xcb-Ereignisschleife direkt verwenden können. Dies sollte auch das Problem "Erkennung des Tastaturlayouts" lösen. Hier ist die Diskussion über die Xlib-Abhängigkeit im xcb-Plugin http://lists.qt-project.org/pipermail/development/2013-July/011965.html

Wie gesagt, es betrifft nur GTK-basierte Desktop-Umgebungen, daher möchten Sie möglicherweise zu KDE wechseln. Sie können es so machen:

sudo apt-get install kubuntu-desktop
enedil
quelle