From c7c14f184cffb0849a8e1fb3c98b3875b7342d7e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 5 Jun 2020 22:11:15 +0530 Subject: [PATCH] X11: Recompile keymaps on XkbNewKeyboardNotify events Hopefully fixes #2726 --- docs/changelog.rst | 2 ++ glfw/x11_window.c | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 58acd2dd5..7392a17eb 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -34,6 +34,8 @@ To update |kitty|, :doc:`follow the instructions `. - Wayland: Fix mouse cursor rendering on HiDPI screens (:pull:`2709`) +- X11: Recompile keymaps on XkbNewKeyboardNotify events (:iss:`2726`) + 0.17.4 [2020-05-09] -------------------- diff --git a/glfw/x11_window.c b/glfw/x11_window.c index f15340f51..b65b1f219 100644 --- a/glfw/x11_window.c +++ b/glfw/x11_window.c @@ -1177,8 +1177,11 @@ static void processEvent(XEvent *event) { XkbEvent *kb_event = (XkbEvent*)event; switch(kb_event->any.xkb_type) { - case XkbNewKeyboardNotify: - if(!glfw_xkb_update_x11_keyboard_id(&_glfw.x11.xkb)) return; + case XkbNewKeyboardNotify: { + int32_t old_id = _glfw.x11.xkb.keyboard_device_id; + if (!glfw_xkb_update_x11_keyboard_id(&_glfw.x11.xkb)) return; + if (old_id != _glfw.x11.xkb.keyboard_device_id) keymap_dirty = true; + } /* fallthrough */ case XkbMapNotify: {