Bug 539845

Summary: non-altgr level-3 choosers break level-3 in GTK+ applications
Product: [Fedora] Fedora Reporter: Paolo Bonzini <pbonzini>
Component: gtk2Assignee: Matthias Clasen <mclasen>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: 12CC: mclasen
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 2.18.3-22.fc12 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-12-02 04:28:02 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Paolo Bonzini 2009-11-21 10:36:54 UTC
Description of problem:
Level-3 keys do not work properly in GTK+ applications if you choose other level-3 choosers than altgr.  Neither dead nor non-dead AltGr combinations work, except in gnome-terminal, where only dead AltGr combinations are broken.

Dead keys instead work as long as they're not invoked by altgr (they work everywhere, even in gnome-terminal).

Everything works properly in Qt applications or other X applications.

Version-Release number of selected component (if applicable):
gtk2-2.18.3-21.fc12
xorg-x11-apps-7.3-8.fc11.x86_64.rpm
xorg-x11-drivers-7.3-11.fc11.x86_64.rpm
xorg-x11-drv-evdev-2.2.5-1.fc11.x86_64.rpm
xorg-x11-drv-fbdev-0.4.0-4.fc11.x86_64.rpm
xorg-x11-drv-intel-2.7.0-7.fc11.x86_64.rpm
xorg-x11-drv-keyboard-1.3.2-3.fc11.x86_64.rpm
xorg-x11-drv-v4l-0.2.0-2.fc11.x86_64.rpm
xorg-x11-server-Xorg-1.6.4-0.1.fc11.x86_64.rpm
xorg-x11-server-common-1.6.4-0.1.fc11.x86_64.rpm
xorg-x11-server-utils-7.4-7.1.fc11.x86_64.rpm
xorg-x11-xkb-utils-7.2-8.fc11.x86_64.rpm

How reproducible:
100%

Steps to Reproduce:
1. Open gedit.
2. setxkbmap -symbols 'pc+us(altgr-intl)+level3(lwin_switch)+level3(ralt_switch)'
3. Type altgr+e or leftwin+e in gedit, nothing happens.
4. setxkbmap -symbols 'pc+us(altgr-intl)+level3(ralt_switch)'
5. Type altgr+e or leftwin+e in gedit, you get an accented "e".

Actual results:
See steps 3/5.

Expected results:
Same behavior for both keymaps.

Additional info:
1) Here is the overall keymap computed by setxkbmap:

xkb_keymap {
	xkb_keycodes  { include "evdev+aliases(qwerty)"	};
	xkb_types     { include "complete"	};
	xkb_compat    { include "complete"	};
	xkb_symbols   { include "pc+us(altgr-intl)+level3(lwin_switch)+level3(ralt_switch)"	};
	xkb_geometry  { include "pc(pc104)"	};
};

2) If you start "xev" and type altgr+e, you see on the console

KeyPress event, serial 35, synthetic NO, window 0x4800001,
    root 0x10b, subw 0x0, time 4513667, (594,272), root:(602,345),
    state 0xc0, keycode 26 (keysym 0xe9, eacute), same_screen YES,
    XLookupString gives 2 bytes: (c3 a9) "é"
    XmbLookupString gives 2 bytes: (c3 a9) "é"
    XFilterEvent returns: False

3) Also, while I shortened the setxkbmap command lines to the minimum necessary, the same happens with the symbols chosen by the System/Preferences/Keyboard window, for example 'pc+us(altgr-intl)+inet(evdev)+level3(lwin_switch)+level3(ralt_switch)+nbsp(level3)+us:2': just removing level3(lwin_switch) will cause level-3 to work.

4) Finally, the same bug happens also with other keyboard layouts, e.g. replacing us(altgr-intl) with de(nodeadkeys).

Comment 1 Paolo Bonzini 2009-11-21 10:40:21 UTC
The output of xkbcomp is sane:

$ setxkbmap -symbols 'pc+us(altgr-intl)+level3(lwin_switch)+level3(ralt_switch)' 
$ xkbcomp -xkb :0 busted.xkb
$ setxkbmap -symbols 'pc+us(altgr-intl)+level3(ralt_switch)'
$ xkbcomp -xkb :0 correct.xkb
$ diff busted.xkb correct.xkb 
1071c1071
< xkb_symbols "pc+us(altgr-intl)+level3(lwin_switch)+level3(ralt_switch)" {
---
> xkb_symbols "pc+us(altgr-intl)+level3(ralt_switch)" {
1380,1383c1380
<     key <LWIN> {
<         type= "ONE_LEVEL",
<         symbols[Group1]= [ ISO_Level3_Shift ]
<     };
---
>     key <LWIN> {         [         Super_L ] };

Comment 2 Fedora Update System 2009-12-01 15:46:05 UTC
gtk2-2.18.4-1.fc12 has been submitted as an update for Fedora 12.
http://admin.fedoraproject.org/updates/gtk2-2.18.4-1.fc12

Comment 3 Fedora Update System 2009-12-02 04:27:53 UTC
gtk2-2.18.3-22.fc12 has been pushed to the Fedora 12 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 4 Paolo Bonzini 2009-12-03 12:45:19 UTC
confirmed fixed, thanks.