[Development] Qt/XCB applications and deadkeys (which cease working) (way to reproduce)

Allan Sandfeld Jensen kde at carewolf.com
Fri Jun 9 16:08:20 CEST 2017


On Freitag, 9. Juni 2017 15:30:11 CEST René J. V. Bertin wrote:
> Yay, I have found a transient way to trigger the issue transiently!
> 
> github.com:RJVB/qtwheeltest
> 
> Builds against both Qt4 and Qt5.
> 
> To trigger the issue under Plasma:
> 
> - optionally type an é or other accented character to verify things work,
> and to have the event output on the calling terminal
> - move the mouse pointer to the titlebar taking care not to lose focus,
> press the right button (or menu key on the keyboard), expand the "Move to
> Desktop" submenu, and then hit the keyboard shortcut to send the window to
> another desktop
> - without moving the mouse, use the keyboard shortcut to switch to that
> desktop.
> 
> For me, the issue is now triggered until I cycle the focus to and fro
> another app. Under Qt4, trying to enter an é will yield "´e", under Qt5 I'm
> only able to get the unaccented character.
> 
> Evidently one cannot use xev now because it'll involve a focus change. But
> the "protected" text editor window has the event tracer function from qev,
> which should help.
> 
Then my issue is different I think, because I just don't get the dead-key at 
all composed or not. With qev:

QKeyEvent(ShortcutOverride, Key_AltGr, GroupSwitchModifier)
QKeyEvent(KeyPress, Key_AltGr, GroupSwitchModifier)
QKeyEvent(ShortcutOverride, Key_Dead_Acute, GroupSwitchModifier)
QKeyEvent(KeyPress, Key_Dead_Acute, GroupSwitchModifier)
QKeyEvent(KeyRelease, Key_Dead_Acute, GroupSwitchModifier)
QKeyEvent(KeyRelease, Key_AltGr)
QKeyEvent(ShortcutOverride, Key_E, text="e")
QKeyEvent(KeyPress, Key_E, text="e")
QKeyEvent(KeyRelease, Key_E, text="e")

with xev:
KeyPress event, serial 40, synthetic NO, window 0x6a00001,
    root 0xb8, subw 0x0, time 1982840014, (78,1462), root:(2002,1488),
    state 0x0, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XKeysymToKeycode returns keycode: 92
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False
 
KeyPress event, serial 40, synthetic NO, window 0x6a00001,
    root 0xb8, subw 0x0, time 1982840550, (78,1462), root:(2002,1488),
    state 0x80, keycode 48 (keysym 0xfe51, dead_acute), same_screen YES,
    XLookupString gives 2 bytes: (c2 b4) "´"
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: True
 
KeyRelease event, serial 40, synthetic NO, window 0x6a00001,
    root 0xb8, subw 0x0, time 1982840646, (78,1462), root:(2002,1488),
    state 0x80, keycode 48 (keysym 0xfe51, dead_acute), same_screen YES,
    XLookupString gives 2 bytes: (c2 b4) "´"
    XFilterEvent returns: False
 
KeyRelease event, serial 40, synthetic NO, window 0x6a00001,
    root 0xb8, subw 0x0, time 1982840726, (78,1462), root:(2002,1488),
    state 0x80, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen 
YES,
    XKeysymToKeycode returns keycode: 92
    XLookupString gives 0 bytes:
    XFilterEvent returns: False
 
KeyPress event, serial 40, synthetic NO, window 0x6a00001,
    root 0xb8, subw 0x0, time 1982841654, (78,1462), root:(2002,1488),
    state 0x0, keycode 26 (keysym 0x65, e), same_screen YES,
    XLookupString gives 1 bytes: (65) "e"
    XmbLookupString gives 1 bytes: (65) "e"
    XFilterEvent returns: True
 
KeyPress event, serial 40, synthetic NO, window 0x6a00001,
    root 0xb8, subw 0x0, time 1982841654, (78,1462), root:(2002,1488),
    state 0x0, keycode 0 (keysym 0xe9, eacute), same_screen YES,
    XKeysymToKeycode returns keycode: 26
    XLookupString gives 0 bytes:
    XmbLookupString gives 2 bytes: (c3 a9) "é"
    XFilterEvent returns: False
 
KeyRelease event, serial 40, synthetic NO, window 0x6a00001,
    root 0xb8, subw 0x0, time 1982841742, (78,1462), root:(2002,1488),
    state 0x0, keycode 26 (keysym 0x65, e), same_screen YES,
    XLookupString gives 1 bytes: (65) "e"
    XFilterEvent returns: False



More information about the Development mailing list