diff --git a/tools/ei-demo-client.c b/tools/ei-demo-client.c index c93bc54..196e59c 100644 --- a/tools/ei-demo-client.c +++ b/tools/ei-demo-client.c @@ -104,7 +104,14 @@ setup_xkb_keymap(struct ei_keymap *keymap) return; } - _unref_(xkb_keymap) *xkbmap = xkb_keymap_new_from_string(ctx, memmap_get_data(memmap), + /* workaround for libxkbcommon#307 (fixed in libxkbcommon 1.6.0) - strip the trailing null byte */ + size_t sz = memmap_get_size(memmap); + char *data = memmap_get_data(memmap); + while (sz > 0 && data[sz - 1] == '\0') + --sz; + + _unref_(xkb_keymap) *xkbmap = xkb_keymap_new_from_buffer(ctx, memmap_get_data(memmap), + memmap_get_size(memmap), XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS); if (!xkbmap)