From c27263c105745dbce31b7ebd8166e167e182ed19 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Fri, 6 Aug 2021 21:25:55 +0200 Subject: [PATCH] seat: allow compositors to not load a keymap The protocol allows compositors to not send any keymap to Wayland clients. Handle a keymap-less keyboard correctly by sending WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP instead of erroring out in the mmap call. --- types/seat/wlr_seat_keyboard.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/types/seat/wlr_seat_keyboard.c b/types/seat/wlr_seat_keyboard.c index e9aba4d2..f41ef880 100644 --- a/types/seat/wlr_seat_keyboard.c +++ b/types/seat/wlr_seat_keyboard.c @@ -370,6 +370,13 @@ static void seat_client_send_keymap(struct wlr_seat_client *client, continue; } + if (keyboard->keymap == NULL) { + wl_keyboard_send_keymap(resource, + WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP, keymap_fd, 0); + close(keymap_fd); + continue; + } + void *ptr = mmap(NULL, keyboard->keymap_size, PROT_READ | PROT_WRITE, MAP_SHARED, keymap_fd, 0); if (ptr == MAP_FAILED) {