Browse Source

Let SDL_IM_MODULE=fcitx override Wayland as a workaround to fix key repetition detection (#11859)

(cherry picked from commit db2997548cb1eeada2e3c577e3c680fa8f7478ed)
Daniel Tang 3 months ago
parent
commit
f4f20c9255
1 changed files with 12 additions and 0 deletions
  1. 12 0
      src/video/wayland/SDL_waylandevents.c

+ 12 - 0
src/video/wayland/SDL_waylandevents.c

@@ -2147,6 +2147,18 @@ void Wayland_add_primary_selection_device_manager(SDL_VideoData *d, uint32_t id,
 
 void Wayland_add_text_input_manager(SDL_VideoData *d, uint32_t id, uint32_t version)
 {
+#ifdef HAVE_FCITX
+    const char *im_module = SDL_getenv("SDL_IM_MODULE");
+    if (im_module && SDL_strcmp(im_module, "fcitx") == 0) {
+        /* Override the Wayland text-input protocol when Fcitx is enabled, like how GTK_IM_MODULE does.
+         *
+         * The Fcitx wiki discourages enabling it under Wayland via SDL_IM_MODULE, so its presence must
+         * be intentional, and this workaround is needed for fixing key repeat detection.
+         */
+        return;
+    }
+#endif
+
     d->text_input_manager = wl_registry_bind(d->registry, id, &zwp_text_input_manager_v3_interface, 1);
 
     if (d->input) {