Seite 1 von 1

QT 5.x EGLFS RPI2 Tastatur Layout Fehler

Verfasst: 7. Juni 2017 10:50
von TuxTux
Hallo liebe Gemeinde,

habe bis jetzt erfolgreich QT 5.5 - 5.9 für den Raspberry PI 2 kompiliert und einfache kleine Widgets geschrieben. Wollte mich jetzt mit QML und Dateneingaben anfreunden und stoße auf ein Problem was ich nicht selber lösen kann. Das Tastatur Layout auf dem PI ist in Deutsch (QWERTZ), wenn ich jetzt in QT ein einfaches TEXTFIELD anlege und in diesem Zeichen eingebe ist QWERTY aktiv.
Habe Testweise das Example QML TEXTEDITOR kompiliert und übertragen und auch hier ist es eine QWERTY Tastatur.

Weiß jemand wie ich das ganze auf QWERTZ einstelle?

Vielen Dank im Voraus.

Re: QT 5.x EGLFS RPI2 Tastatur Layout Fehler

Verfasst: 7. Juni 2017 11:09
von Christian81
Das kommt unter Umständen auf deine LOCALE an. Stelle sicher dass dort nicht de_DE eingestellt ist. Qt an sich hat damit aber nicht wirklich was zu tun - die Tastatureingaben werden innerhalb von Qt nicht umgemappt.

Re: QT 5.x EGLFS RPI2 Tastatur Layout Fehler

Verfasst: 7. Juni 2017 14:41
von TuxTux
Also die LOCALE sind meiner Meinung nach in Ordnung, zumal in der Konsole alles auf QWERTZ / DEUTSCH ist. Nur innerhalb der APP ist halt nicht so :roll:

Code: Alles auswählen

locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=de_DE.utf8
LANGUAGE=de_DE
LC_CTYPE="de_DE"
LC_NUMERIC="de_DE"
LC_TIME="de_DE"
LC_COLLATE="de_DE"
LC_MONETARY="de_DE"
LC_MESSAGES="de_DE"
LC_PAPER="de_DE"
LC_NAME="de_DE"
LC_ADDRESS="de_DE"
LC_TELEPHONE="de_DE"
LC_MEASUREMENT="de_DE"
LC_IDENTIFICATION="de_DE"
LC_ALL=de_DE

Re: QT 5.x EGLFS RPI2 Tastatur Layout Fehler

Verfasst: 7. Juni 2017 18:36
von TuxTux
So...
Das Problem ist gelöst und ich möchte die Lösung natürlich auch anderen zugänglich machen.

Bin durch eine weitere Recherche auf folgenden Beitrag gestoßen:
https://forum.qt.io/topic/76540/qlocale ... language/2

Durch die Debug Ausgabe mit:

Code: Alles auswählen

QGuiApplication app(argc, argv);
QLocale::setDefault(QLocale::German);
QLocale l;
qDebug() << l.language();
app.inputMethod()->locale().setDefault(QLocale::German);
qDebug() << app.inputMethod()->locale().language();
erfolgte folgender Output:

Code: Alles auswählen

QLocale::Language(German)
QLocale::Language(C)
Das Language C machte mich stutzig und ich denke es müsste vielleicht nur das SYSROOT angepasst werden ? !

Habe dann unter qttools das Programm kmap2qmap kompiliert und auf den PI übertragen.
Das Prog wurde dann mit der zuvor entpackten cached_UTF-8_del.kmap gefüttert. (/etc/console-setup/cached_UTF-8_del.kmap.gz )

Code: Alles auswählen

kmap2qmap  cached_UTF-8_del.kmap  cached_UTF-8_del.qmap 
Die cached_UTF-8_del.qmap wurde dann einfach in das Projekt eingebunden:

Code: Alles auswählen

QEglFSFunctions myKeyboard_Layout;
myKeyboard_Layout.loadKeymap("/Pfad/zur/Datei/cached_UTF-8_del.qmap");
Und siehe da, es funktioniert.
Alle eingaben sind korrekt incl. Umlaute.

Ich denke das dies nur eine "quick and dirty" Methode darstellt was mich aber vorerst nicht stört.