warnings on every "forward-key-event" by IBus
Steps to reproduce
- Install ibus and ibus-hangul.
- Add ibus-hangul with
gnome-control-center region
- Focus on gnome-terminal or gedit in GNOME Wayland
- Enable ibus-hangul with Super-space key or mouse on the keyboard indicator
- Enable Hangul mode with Shift-space key or clicking "Hangul mode" in the panel menu
- Type "r" key and Space key.
Current behavior
The last space key event produces these 4 warnings.
(gtk3-demo:173906): Gdk-WARNING **: 03:38:14.504: Event with type 8 not holding a GdkDevice. It is most likely synthesized outside Gdk/GTK+
(gtk3-demo:173906): Gdk-WARNING **: 03:38:14.504: Event with type 8 not holding a GdkDevice. It is most likely synthesized outside Gdk/GTK+
(gtk3-demo:173906): Gdk-WARNING **: 03:38:14.504: Event with type 8 not holding a GdkDevice. It is most likely synthesized outside Gdk/GTK+
(gtk3-demo:173906): Gdk-WARNING **: 03:38:14.505: Event with type 8 not holding a GdkDevice. It is most likely synthesized outside Gdk/GTK+
Expected outcome
No warning. :)
What's wrong with synthesized events?
Version information
- 3.24.18
- Debian unstable package 3.24.18-1
Additional information
I skimmed IBus and GTK source code a while and here's what I found:
-
IBus creates a
GdkEventKey
for forward-key-event (for key events IBus doesn't use) and push it to the event queue withgdk_event_put()
: -
GdkEventKey
has noGdkDevice
field so it is impossible to set GdkDevice from IBus. So such key events always output these warnings ingdk_event_get_device()
. -
Stacks with gedit:
Thread 1 "gedit" hit Breakpoint 1, gdk_event_get_device (event=0x55555559fe40) at ../../../../gdk/gdkevents.c:1728
1728 ../../../../gdk/gdkevents.c: No such file or directory.
(gdb) where
#0 gdk_event_get_device (event=0x55555559fe40) at ../../../../gdk/gdkevents.c:1728
#1 0x00007ffff74037c7 in rewrite_event_for_grabs (event=0x55555559fe40) at ../../../../gtk/gtkmain.c:1579
#2 gtk_main_do_event (event=0x55555559fe40) at ../../../../gtk/gtkmain.c:1737
#3 gtk_main_do_event (event=0x55555559fe40) at ../../../../gtk/gtkmain.c:1690
#4 0x00007ffff70ff815 in _gdk_event_emit (event=event@entry=0x55555559fe40) at ../../../../gdk/gdkevents.c:73
#5 0x00007ffff715c872 in gdk_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../../../../../gdk/wayland/gdkeventsource.c:124
#6 0x00007ffff79ae60d in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#7 0x00007ffff79ae890 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#8 0x00007ffff79ae91f in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#9 0x00007ffff7d5d05d in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#10 0x0000555555555222 in main ()
(gdb) c
Continuing.
[Switching to thread 5 (Thread 0x7ffff1349700 (LWP 171568))](running)
[Thread 0x7ffff1d77700 (LWP 171567) exited]
Thread 1 "gedit" hit Breakpoint 1, gdk_event_get_device (event=0x55555559fe40) at ../../../../gdk/gdkevents.c:1728
1728 ../../../../gdk/gdkevents.c: No such file or directory.
(gdb) where
#0 gdk_event_get_device (event=0x55555559fe40) at ../../../../gdk/gdkevents.c:1728
#1 0x00007ffff74035cb in gtk_main_do_event (event=0x55555559fe40) at ../../../../gtk/gtkmain.c:1750
#2 gtk_main_do_event (event=0x55555559fe40) at ../../../../gtk/gtkmain.c:1690
#3 0x00007ffff70ff815 in _gdk_event_emit (event=event@entry=0x55555559fe40) at ../../../../gdk/gdkevents.c:73
#4 0x00007ffff715c872 in gdk_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../../../../../gdk/wayland/gdkeventsource.c:124
#5 0x00007ffff79ae60d in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#6 0x00007ffff79ae890 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#7 0x00007ffff79ae91f in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#8 0x00007ffff7d5d05d in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#9 0x0000555555555222 in main ()
(gdb) c
Continuing.
[Switching to thread 5 (Thread 0x7ffff1349700 (LWP 171568))](running)
Thread 1 "gedit" hit Breakpoint 1, gdk_event_get_device (event=0x55555559fe40) at ../../../../gdk/gdkevents.c:1728
1728 in ../../../../gdk/gdkevents.c
(gdb) where
#0 gdk_event_get_device (event=0x55555559fe40) at ../../../../gdk/gdkevents.c:1728
#1 0x00007ffff7100c22 in gdk_event_get_source_device (event=<optimized out>) at ../../../../gdk/gdkevents.c:1803
#2 0x00007ffff73bc36c in gtk_gesture_single_handle_event (controller=0x555555c91890, event=0x55555559fe40) at ../../../../gtk/gtkgesturesingle.c:143
#3 0x00007ffff738487c in gtk_event_controller_handle_event (controller=0x555555c91890, event=event@entry=0x55555559fe40) at ../../../../gtk/gtkeventcontroller.c:230
#4 0x00007ffff754041d in _gtk_widget_run_controllers (widget=widget@entry=0x555555ae6ba0, event=event@entry=0x55555559fe40, phase=phase@entry=GTK_PHASE_CAPTURE) at ../../../../gtk/gtkwidget.c:7443
#5 0x00007ffff75449b0 in _gtk_widget_captured_event (widget=0x555555ae6ba0, event=0x55555559fe40) at ../../../../gtk/gtkwidget.c:7497
#6 0x00007ffff7401ccf in propagate_event (widget=widget@entry=0x55555611e570, event=event@entry=0x55555559fe40, captured=captured@entry=1, topmost=topmost@entry=0x0) at ../../../../gtk/gtkmain.c:2690
#7 0x00007ffff7403c00 in _gtk_propagate_captured_event (topmost=0x0, event=0x55555559fe40, widget=0x55555611e570) at ../../../../gtk/gtkmain.c:2742
#8 gtk_main_do_event (event=0x55555559fe40) at ../../../../gtk/gtkmain.c:1919
#9 gtk_main_do_event (event=<optimized out>) at ../../../../gtk/gtkmain.c:1690
#10 0x00007ffff70ff815 in _gdk_event_emit (event=event@entry=0x55555559fe40) at ../../../../gdk/gdkevents.c:73
#11 0x00007ffff715c872 in gdk_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../../../../../gdk/wayland/gdkeventsource.c:124
#12 0x00007ffff79ae60d in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007ffff79ae890 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#14 0x00007ffff79ae91f in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007ffff7d5d05d in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#16 0x0000555555555222 in main ()
(gdb) c
Continuing.
[Switching to thread 5 (Thread 0x7ffff1349700 (LWP 171568))](running)
Thread 1 "gedit" hit Breakpoint 1, gdk_event_get_device (event=0x55555559fe40) at ../../../../gdk/gdkevents.c:1728
1728 in ../../../../gdk/gdkevents.c
(gdb) where
#0 gdk_event_get_device (event=0x55555559fe40) at ../../../../gdk/gdkevents.c:1728
#1 0x00007ffff7100c22 in gdk_event_get_source_device (event=<optimized out>) at ../../../../gdk/gdkevents.c:1803
#2 0x00007ffff7504d09 in tooltips_enabled (event=0x55555559fe40) at ../../../../gtk/gtktooltip.c:1302
#3 _gtk_tooltip_handle_event (event=event@entry=0x55555559fe40) at ../../../../gtk/gtktooltip.c:1318
#4 0x00007ffff7403c35 in gtk_main_do_event (event=0x55555559fe40) at ../../../../gtk/gtkmain.c:1957
#5 gtk_main_do_event (event=<optimized out>) at ../../../../gtk/gtkmain.c:1690
#6 0x00007ffff70ff815 in _gdk_event_emit (event=event@entry=0x55555559fe40) at ../../../../gdk/gdkevents.c:73
#7 0x00007ffff715c872 in gdk_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../../../../../gdk/wayland/gdkeventsource.c:124
#8 0x00007ffff79ae60d in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#9 0x00007ffff79ae890 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007ffff79ae91f in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007ffff7d5d05d in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#12 0x0000555555555222 in main ()
(gdb) c
Continuing.
[Switching to thread 5 (Thread 0x7ffff1349700 (LWP 171568))](running)