Implementation for the various grabs (input methods and xdg_popup e.g)
There's multiple kind of grabs possible,
- Input method grabs (mostly keyboard)
- XDG Popup grabs
Some Requirements
-
IM grabs behave more or less as the first level of filter, where if the input method consumes the event, fine, otherwise the event is forwarded to active client/seat. Input method grabs operate on the wl_keyboard or KeyboardInterface, while XDG popup grab may operate on the surface/subsurface
-
IM grabs should not change value of the focused*Surface state, while the XDG popup grab may change that state.
-
xwayland-keyboard-grab-unstable-v1, which operates on the "surface level"
https://source.puri.sm/Librem5/squeekboard/-/blob/master/protocols/input-method-unstable-v2.xml#L315
Edited by David Edmundson