[PATCH weston 4/5] shell: keyboard focus with sub-surfaces

Bill Spitzak spitzak at gmail.com
Fri Jan 4 11:27:41 PST 2013

Pekka Paalanen wrote:

> If the client wants to assign keyboard focus to a different
> (sub-)surface than where the compositor is offering it, that is left
> for a future keyboard focus negotiation protocol,

As long as the key events are delivered to *any* client surface then the 
client can pretend that any of the surfaces has keyboard focus.

I really think the proper solution is that wayland lets a client "grab" 
the keyboard focus to any surface at any time. The shell can put some 
restrictions on this such as making sure the mouse is currently inside 
one of the client's windows, in order to ignore hostile clients. But 
wayland *never* changes what surface gets keyboard events except by 
client request.

Alt-tab style shortcuts just cause an offer of keyboard to the client, 
the client must respond with a grab if the focus really changes.

This is enormously simpler than trying to describe exactly what style 
and area of clicks deliver keyboard focus. A client that does not grab 
keyboard focus just because a user wants to hit a button, while still 
allowing keyboard focus in other cases, would be a pretty nice 
improvement in usability. Right now things like media players go through 
some pretty strange ui choices to work around this.

> just like whether
> click raises or not.

Yes. The ONLY way a window should ever be raised is if the client does a 
"raise" request. This moves all the decisions about what a click means 
to the client. In particular it makes the "drag and drop problem" 
trivial to solve. It also means we can have clients that know they are 
useful when partially buried and not raise on some clicks, which would 
be an AMAZING improvement of usabilty we have been lacking for 25 years 
now ever since Windows broke this and X copied it.

More information about the wayland-devel mailing list