There is the log produced with debugging patch to illustrate
the logic in v4.
I'm not sure if doubled key events are guaranteed behaviour,
and not machine-specific one.


Tilde down
There the "`" is sent

[ 12894.309] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:0
[ 12894.309] (II) XkbProcessKeyboardEvent: brk
[ 12894.309] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:0
[ 12894.309] (II) XkbProcessKeyboardEvent: brk
...
[ 12896.268] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:0
[ 12896.268] (II) XkbProcessKeyboardEvent: brk

Insert down
Overlay becomes active

[ 12896.303] (II) XkbProcessKeyboardEvent: rel:0 ov_a:1 k_ov:0
[ 12896.303] (II) XkbProcessKeyboardEvent:165
[ 12896.303] (II) XkbProcessKeyboardEvent: rel:0 ov_a:1 k_ov:2
[ 12896.303] (II) XkbProcessKeyboardEvent:165
[ 12896.338] (II) XkbProcessKeyboardEvent: rel:0 ov_a:1 k_ov:2
[ 12896.338] (II) XkbProcessKeyboardEvent:165
...
[ 12900.265] (II) XkbProcessKeyboardEvent: rel:0 ov_a:1 k_ov:2
[ 12900.265] (II) XkbProcessKeyboardEvent:165

Insert up
Overlay becomes inactive
Now ignoring Tilde keypresses

[ 12900.300] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:2
[ 12900.300] (II) XkbProcessKeyboardEvent: ign
[ 12900.300] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:2
[ 12900.300] (II) XkbProcessKeyboardEvent: ign
[ 12900.334] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:2
...
[ 12902.455] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:2
[ 12902.455] (II) XkbProcessKeyboardEvent: ign

Tilde up
Treat it as overlaid-tilde-keyrelease

[ 12902.486] (II) XkbProcessKeyboardEvent: rel:1 ov_a:0 k_ov:2
[ 12902.486] (II) XkbProcessKeyboardEvent:165
[ 12902.486] (II) XkbProcessKeyboardEvent: rel:1 ov_a:0 k_ov:1
[ 12902.486] (II) XkbProcessKeyboardEvent:165

Tilde down
Then "ign"-s before were (and "brk"-s here are)
for "`" to be sent now.

[ 12907.136] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:0
[ 12907.136] (II) XkbProcessKeyboardEvent: brk
[ 12907.136] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:0
[ 12907.136] (II) XkbProcessKeyboardEvent: brk

Tilde up
Without "ign"-s before, only this would recover Tilde from overlay.

[ 12907.298] (II) XkbProcessKeyboardEvent: rel:1 ov_a:0 k_ov:0
[ 12907.298] (II) XkbProcessKeyboardEvent: brk
[ 12907.298] (II) XkbProcessKeyboardEvent: rel:1 ov_a:0 k_ov:0
[ 12907.298] (II) XkbProcessKeyboardEvent: brk

Tilde down
There and afterwards the "`"-s are sent regardless of (key_was_overlaid - 1) or 
just 0

[ 12914.156] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:0
[ 12914.156] (II) XkbProcessKeyboardEvent: brk
[ 12914.156] (II) XkbProcessKeyboardEvent: rel:0 ov_a:0 k_ov:0
[ 12914.156] (II) XkbProcessKeyboardEvent: brk

Tilde up

[ 12914.278] (II) XkbProcessKeyboardEvent: rel:1 ov_a:0 k_ov:0
[ 12914.278] (II) XkbProcessKeyboardEvent: brk
[ 12914.278] (II) XkbProcessKeyboardEvent: rel:1 ov_a:0 k_ov:0
[ 12914.278] (II) XkbProcessKeyboardEvent: brk
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to