So, jetzt 3 Monate später denke ich mein Team Einstellung und ich kam gerade mit einem passablen Lösung für dieses Problem auf.
Der Pfad zur Lösung begann mit der Qt Documentation auf "Using libinput". Die Dokumentation läuft darauf hinaus, ein paar wichtige Aussagen nach unten:
Parameter wie die Geräteknotennamen können in den Umgebungsvariablen QT_QPA_EVDEV_MOUSE_PARAMETERS eingestellt werden, QT_QPA_EVDEV_KEYBOARD_PARAMETERS und QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS
Der Mauszeiger zeigt nach oben immer wenn QT_QPA_EGLFS_HIDECURSOR (für eglfs) oder QT_QPA_FB_HIDECURSOR (für linuxfb) nicht gesetzt ist und Qt's libudev-basierte Geräteerkennung meldet, dass mindestens eine Maus verfügbar ist. Wenn die libudev-Unterstützung nicht vorhanden ist, wird der Mauszeiger immer angezeigt, sofern er nicht explizit über die Umgebungsvariable deaktiviert wird.
Das evdevtablet Plugin bietet grundlegende Unterstützung für Wacom und ähnliche, stiftbasierte Tabletten. Es generiert nur QTabletEvent-Ereignisse. Um es zu aktivieren, übergeben Sie QT_QPA_GENERIC_PLUGINS = evdevtablet in der Umgebung oder übergeben Sie alternativ das Argument -plugin evdevtablet in der Befehlszeile. Das Plugin kann einen Geräteknotenparameter verwenden, zum Beispiel QT_QPA_GENERIC_PLUGINS = evdevtablet:/dev/event1, falls die automatische Geräteerkennung des Qt (basierend auf libudev oder einem Walkthrough von/dev/input/event *) nicht funktioniert oder sich nicht benimmt.
Also, in meinem System habe ich den Geräteknoten: event0, event1, event2, event3, EVENT4, event5, Mäuse und Maus0. Weil ich versuche, die Maus arbeiten zu lassen, machte ich die Annahme, dass ich den Knoten mouse0 verwenden müsste. Dies führte dazu, dass ich diese Umgebungsvariablen einstellte:
QT_QPA_GENERIC_PLUGINS=evdevmouse
QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/mouse0
Sehr zu meiner Frustration führten diese Umgebungsvariablen zu nichts. Nach einiger Zeit dachte ich und mein Team, wie die Debug-Ausgabe von Qt Quelle auf unserem System zu erhalten:
- Ändern Quellcode im qtbase Verzeichnis unter unserem yocto Build (grob/yocto/poky/build/tmp/Arbeit/Temp Bauverzeichnis/qtbase
- Kopieren qtbase/plugins/generic/libqevdevmouseplugin.so meiner Hardware (etwa/usr/lib/QT5/plugins/generic)
- Qt von der Kommandozeile Lauf
Wir fanden schnell heraus, dass die Eingabe eve nts kommen aus mouse0 und Mäuse waren im Grunde Müll Daten. Auf unserem System haben wir EVDEV im Kernel eingerichtet, so dass die Mauseingabe auch an den Geräteknoten event0 gebunden war. Als wir versuchten, den Qt-Mausparameter auf event0 zu setzen, fingen wir an, Debugausgabe zu sehen, die wie echte Daten aussah.
QT_QPA_GENERIC_PLUGINS=evdevmouse
QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event0
Allerdings blieb das Problem des No-Maus-Pointer noch. Nach einer Weile schauten wir uns die Qt-Dokumentation an, speziell im 2. Absatz oben. Als letzten Versuch fügen wir versuchen, in der QT_QPA_FB_HIDECURSOR Umgebungsvariable ...
QT_QPA_GENERIC_PLUGINS=evdevmouse
QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event0
QT_QPA_FB_HIDECURSOR=0
Und ... voila! Nach unzähligen Stunden Debugging und Lesen der Dokumentation haben wir endlich einen Mauszeiger bekommen.
Ich denke, der Hauptpunkt unseres Problems war die Fehlinterpretation der Qt-Dokumentation.
Der Mauszeiger erscheint immer dann, wenn ...QT_QPA_FB_HIDECURSOR (für linuxfb) ist nicht gesetzt
Mit „nicht festgelegt“, bedeutet Qt explizit als FALSCH definiert ... nicht einfach „nicht gesetzt“ überhaupt.
Diese Lösung wird für uns funktionieren, aber es lässt mindestens eine Sache zu wünschen übrig. Auf dem Weg stolperte ich über this thread answer on the Unix StackEx, die auf die Kernel-Dokumentation von input/input.txt zeigt. Im Abschnitt „3.2.2 mousedev“ können Sie die Zeile sehen:
Jedes ‚Maus‘ Gerät mit einem einzigen Maus oder Digitizer zugeordnet ist, mit der Ausnahme die letzte - ‚Mäuse‘. Dieses Gerät mit einem einzelnen Zeichen wird von allen Mäusen und Digitizern gemeinsam genutzt, und selbst wenn keine angeschlossen sind, ist das Gerät vorhanden. Dies ist nützlich für das Hotplugging von USB-Mäusen, so dass die Programme das Gerät auch dann öffnen können, wenn keine Mäuse vorhanden sind.
Was das für uns bedeutet, dass, während wir event0 verwenden können (was geht weg, wenn wir die Maus ziehen) für unsere Mauseingabe Event-Handling, werden wir nicht in der Lage sein, Hot-Plugging zu unterstützen, ohne etwas zu machen Kernel/Qt-Source-Modifikationen oder herauszufinden, wie man Mäuse Arbeit als Qt-Maus-Eingabeparameter.
Also, die Frage nach dem „Warum tut event0 Arbeit und nicht mouse0/Mäuse“ steht immer noch ... aber jetzt haben wir eine Lösung haben wir mit leben können.
UPDATE: Jetzt ein wenig später haben wir herausgefunden, dass udev nicht richtig auf unserem System funktioniert. Wir haben udev den rdepends in unserer Paketgruppe für das Yocto bauen, und jetzt können wir
QT_QPA_GENERIC_PLUGINS=evdevmouse
gesetzt und wir eine Arbeits Mauszeigers mit Hotplug-Unterstützung.