diff -up firefox-64.0/widget/gtk/nsGtkKeyUtils.cpp.old firefox-64.0/widget/gtk/nsGtkKeyUtils.cpp --- firefox-64.0/widget/gtk/nsGtkKeyUtils.cpp.old 2018-12-05 13:17:51.147655931 +0100 +++ firefox-64.0/widget/gtk/nsGtkKeyUtils.cpp 2018-12-05 13:18:57.989282016 +0100 @@ -590,7 +590,7 @@ seat_handle_capabilities(void *data, str { static wl_keyboard *keyboard = nullptr; - if (caps & WL_SEAT_CAPABILITY_KEYBOARD) { + if ((caps & WL_SEAT_CAPABILITY_KEYBOARD) && !keyboard) { keyboard = wl_seat_get_keyboard(seat); wl_keyboard_add_listener(keyboard, &keyboard_listener, nullptr); } else if (keyboard && !(caps & WL_SEAT_CAPABILITY_KEYBOARD)) {