libinput returns multiple keyboards that do not generate events

Stefanos A. stapostol at
Thu Jul 17 06:37:41 PDT 2014

2014-07-17 14:57 GMT+02:00 Jasper St. Pierre <jstpierre at>:

> I don't see a benefit for running directly on a Linux console.
> I don't have any examples of using udev on me at the moment, but Weston
> should have a few.

Thanks for your help so far.

The benefit applies to applications running on limited hardware such as
Raspberry Pi; specialized media applications that do not require a desktop
environment, such as XMBC; and applications that can benefit from tighter
timing, such as emulators. It's not generally useful, but there is interest
in making this work.

I am currently reading the documentation on multiseat on
<> and trying to
understand how that applies to my use case.

"loginctl list-seats" returns a single seat ("seat0") no matter how many I
keyboards I have connected (internal, internal + external, internal + 2
external). Same thing happens with mice - it appears that all input devices
are assigned to seat0 by default.

According to the documentation, "Assignment of hardware devices to seats is
managed inside the udev database, via settings on the devices." IF I
understand correctly, this means that only the system administrator can
change the device-seat assignments. This makes perfect sense in a
multi-user / multi-seat environment, but I don't think it actually covers
my use-case which is a single-user system where two people want to play a
game together for half an hour.

When reading through libinput.h, I see references to "physical seats",
which I understand to be seat names as seen in loginctl, and "logical
seats" which sounds very close to the way I am treating input devices
inside my library. However, although I can retrieve the name of a logical
seat, I don't see how I would go about assigning devices to logical seats:
(a) there is not "libinput_assign_device_to_logical_seat" API; (b) even if
there was, I am back to the original problem, namely how to decide which
devices to assign to each logical seat.

As far as I can tell, libinput *does* take my use case into account. I
think what I am missing is a key piece of information on how to make
everything fit together. I'll check the weston source again, maybe there is
something hiding there. (Or maybe someone has an idea on how to make this
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the wayland-devel mailing list