Hi Jeffrey, Perhaps it would be better to keep (restore) the keyboard support in the linuxinput generic plugin? That way platforms other than eglfs could potentially benefit too.
Besides, keeping such driver-like solutions in a separate, optional generic plugin is always a good idea: what if some system uses eglfs without an actual keyboard? Initializing udev, keyvoard support, etc. is just a waste of time then. The target window shouldn't be a problem with eglfs: passing either 0 or QGuiApplication::activeWindow() to handleKey|Mouse|TouchEvent is enough. Regards, Laszlo On 10/14/2011 08:01 AM, ext Jeffrey Malone wrote: > Hey, > > I'm somewhat new to development on Qt itself, and am seeking > comments/suggestions for my attempts at getting basic Linux keyboard > support working with the eglfs platform plugin in Qt5. > My specific interests are in anyone pointing out any taboos I've > committed, especially changes that will need to be made before any > merge request is performed. > > I've setup a temporary repo with my modified plugin here: > https://gitorious.org/qt5-eglfs/qt5-eglfs > > A summary of what I've done: > > I took the generic linuxinput plugin removed in many commits ago that > included keyboard support for QWS and modified it to work without QWS > Screen and such. This involved moving the driver itself into the > eglfs platform plugin so I was able to control which QWindow to send > keyboard events to -- I researched extensively for a method of keeping > the two separate, but found nothing helpful. > > I've added two additional classes: > > QEglFSUDevMonitor > This class parses all connected devices via udev, and determines if > any are a keyboard. If they are, it emits a keyboardAdded(QString > &devnode) signal, with devnode being something like > "/dev/input/event2" > After the main event loop begins, it gets set to a monitor mode where > it watches udev for device added/removed messages. It then sends > additional keyboardAdded() and keyboardRemoved() signals out. > > QEglFSConnection > This class has an instance of QEglFSUDevMonitor, and handles its signals. > When a keyboard is added, it creates a QLinuxInputKeyboardHandler for > the device. > Whena keyboard is removed, it deletes the object. > > In QEglFSIntegration, a QEglsFSConnection is created. When the main > event loop is started, and a QWindow is created for the platform > plugin, it passes it to QEglFSConnection and starts their event-loop > based functionality (watching a socket via QSocketNotifier). > > > Presently, it supports hotplugging keyboards, and works well in my > limited testing. It lacks capslock support (which was noted in the > QWS keyboard implementation), which will need to be fixed, and it > fails to turn off console echo. > There are likely additional bugs, and if anyone notices them, I'd be > very interested to hear it :) > > Jeffrey Malone > _______________________________________________ > Qt5-feedback mailing list > [email protected] > http://lists.qt.nokia.com/mailman/listinfo/qt5-feedback _______________________________________________ Qt5-feedback mailing list [email protected] http://lists.qt.nokia.com/mailman/listinfo/qt5-feedback
