>> You're right. I thought this was happening entirely inside Xlib, and >> indeed it requires some cooperation of the program. It seems that this >> cooperation is minimal, though: IIUC, the client should just >> immediately discard the events when XFilterEvent returns True, that is, >> until the composed character is delivered. > > How do you think ``the composed character is delivered''? > Like any other character, with a KeyPress event, but through XmbLookupString (its first occurrence in handle_one_xevent). AFAIU what happens is this: Compose -> KeyPress event, keysym Multi_key, with XFilterEvent True _ -> KeyPress event, keysym underscore, with XFilterEvent True > -> KeyPress event, keysym greater, with XFilterEvent True after which a KeyPress event, keysym U2265, with XFilterEvent False, and for which XmbLookupString returns "≥", is delivered to the client. What am I missing?