[Development] Multiseat capability to Qt

Hannu Lyytinen hannu.lyytinen at nomovok.com
Fri Apr 13 11:37:48 CEST 2012


Hello all,

after doing some small fixes to KMS QPA plugin, I proceeded with
implementing the input device support via evdev. It was soon pointed out
that perhaps using the generic evdev plugins would be better idea. I
experimented with them a bit and seems they need some work.
Specifically, all these plugins generate the events via
QWindowSystemInterface::handle{Key,Mouse}Event, with the first parameter
being set to null. Same applies to handleTouchEvent, but touch handling
is a bit more hairy so let's skip it for the sake of clarity.

Looking at QGuiApplicationPrivate::processKeyEvent reveals that for KMS
the key event is always discarded and in processMouseEvent the event
gets delivered to first available screen in practice.

Currently the KMS QPA plugin works with multiple screens and I would
like to assign the input devices to these screens via the ID_SEAT
attribute in the udev database. In other words, a screen and a number of
input devices like keyboards and mouses would be bound into a single
seat. This would also solve my problem; the evdev plugins could be
modified to send the events to the toplevel window associated with the
given screen (which in turn is associated to the given input device).

I'm inclined towards adding a new interface to QPA API, namely
QPlatformSeat. The platform plugins could implement their own grouping
for the screen and the input devices.

Any comments?

-- 
Hannu Lyytinen
Senior Software Developer, Nomovok Ltd
email: hannu.lyytinen at nomovok.com




More information about the Development mailing list