diff --git a/terminator b/terminator index d3799856..1890d68a 100755 --- a/terminator +++ b/terminator @@ -49,6 +49,11 @@ from terminatorlib.util import dbg, err from terminatorlib.layoutlauncher import LayoutLauncher if __name__ == '__main__': + # Workaround for IBus intefering with broadcast when using dead keys + # Environment also needs IBUS_DISABLE_SNOOPER=1, or double chars appear + # in the receivers. + os.environ['IBUS_DISABLE_SNOOPER']='1' + dbus_service = None dbg ("%s starting up, version %s" % (APP_NAME, APP_VERSION)) diff --git a/terminatorlib/terminal.py b/terminatorlib/terminal.py index 916a9d37..3c4d5bd1 100755 --- a/terminatorlib/terminal.py +++ b/terminatorlib/terminal.py @@ -836,6 +836,13 @@ class Terminal(Gtk.VBox): dbg('Terminal::on_keypress: Called on %s with no event' % widget) return(False) + # Workaround for IBus intefering with broadcast when using dead keys + # Environment also needs IBUS_DISABLE_SNOOPER=1, or double chars appear + # in the receivers. + if (event.state | Gdk.ModifierType.MODIFIER_MASK ) ^ Gdk.ModifierType.MODIFIER_MASK != 0: + dbg('Terminal::on_keypress: Ingore processed event with event.state %d' % event.state) + return(False) + # FIXME: Does keybindings really want to live in Terminator()? mapping = self.terminator.keybindings.lookup(event)