# HG changeset patch # User Alex Baines # Date 1477614538 -3600 # Fri Oct 28 01:28:58 2016 +0100 # Node ID 0561d664b4f86ac0bcd3ffd4902cb62a0445937b # Parent fbf9b0e3589a1f88e2eefbbeb3b632e2da795fde Only forward filtered xevents if compiling with ibus/fcitx dbus support. Should fix bug #3472, but dead keys won't generate events if compiled in this state. diff -r fbf9b0e3589a -r 0561d664b4f8 src/video/x11/SDL_x11events.c --- a/src/video/x11/SDL_x11events.c Sat Oct 22 17:53:03 2016 -0700 +++ b/src/video/x11/SDL_x11events.c Fri Oct 28 01:28:58 2016 +0100 @@ -568,8 +568,11 @@ printf("Filtered event type = %d display = %d window = %d\n", xevent.type, xevent.xany.display, xevent.xany.window); #endif + /* Make sure dead key press/release events are sent */ + /* But only if we're using one of the DBus IMEs, otherwise + some XIM IMEs will generate duplicate events */ +#if defined(HAVE_IBUS_IBUS_H) || defined(HAVE_FCITX_FRONTEND_H) if (orig_keycode) { - /* Make sure dead key press/release events are sent */ SDL_Scancode scancode = videodata->key_layout[orig_keycode]; if (orig_event_type == KeyPress) { SDL_SendKeyboardKey(SDL_PRESSED, scancode); @@ -577,6 +580,7 @@ SDL_SendKeyboardKey(SDL_RELEASED, scancode); } } +#endif return; }