protocol: add wl_keyboard.keys event
This MR addresses the same underlying need as in !393 but with a much smaller change. Framing as in !393 might still be useful, but it is not required to handle the examples mentioned below.
The compositor can use this event together with the keymap and modifiers event to replace the client's view of the XKB state without having to generate synthetic leave, enter, or key events that might cause unintended side effects.
A compositor might use this in the following situations:
- If the user disconnects a physical keyboard that currently has keys pressed, the compositor might send a keys event with an empty array.
- If the user has multiple physical keyboards with different keymaps connected and switches from one to the other, the compositor might use this event when sending the new keymap to the client.
Signed-off-by: Julian Orth ju.orth@gmail.com