diff --git a/protocol/wayland.xml b/protocol/wayland.xml
index aa5fafdf..89ce11a6 100644
--- a/protocol/wayland.xml
+++ b/protocol/wayland.xml
@@ -2115,7 +2115,6 @@
use the seat object anymore.
-
@@ -2577,6 +2576,8 @@
+
@@ -2588,6 +2589,13 @@
From version 7 onwards, the fd must be mapped with MAP_PRIVATE by
the recipient, as MAP_SHARED may fail.
+
+ From version 11 onwards, multiple wl_keyboard.keymap events may be sent
+ within a single frame, each representing the same keymap in a distinct
+ keymap format. Clients must select and process at most one of these
+ keymaps, ideally the one offering the greatest feature coverage, while
+ immediately closing the file descriptors corresponding to unused
+ keymaps. Keymap events sent in a later frame replace the active keymap.
@@ -2609,6 +2617,9 @@
Clients should not use the list of pressed keys to emulate key-press
events. The order of keys in the list is unspecified.
+
+ From version 11 onwards this event is part of a wl_keyboard.frame
+ logical event group. See wl_keyboard.frame for details.
@@ -2627,6 +2638,9 @@
defaults. The compositor must not send this event if the active surface
of the wl_keyboard was not equal to the surface argument immediately
before this event.
+
+ From version 11 onwards this event is part of a wl_keyboard.frame
+ logical event group. See wl_keyboard.frame for details.
@@ -2674,6 +2688,9 @@
key state when a wl_keyboard.repeat_info event with a rate argument of
0 has been received. This allows the compositor to take over the
responsibility of key repetition.
+
+ From version 11 onwards this event is part of a wl_keyboard.frame
+ logical event group. See wl_keyboard.frame for details.
@@ -2696,6 +2713,9 @@
In the wl_keyboard logical state, this event updates the modifiers and
group.
+
+ From version 11 onwards this event is part of a wl_keyboard.frame
+ logical event group. See wl_keyboard.frame for details.
@@ -2726,12 +2746,47 @@
This event can be sent later on as well with a new value if necessary,
so clients should continue listening for the event past the creation
of wl_keyboard.
+
+ From version 11 onwards this event is part of a wl_keyboard.frame
+ logical event group. See wl_keyboard.frame for details.
+
+
+
+
+
+ Indicates the end of a set of events that logically belong together.
+ A client is expected to accumulate the data in all events within the
+ frame before proceeding.
+
+ All wl_keyboard events before a wl_keyboard.frame event belong
+ logically together. For example, multiple wl_keyboard.keymap event may
+ be sent — each one with a different format — and finally a
+ wl_keyboard.frame event. See the wl_keyboard.keymap event for more
+ details.
+
+ A wl_keyboard.frame event is sent for every logical event group,
+ even if the group only contains a single wl_keyboard event.
+ Specifically, a client may get a sequence: key, frame, key, modifier,
+ frame, key, frame.
+
+ The wl_keyboard.enter and wl_keyboard.leave events are logical events
+ generated by the compositor and not the hardware. These events are
+ also grouped by a wl_keyboard.frame. When the keyboard focus moves from
+ one surface to another, a compositor should group the
+ wl_keyboard.leave event within the same wl_keyboard.frame.
+ However, a client must not rely on wl_keyboard.leave and
+ wl_keyboard.enter being in the same wl_keyboard.frame.
+ Compositor-specific policies may require the wl_keyboard.leave and
+ wl_keyboard.enter event being split across multiple wl_keyboard.frame
+ groups.
+
+