Here's an excerpt from xev output from me typing "¤xo", which is to say, Compose x o x o. What you can see from this:
- The keystrokes eaten by the Compose key still appear as KeyPress and KeyRelease events. They just have XFilterEvent=True on the KeyPress events. The other keystrokes (and the KeyRelease events) have XFilterEvent=False.
- The ¤ character is injected as a fake KeyPress, with keycode 0 and a keysym corresponding to the actual Unicode code point. I tried ☺ later; the corresponding keysym is keysym 0x100263a, U263A.
- I believe that all of this compose-key hackery is being done by Xlib, not by the X server, because you have to start a new X client in order to get it to notice changes to
.XCompose
.
PropertyNotify event, serial 30, synthetic NO, window 0x6800001,
atom 0x19d (_NET_WM_ICON_GEOMETRY), time 1774437600, state PropertyNewValue